Spring boot annotation 정리
@Controller
@RestController
- @controller + @responsebody
- 컨트롤러 내 모든 메소드에 @responsebody 를 적용하는 역할
@Service
@Repository
@Bean
- 개발자가 직접 제어가 불가능한 외부 라이브러리 등을 Bean으로 만들 때 사용. ArrayList, RestTemplate 등
- @Bean에 아무런 값을 지정하지 않는다면 Method 이름을 camelCase로 변경한 것이 Bean id로 등록된다. method 이름이 arrayList()인 경우 arrayList가 Bean id
- @Bean에 name이라는 값을 이용하면 자신이 원하는 id로 Bean을 등록할 수 있다. @Bean(name="myarray")
@Configuration
- 이 어노테이션을 클래스에 적용하고 @Bean을 해당 Class의 method에 적용하면 @Autowired로 Bean을 부를 수 있다.
@EnableAutoConfiguration
- Spring Application Context를 만들 때 자동으로 설정하는 기능을 켠다. classpath의 내용에 기반해서 자동으로 생성해준다. 만약 tomcat-embed-core.jar가 존재하면 톰캣 서버가 setting된다.
@Component
- @Component 은 개발자가 직접 작성한 Class를 Bean으로 등록하기 위한 Annotation이다.
- @Bean과 다르게 @Component는 name이 아닌 value를 이용해 Bean의 이름을 지정한다. @Component(value="mystudent")
- Component에 대한 추가 정보가 없다면 Class의 이름을 camelCase로 변경한 것이 Bean id로 사용된다.
@ComponentScan
- @Component와 @Service, @Repository, @Controller, @Configuration이 붙은 클래스 Bean들을 찾아서 Context에 bean등록을 해주는 Annotation이다.
- @Component Annotation이 있는 클래스에 대하여 bean 인스턴스를 생성
- 자동으로 등록되는 Bean의 이름은 클래스의 첫문자가 소문자로 바뀐 이름이 자동적용된다. HomeController -> homeController
@SpringBootApplication
- @Configuration, @EnableAutoConfiguration, @ComponentScan 3가지를 하나의 애노테이션으로 합친 것. 게임 시작프로그램 느낌..?
@EnableEurekaServer
@EnableDiscoveryClient
- Eureka 서버에서 관리될 수 있는 클라이언트 임을 알려주기위한 Annotation
@LoadBalanced
- 로드밸런스 어노테이션을 통해 resttemplate에 ribbon을 적용할 수 있다.
@Value
- @Value("${server.port}")
private String portnum;
- .properties 의 설정 값을 클래스로 가져와 코드에 사용할 수 있다.