어노테이션은 이름만 봐도 얼추 기능에 대한 설명이 유추된다지만
그렇지 않은 어노테이션도 있고..해서 Spring Boot 스터디를 하게 된 김에
어노테이션도 정리해본다 :)
SpringBoot에서 사용하는 어노테이션의 정의 정리~ ㄱㄱ
* 오타 많음 주의..ㅎ
@RestController
@Controller + @ResponseBody 를 합친 어노테이션으로 메소드의 반환 결과를 JSON 형태로 반환한다.
[@Controller와 @RestController의 차이]
@Controller - api와 view를 동시에 사용하는 경우에 사용. View return이 주 목적
@RestController - view가 필요없는 api만 지원하는 서비스에서 사용(Spring 4.0.1부터 제공)
@RequestMapping
요청 url을 어떤 메서드가 처리할 것인지 매핑해주는 어노테이션
라우팅정보를 제공하며 선언한 경로의 값에 따라 HTTP 요청이 해당 메서드에 매핑되어야 하는 것을 스프링에 알림.
@PutMapping
수정할 때 사용
@Bean
객체를 의미. Spring container에 bean을 등록하도록 하는 어노테이션
[@bean과 @component 차이점]
@bean : 개발자가 직접 제어 불가능한 외부 라이브러리등을 만들 떄 사용
@component : 개발자가 직접 작성한 class를 bean으로 등록하기 위해 사용
@GetMapping
@RequestMapping(Method=RequestMethod.GET)과 같음. Http head에 담아 보내기 때문에 용량제한있음
@PostMapping
등록할 때 사용. Http body에 담아 보냄
@Autowired
의존성을 주입해서 자동으로 객체를 생성해주며 메소드 위에 사용할 경우 기본생성자를 만들어 줌
의존성 주입시 주입하고자 하는 객체의 타입이 일치하는지 먼저 검사한 후, 객체를 자동으로 주입함.
@Log4j2
로깅 프레임워크 제공
해당 어노테이션을 클래스에 선언하게 되면 다음과 같은 변수가 내부적으로 생성되며
실제 선언되어 있지 않아도 log변수의 메소드에 접근할 수 있다.
Private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
@WebFilter
filter를 등록하고 설정하는 어노테이션. 태그를 통해 사용하던 설정 모두를 지원.
@Override
상위클래스에서 오버라이드한 메소드라는 것을 설명해주는 어노테이션. @override를 상위클래스에 정의되지 않은
메소드에 쓰는 경우 컴파일 에러가 나기 때분에 혹시나 발생할 수 있는 에러소지를 예방해주는 역할을 함.
@Getter
클래스 내 모든 필드의 getter 메소드를 자동으로 생성.
Lombok라이브러리에 의해 getter 메소드를 지원함.
@Setter
클래스 내 모든 필드의 setter 메소드를 자동으로 생성.
Lombok라이브러리에 의해 setter 메소드를 지원함.
@Component
Spring이 관리하는 모든 component에 대한 기본 스테레오타입. Class를 bean으로 등록
@Configuration
@Bean을 해당 클래스의 메소드에 적용하면 @Autowired로 빈을 부를 수 있다.
@MapperScan
mapper.xml 파일들이 바라볼 기본 패키지 위치를 지정해주는 어노테이션
mapper 인터페이스를 자동으로 스캐닝하고 등록.
@EnableTransactionManagement
Java Config를 위한 어노테이션 중 하나.
어노테이션 기반으로 트랜잭션을 활성화함.
@ConfigurationProperties
yaml파일을 읽는다. Default로 스프링부트 설정파일인 classpath:application.properties파일이 조회된다.
속성 클래스를 따로 만들어두고 그 위에 prefix="xx" 써서 접두사를 사용할 수도 있음 ex) xx.host=192.348~
@EnableWebMvc
환경설정 파일에서 사용. Spring에서는 내부적으로 환경설정 클래스로 등록해서 spring mvc 환경을 구성하게 됨.
@Controller
컨트롤러 객체임을 명시. Classpath 스캔을 통해 자동으로 감지된다.
@Service
서비스 객체임을 명시. Classpath스캔을 통해 자동으로 감지됨.
@Mapper
mybatis 어노테이션으로 interface클래스를 통해 sql을 컨트롤 할 수 있음.
@Value
properties에서 값을 가져와 적용할 떄 사용
@Resource
@Autowired와 마찬가지로 빈 객체 주입을 해주는데 차이점은 autowired는 타입으로, resource는 이름으로 연결해준다.
@Transactional
데이터베이스 트랜잭션을 해당 메서드에 적용.
= DB에 엑세스하는 여러 연산을 하나의 트랜잭션으로 처리하여 오류가 발생한 경우 롤백을 도와주는 것
@Transaction(timeout=10) 은 10초내에 해당 로직이 수행되지 못하면 롤백하라는 의미
@SpringBootApplication
@Configuration,@EnableAutoConfiguration,@ComponentScan 3가지를 하나의 annotaion으로 합친 것.
스프링 부트의 핵심 어노테이션으로 메인클래스에 사용한다.
@Configuration
해당 클래스가 설정 파일임을 스프링프레임워크에서 알려주는 용도. 자바기반의 설정을 선언할 수 있음
@EnableAutoConfiguration
스프링부트의 장점은 자동구성인데 해당 어노테이션을 활성화하면 스프링의 다양한 설정이 자동으로 완료됨
@ComponentScan
자동으로 컴포넌트 클래스를 검색하고 검색된 컴포턴트 및 빈클래스를 스프링 어프링케이션컨텍스트에 등록하는 역할을 함
메인 클래스가 위치한 루트패키지부터 이하 모든 클래스를 검색하여 bean으로 등록함
@ServletComponentScan
서블릿컴포넌트(필터,서블릿,리스너)를 스캔 및 등록하며 이 과정은 내장 웹서버를 사용하는 경우에만 동작.
필터 = @WebFilter 서블릿=@WebServlet 리스너=@WebListener
@Before
어드바이스 타겟 메소드가 호출되기 전에 어드바이스 기능을 수행
@ControllerAdvice
전역 예외 핸들러로 사용되며 @ExceptionHandler와 같이 사용됨
@ExceptionHandler
@ControllerAdvice와 함께 사용되며 처리하고자 하는 예외클래스를 적용
@Qualifier
기본적으로 @Autowired와 같이 의존성 주입을 위해 사용하나 동일한 타입을 가진 Bean객체가 두개 이상인 경우 사용
@ResponseStatus
요청 클라이언트에게 전달할 응답상태코드값을 지정하며 기본값은 200 ok 응답코드가 반환된다.
@RestControllerAdvice
@ControllerAdvice의 기능에 body값을 전달할 수 있게 해주는 어노테이션
'Framework > Spring' 카테고리의 다른 글
Spring(Mybatis) 게시판 이전글 다음글 가져오기 구현방법 및 쿼리 (0) | 2019.01.23 |
---|---|
No converter found for return value of type: class java.util.HashMap 에러 해결방법 (0) | 2019.01.22 |
spring log4j 설정방법 (WARN Please initialize the log4j system properly) (0) | 2018.12.12 |
BeanCreationException 에러 해결방법 (0) | 2018.12.12 |
No mapping found for HTTP request with URI in DispatcherServlet with name 에러 해결방법 (0) | 2017.05.30 |