[Spring] 스프링 어노테이션

Ash·2021년 1월 16일
1
post-thumbnail
post-custom-banner

@ Annotation?

- 프로그램에게 추가적인 정보를 제공해주는 역할
- 속성을 어떤 용도로 사용할지, 클래스에게 어떤 역할을 부여할 지를 결정한다.

Spring Annotation 종류

@Configuration 클래스를 Bean으로 등록할 때 사용
@EnableAutoConfiguration meta 파일을 읽어 미리 정의되어있는 자바 설정 파일(@Configuration)을 Bean으로 등록해준다.
@ComponentScan @Component를 가진 클래스를 스캔하여 Bean으로 등록해준다.
@SpringBootApplication @Configuration + @EnableAutoConfiguration + @ComponentScan
스프링부트가 Bean을 등록하는 방식: @ComponentScan으로 Bean 등록 후 @EnableAutoConfiguration으로 추가적인 Bean을 등록함.
@Bean @Configuration + @Bean으로 직접 Bean을 정의할 때 사용한다. Spring Container 가 관리하는 자바 객체를 의미
@Component 클래스를 Bean으로 등록할 때 사용
@ConfigurationProperties yml, properties 파일을 읽어오는 어노테이션
@Autowired @Bean을 주입해주는 어노테이션
@Resource와 유사함. @Autowired는 타입으로 연결
@Resource @Bean을 주입해주는 어노테이션
@Autowired와 유사함. @Resource는 이름으로 연결
@Controller Controller 역할을 하는 class임을 의미
@RestController 반환 결과가 JSON형태인 @Controller @Controller + @ResponseBody
@RequestMapping URL을 Controller의 메소드와 맵핑할 때 사용한다. 즉, 요청 url을 어떤 method가 처리할지 여부를 결정하는 어노테이션
@RequestMapping(value=[], method="", params=[], consumes=[], produces=[])
@GetMapping @RequestMapping(method = RequestMethod.GET)
@PostMapping @RequestMapping(method = RequestMethod.POST)
@PutMapping @RequestMapping(method = RequestMethod.PUT)
@DeleteMapping @RequestMapping(method = RequestMethod.DELETE)
@ResponseBody HttpMessageConverter를 이용하여 JSON 혹은 xml 형태로 요청에 응답한다.(viewResolver를 무시하여 view가 아닌 값을 응답할 때 사용된다.)
객체 return 시 JACKSON 에 의해 문자열로 변환되어 전송
@Service Service 역할을 하는 class임을 의미
* Service 역할 : 비지니스 로직을 수행
@Repository DAO class에서 사용
*DAO : DB에 접근하는 메소드를 가진 class

어노테이션 비교

@Component VS @Configuration

@Component @Configuration
class를 Bean으로 등록해주는 어노테이션
@Component가 하위 개념
사용자가 직접 작성한 클래스를 Bean으로 등록할 때 사용한다. 외부 라이브러리/내장 클래스와 같이 사용자가 제어 불가한 클래스를 Bean으로 등록할 때 사용한다.
@Configuration + @Bean 조합으로 등록하여 사용한다.

@Controller VS @RestController

@Controller @RestController
API + View 를 동시에 지원하는 서비스에 사용한다.
profile
기록남기기👩‍💻
post-custom-banner

0개의 댓글