새벽코딩

[SpringBoot] annotations 정리(memo) 본문

Spring/Spring Boot

[SpringBoot] annotations 정리(memo)

J 코딩 2021. 10. 17. 12:39
반응형

I will memo about 'SpringBoot' annotations..

 

I used to use annotation without thinking about it, but I felt the need to organize it.

 

1. @Bean

 

first thing is about '@Bean'

 

@Bean은 메소드 레벨에서 사용하는 어노테이션으로, 스프링 컨테이너에 의해서 관리되어지는 bean을 만든다.

또한, XML코드에서 사용하는 <bean>태그를 대체할 수 있다.

 

example:

 

@Bean
public BeanTest beanTest(){

	return new beanTest();
}

 

 

 

2. @Service

 

@Service는 클래스 레벨에서 사용하는 어노테이션으로, 주로 서비스 클래스를 명시해주는 용도로 사용하며, 또한 business basic logic과 외부 APIs호출과 관련이 있다.

 

example:

 

@Service
public class serviceTest(){

	return null;
}

 

 

 

3. @Repository

 

@Repository는 데이터베이스에 직접적으로 접근하는 Data Access Object이다. 이건 Repository클래스라는 것을 명시해준다.

 

example:

 

@Repository
public class repositoryTestImpl(){
	
    Add();
    Select();
    Delete();
    return null;
}

 

 

 

4. @Configuration

 

@Configuration은 bean을 정의하기위해 사용한다.

 

 

 

5. @Controller

 

@Controller은 웹 요청 핸들러 클래스를 가리키기 위해서 사용된다. 이 어노테이션에서는 주로  @RequestMapping 어노테이션을 사용한다.

 

 

 

6. @RequestMapping

 

@RequestMapping은 HTTP 요청 맵을 사용한다. 이 어노테이션은 클래스 뿐만 아니라 메소드에서도 사용되어진다. 이 것은 다양한 선택요소들을 사용하며, 예를 들면 consumes, name, method, request, path, etc.

 

 

 

7. @Autowired

 

@Autowired어노테이션은 auto-wire spring bean을 사용한다. 이것은 명시적으로 개체 종속성을 주입한다. 이 주석을 사용할 때 스프링 컨테이너는 일치하는 데이터 유형으로 bean을 자동 연결한다.

 

example:

 

@Component
public class Book
private Fantasy fantasy;
@Autowired
public Book(Fantasy fantasy){
	this.fantasy = fantasy
}

 

 

 

8. @Component

 

@Component어노테이션은 자동스캔을 할때에 자바 클래스를 자바 스프링 빈으로 변환해준다. 또한 클래스 수준의 어노테이션이다.

 

example:

 

@Component
public class Book{

}

 

 

 

9. @SpringBootApplication

 

@Configuration, @ComponentScan, @EnabeAutoConfiguration으로 구성되어있다. @SpringBootApplication으로 주석이 달린 클래스는 기본 패키지에 보관되고, 이 주석은 구성 요소 스캔을 수행한다. 그러나 하위 패키지만 스캔된다.

 

사실, 위의 빨간 부분이 나에게 삽질을 하도록 하였기 때문에 매우 중요하다고 생각한다.. 정확한 실행을 위해서는 SpringBootApplication어노테이션의 하위 패키지에 소스를 입력하여 스캔을 돌려주어야 올바르게 프로그램이 실행된다.

 

 

 

10. @EnableAutoConfiguration

 

이 어노테이션은 보통 클래스에 사용된다. 클래스 경로 설정, 기타 bean 및 다양한 속성 설정을 기반으로 이 주석은 SpringBoot가 bean 추가를 시작하도록 지시한다.

 

 

 

11. @ComponentScan

 

@ComponentScan은 bean 패키지를 스캔하는 데 사용된다. Spring이 주석이 달린 구성 요소를 검색할 패키지를 알 수 있도록 @Configuration 주석과 함께 사용되고, 이 주석은 기본 패키지를 지정하는 데에도 사용된다.

 

example:

 

@ComponentScan(basePackages = “com.xyz”)

@Configuration

Public class ScanComponent

{

}

 

 

 

12. @Required

 

이 어노테이션은 Bean setter 메소드에 적용된다. 영향을 받는 빈에서 구성 시간에 필수 속성을 채워야 함을 나타내고, 그렇지 않으면 BeanInitializationException 예외가 발생하게 된다..

 

 

 

13. @Qualifier

 

@Autowired 주석과 함께 사용되는 어노테이션이다. 종속성 주입 프로세스에 대해 더 많은 제어가 필요할 때 사용됩니다. 이 주석을 사용하여 개별 생성자 인수 또는 메서드 매개변수를 지정할 수 있습니다. 동일한 유형의 빈이 두 개 이상 생성되고 그 중 하나만 속성과 연결되어야 하는 경우 혼동이 발생한다. 이때에는 @Qualifier를 사용하여 혼동을 제거해야한다.

 

 

 

14. @CookieValue

 

CookieValue 어노테이션은 Request Mapping 메서드에서 사용되며, method매개변수 바인딩을 위해서 사용될 수 있다. 만약 HTTP 매핑이 요청되면 @CookieValue어노테이션이 있는 부분에 연결된다.

 

[어노테이션 정리 끝]

 

Spring Boot Annotations Everyone Should Know [2021]
반응형
Comments