분류 전체보기 78

[Net] API 설계

요구사항API URI 설계•  회원 목록 조회• 회원 조회 • 회원 등록 • 회원 수정 • 회원 삭제•  회원 목록 조회 /read-member-list • 회원 조회 /read-member-by-id • 회원 등록 /create-member • 회원 수정 /update-member • 회원 삭제 /delete-member 단적으로 위의 설계는 틀린 방식이다.가장 중요한 것은 리소스 식별 API URI 고민URI(Uniform Resource Identier) • 리소스의 의미는 뭘까?회원을 등록하고 수정하고 조회하는게 리소스가 아니다!예) 미네랄을 캐라 -> 미네랄이 리소스회원이라는 개념 자체가 바로 리소스다. • 리소스를 어떻게 식별하는게 좋을까?회원을 등록하고 수정하고 조회하는 것을 모두 배제회원이..

[Net] Cookie / Session / Token / JWT / Filter

Cookie웹 브라우저에 저장되는 데이터서버가 클라이언트의 상태를 기억하도록 도와준다.로그인 상태 유지 등에 활용된다.보안에 취약하다.민감한 정보를 저장하지 않아야한다.사용자 임의 수정이 가능하다.Session서버에서 중요한 정보를 보관하며 로그인을 유지하는 방법SessionId를 탈취하여도 민감한 정보가 없다.만료 시간을 설정해서 탈취 문제를 최소화한다.HttpSession은 최근 Session을 요청한 시간을 기준으로 만료 시간을 유지한다.Token인증/인가 과정에서 사용되며 사용자 또는 시스템의 신원과 권한을 증명하고 요청의 유효성을 검증하는 데 사용되는 디지털 문자열Session과는 다르게 Client가 데이터(Token)를 저장하고 있다.Stateless를 기반으로 하여 확장성이 뛰어나다.Mob..

[Spring] Gradle

Gradle📌 Java와 유사한 문법 구조를 가진 Groovy기반의 스크립트 언어를 사용하며 다양한 소프트웨어를 빌드(Build)할 수 있는 유연한 빌드 자동화 도구이다. 빌드란 소스 코드를 컴퓨터가 실행 가능한 파일로 변환해주는 작업이다.  [1]  Gradle 특징유연성복잡한 빌드 시나리오를 처리할 수 있는 유연한 시스템을 제공한다.빌드 스크립트를 통해 다양한 빌드 작업을 정의하고, 필요한 경우 커스터마이징할 수 있다.성능Build Cache빌드 결과물을 캐싱하여 재사용한다.라이브러리 의존성을 캐싱하여 재사용한다.점진적 빌드마지막 빌드 호출 이후 변경된 부분만 빌드한다.변경되지 않은 부분은 캐시 결과를 검색해 재사용한다.데몬 프로세스다음 빌드 작업을 위해 백그라운드에서 대기하는 프로세스초기 빌드 이..

카테고리 없음 2024.12.11

[Spring] Spring Boot

Spring Boot📌 Spring Framework를 기반으로 하여 간편하고 신속하게 애플리케이션을 개발할 수 있도록 도와주는 도구이다.   [1]  Spring Boot의 주요 특징특징설명자동 설정 (Auto Configuration)Spring Boot는 애플리케이션의 환경을 자동으로 감지하여 적절한 설정을 자동으로 적용합니다. 이를 통해 많은 설정을 수동으로 할 필요 없이, 개발자가 설정에 대해 걱정하지 않고 애플리케이션을 시작할 수 있습니다.독립 실행형 애플리케이션Spring Boot는 내장된 서버(예: Tomcat, Jetty, Undertow 등)를 포함하여, WAR 파일 없이도 실행할 수 있는 독립 실행형 애플리케이션을 만듭니다.스타터 프로젝트 (Starter Projects)Spring..

[Spring] Container Bean IOC/DI 싱글톤 의존관계 Validation

Spring ContainerBean 관리, 의존성 주입Spring BeanSpring Container가 관리하는 Java 객체IOC/DI제어의 역전(IOC)객체 생성과 의존성 관리를 개발자가 아닌 Spring이 담당의존성 주입(DI)객체 간의 의존성을 Spring Container가 주입싱글톤 패턴Spring Bean은 기본적으로 싱글톤 패턴으로 관리되어 하나의 인스턴스만 생성상태를 가져서는 안된다.Spring Bean 등록자동 등록(권장)@ComponentScan(Spring Boot) + @Component(@Controller, @Service, @Repository)수동 등록@Configuration + @Bean의존관계 주입생성자 주입생성자 + @Autowired를 통해 의존성을 주입받는다...

카테고리 없음 2024.12.10

[Spring] Spring Framework

Spring Framework📌 Java Application Framework로 엔터프라이즈 애플리케이션 개발에 주로 사용된다. 엔터프라이즈 애플리케이션은 대규모로 복잡한 비즈니스 프로세스와 데이터를 처리하는 애플리케이션을 뜻한다.IoC (Inversion of Control), AOP (Aspect-Oriented Programming), DI (Dependency Injection) 등의 개념을 바탕으로 개발되었으며, 이를 통해 애플리케이션의 구조를 유연하고 모듈화하여 유지보수성을 높이고, 복잡한 엔터프라이즈 애플리케이션 개발을 더 간단하게 만들어 줍니다.[1]  Spring Framework 특징애플리케이션의 다양한 구성 요소를 유연하게 연결하고 관리할 수 있도록 해준다.Spring Framew..

일정표를 만들어 보자!

트러블 슈팅1. 배경드디어 웹 개발의 기초에 입문하였다.사용 기술은 spring, jsp, jdbc, mysql이다.웹 개발의 기초를 위한 일정표를 만드는 발제를 진행하였다.2. 발단처음부터 끝까지 문제가 상당히 많았다.데이터의 타입 정의는 문제가 없었다예외처리에서 예외처리가 무한으로 재귀되는 문제가 있어 확인해 보았다.매핑 형식에 대한 오류가 등장하였다.데이터 로드 형식, 범위에 대한 문제가 발생하였다.SQL문의 경우 오랜만에 사용하다보니, 조금 익숙한 감이 떨어졌다.3. 전개&위기1. Service이 파트는 단순히 클라이언트의 요청을 처리하는 파트였어서 큰 문제는 없었다.다만 지금 보니 파일이나 폴더명이 service로 되어있어야했다.2. exception위와 같이 대분의 오류를 판단하고 메시지 형태..

Project/Spring 2024.12.09

[AG&DS] 어노테이션 (Annotation)

Annotation📌 코드에 메타데이터를 추가할 수 있는 기능을 제공하며 주로 코드에 특별한 의미를 부여하거나, 컴파일러와 런타임에 특정 동작을 트리거하기 위해 사용된다. 어노테이션은 코드에서 직접적인 로직 실행에 영향을 미치지 않지만, 코드의 의미를 설명하거나 추가적인 처리를 위해 사용됩니다."명함"를 생각하면 편하다. 이 명함은 "사람"에서 "프로그래머인 사람"이 된다. 사람이라는 정체성은 그대로이지만, 이 사람의 용도를 알 수 있다. 코드의 용도를 표시하며 실제로 컴파일러도 그 의미를 알지만 프로그램(사람) 자체에는 변화가 없다.[1]  어노테이션 정의어노테이션은 @ 기호로 시작하며, 클래스, 메서드, 변수, 매개변수, 패키지 등에 추가할 수 있다.[2]  내장 어노테이션@Override메서드가 ..

[AG&DS] 프레임워크와 라이브러리

Framework📌 프레임워크는 특정 프로그래밍 작업을 수행하기 위한 기반 구조를 제공하는 도구입니다. 예를 들어, 웹 애플리케이션 개발을 위한 Spring이나 Django와 같은 프레임워크는 애플리케이션 아키텍처와 구조를 정의하고, 개발자가 해당 구조 내에서 작업할 수 있도록 도와줍니다. 프레임워크는 frame(틀) work(일하다)의 합성어로 일하기 위한 틀을 제공한다. 개발자는 해당 틀에서 일을 해야 한다.라이브러리가 도화지라면 프레임워크는 채색북과 같다. 둘다 그림을 완성시키는 도구이지만, 도화지는 완전히 자유로운 디자인을 할 수 있고 채색북은 자유롭지는 못하지만 편하게 그림을 완성시킬 수 있다. [1] 프레임워크의 주요 특징:구조 제공: 프레임워크는 애플리케이션 개발의 기본 뼈대를 제공합니다...

[Net] 네트워크 기본 요약

꼭 기억하기네트워크 통신은 HTTP로 이루어진다.HTTP는 무상태 프로토콜이며 비연결성 특징을 가지고 있다.HTTP Message 구조HTTP Method상태코드HTTP HeaderHTTP API는 Restful 하게 설계해야 한다. 최소 성숙도레벨 2를 지켜야 한다.Servlet은 Java에서 Request, Response를 쉽게 다루게 해주는 객체이다.Servlet Container는 Servlet 객체를 싱글톤으로 관리한다.WAS는 다중 요청 처리를 위해 Multi Thread를 지원한다.SSR 방식은 서버에서 동적인 페이지를 완성하여 응답한것을 브라우저에서 화면을 출력한다.CSR은 HTTP API 통신으로 얻은 결과를 통해 브라우저에서 동적으로 화면을 출력한다. [1] 네트워크 기본 개념Pack..