1. _core 패키지 만들기
- 전역적으로 설정할 수 있는 설정 파일들의 모임
- config
- util : utility한 함수를 만들어 재사용할 예정
폴더 구조를 위해 미리 만들어둔 것
2. config에 SecurityConfig class 만들기
- F의 web.xml 파일의 역할처럼 SF의 일하는 명령 파일
- SecurityFilterChain으로 SecurityConfig() 만들기
보안을 위한 필터들이 체인으로 여러 개가 묶여있음(실행 순서 등이 있음)
FilterChain을 수정해서 리턴해서 돌려줄 것임
3. IoC할 수 있는 어노테이션 → 메모리에 띄움
IoC에 있는 것을 가지고 올때 타입으로 가져옴
- @Controller
웹 애플리케이션의 컨트롤러 역할을 하는 클래스에 사용
HTTP 요청을 처리하고 적절한 응답을 생성합니다.
- @RestController
RESTful 웹 서비스의 컨트롤러 역할을 하는 클래스에 사용
메소드의 반환 값이 JSON, XML과 같은 포맷으로 직렬화되어 HTTP 응답으로 반환
- @Repository
DB와 상호 작용하는 클래스에 사용
주로 데이터 접근 객체(DAO)를 정의할 때 사용
데이터의 조회, 저장, 수정, 삭제 등의 기능을 수행
- @Configuration / 메타 어노테이션
애플리케이션의 설정을 정의하는 클래스에 사용
보통은 XML 대신 자바 기반의 설정 클래스로 사용
빈(bean) 객체를 정의하고 의존성 주입을 설정 / Component가 있어 IoC에 뜸
- @Service
비즈니스 로직을 담당하는 서비스 클래스에 사용
주로 컨트롤러에서 요청을 받아 처리하는데 사용
트랜잭션과 같은 핵심 비즈니스 로직을 구현
- @Component
스프링 컨테이너에 의해 관리되는 빈 객체를 정의하는 데 사용
다른 어노테이션들의 부모 역할을 하는 메타 어노테이션
@Controller, @Service, @Repository 등은 모두 @Component의 특수한 형태
- 메타 어노테이션
다른 어노테이션을 구성하는데 사용
여러 개의 어노테이션을 묶어 하나의 새로운 어노테이션을 만들 수 있음
만든 어노테이션도 재사용 가능
4. @Bean
- 컴포넌트 스캔하고 특정 메서드에 @Bean을 하면 IoC에 등록됨
- jars 파일에는 .class 파일만 있음 → 우리가 수정을 못함
라이브러리는 jars파일 / 컴파일 된 class만 가져가서 사용하는 것
다른 사람이 만든 클래스를 메모리에 띄울 때 : 직접 new하기, IoC를 위해 어노테이션 못 붙임
- 컴포넌트(Component) 어노테이션 사용 시점
주로 개발자가 작성한 클래스를 스프링 애플리케이션 컨텍스트에 등록하기 위해 사용
주로 일반적인 서비스 클래스, 레포지토리 클래스, 컨트롤러 클래스 등을 등록할 때 사용
컴포넌트 스캔을 통해 해당 패키지나 클래스를 자동으로 탐지하여 빈으로 등록
- 빈(Bean) 어노테이션 사용 시점
주로 설정 클래스에서 개발자가 직접 빈을 생성하고 등록해야 할 때 사용
외부 라이브러리나 외부 자원을 생성하여 빈으로 등록할 때 사용
특정 빈의 생성 방법이나 설정을 세부적으로 제어해야 할 때 사용
⇒ 스프링이 시작될 때 실행시키는 것 / IoC에 띄움
- 스토리지 패턴(Storage Pattern) : 추상적인 것에 의존
각 시스템에서 실제 데이터를 저장하고 관리하는 방법을 독립적으로 정의할 수 있음
- 의존성 주입 = 컴포지션
팀장님이 인터페이스를 만들어주면 다른 것이 구현되지 않아도 테스트 해볼 수 있음
다른 것이 구현된 후 의존성 주입만 해주면 코드 수정 없이 구현 가능함
설계하는 사람이 인터페이스를 만들기에 우리는 사용할 수 만 있으면 됨
인터페이스로 데이터 타입과 메서드 명을 픽스해줘야 함
Share article