프로젝트를 하면서 든 생각
이 어노테이션을 내가 정말 이해하고 쓰고 있는게 맞는 걸까 ? 였다.
그래서 생각나는 어노테이션을 모두 한번 정리해보려고 한다.
@Value
프로퍼티값을 주입하는 어노테이션
외부 설정 파일(properties 또는 yaml)에서 값을 가져와 Bean에주입한다
@Value 어노테이션을 필드나 메서드 파라미터에 적용하여 값을 주입받을 변수에 붙혀 사용한다
주의할 점은 프로퍼티 값에 대한 기본값 또는 예외 처리를 고려해야한다
@Inject, @Autowired
Bean을 자동으로 주입 하기 위해 사용함 / 의존동 자동 주입
스프링 컨테이너가 해당 타입의 빈을 찾아 스프링 시작 시 자동으로 주입한다
해당 어노테이션을 필드,생성자,메서드에 적용하여 의존성 주입을 표시한다
@Inject, @Autowired 출처와 스코프
inject 출처는 자바의 표준 어노테이션이다, 스프링이 아닌 자바EE 표준에서 정의한 어노테이션이라 스프링과 함께 사용할 수 있다
Autowired는 스프링프레임워크 자체에서 제공하는 어노테이션으로 스프링 전용 어노테이션이다, 스프링 컨테이너에서만 동작한다
Inject는 스프링 뿐만 아니라 다른 자바EE 호환 컨테이너에서도 사용할 수 있고 어플리케이션이 다양한 환경에서 동작할때 유용하다
Autowired는 스프링에 종속적이며 스프링 애플리케이션에서만 사용할 수 있다
@Inject, @Autowired 기능적인 차이
기능적으로는 유사하다
다만 Autowired는 추가적인 기능을 제공하는데 예를 들어 @Qualifier 어노테이션을 함께 사용하여 여러 빈 중에서 특정 빈을 선택하는 기능을 지원한다
@ReponseBody
SpringMVC에서 컨트롤러 메서드의 HTTP응답 본문을 생성하기 위해 사용함
컨트롤러 메서드가 JSON 또는 XML형식 응답 데이터를 생성하는데 이용함
@ResponseBody 어노테이션을 적용하여 해당 메서드가 HTTP 응답 본문을 생성하도록 표시
주로 RESTful API에서 응답 데이터를 생성할 때 사용되며, 메서드 반환 타입은 객체 형태여야 한다
@RequestMapping
컨트롤러 메서드에 URL 매핑을 정의할 때 사용함
요청 경로와 컨트롤러 메서드를 매핑하여 요청을 처리할 컨트롤러 메서드를 지정한다
URL 패턴, HTTP 메서드, 파라미터 등을 지정할 수 있으며, 요청을 어떻게 처리할지 정의한다.
@CrossOrigin
Spring에서 CORS (Cross-Origin Resource Sharing) 정책을 허용하기 위해 사용함
(CORS에 대한 내용은 옵시디언에 정리한게 있어 추후 업데이트 하겠음)
어노테이션을 컨트롤러 클래스나 메서드에 적용하여 CORS 정책을 설정하면 됨
보안상의 이유로 필요한 경우에만 사용하고, 필요한 도메인 및 HTTP 메서드를 설정해야 한다
@Controller, @Service , @Repository
Spring의 빈(Bean)을 정의하고 식별하기 위해 사용된다
@Controller는 웹 컨트롤러 클래스, @Service는 비즈니스 로직 클래스, @Repository는 데이터 액세스 클래스를 정의한다
각 어노테이션을 클래스 위에 붙여 해당 클래스를 스프링 빈으로 등록한다
스프링프레임워크가 시작할 때 스프링 컨테이너에서 관리하는 대상이다
@Configuration
스프링 설정 클래스를 정의하기 위해 사용 한다
어노테이션이 붙은 클래스는 스프링 애플리케이션의 설정을 구성하고 빈을 정의한다
설정 클래스에서 빈을 정의한 다음 다른 설정을 또 구성할 수 있다
@EnbleWebMvc
스프링 MVC를 활성화하기 위해 사용됩니다.
설정 클래스에서 `@EnableWebMvc` 어노테이션을 사용하여 스프링 MVC를 활성화한다
스프링 MVC를 사용할 때 필요한 설정을 활성화하며, 일반적으로 웹 애플리케이션에서 사용된다
@Getter, @Setter
Lombok 에서 제공하며 Getter, Setter메서드를 자동으로 생성하기 위해 사용된다
자동으로 Getter와 Setter 메서드를 생성하여 코드 중복을 줄이는 목적으로 사용한다
Lombok 라이브러리를 프로젝트에 추가해야한다
❤ 김춘장이의 위키백과 - 나만의 공부 기록 Tistory ❤
'👀 Side Project > Eᴍʙᴀᴅ (23.12~24.01)' 카테고리의 다른 글
프로젝트를 하면서 공부한 응답헤더 / 그대는 301번과 302번의 차이를 아는가 ? / 공부할때 디테일을 살려서 공부해야 한다 (1) | 2024.02.07 |
---|---|
응급구조사편_의료서비스 검색화면 및 로직2 (0) | 2024.01.31 |
응급구조사편_의료서비스 검색화면 및 로직1 (0) | 2024.01.31 |
이메일 발송 동작 구현 및 테스트 (2) | 2024.01.31 |
디자인, 이게 최선이였냐?! , 불호령 떨어진 디자인 개편 (1) | 2024.01.28 |