직접 작성한 class를 bean으로 등록하기 위한 어노테이션
ArrayList 같은 라이브러리 등을 Bean으로 등록하기 위해 사용하는 어노테이션
해당 라이브러리 객체를 반환하는 메소드를 만들고 위에 @Bean을 사용한다
bean 뒤에 이름을 정해 주지 않으면 해당 메소드의 이름이 camelCase로 변경해서 등록된다
<context:annotation-config/> 필요
스프링 기반이라 Inject보다 범위가 좁다
속성, setter, 생성자에서 사용하며 타입에 따라 자동으로 Bean을 주입한다 Controller에서 DAO나 Service 객체들을 주입할 때 사용한다
속성, setter, 생성자 파라미터가 여러 개인 메소드는 @Qualifier를 사용하여야 한다
위치 : 멤버 변수, setter 메서드, 생성자, 일반 메서드
@Autowired와 동일하게 동작하지만 찾는 순서가 다르다
java 기반이라 범위가 더 넓다
위치 : 멤버 변수, setter 메서드, 생성자, 일반 메서드
<context:annotation-config/> 필요
name 속성을 기준으로 찾게 된다 name 속성이 없으면 타입으로 넘어간다
bean id 값이 name이 된다
위치 : 멤버 변수, setter 메서드
타입이 동일한 Bean 객체가 여러 개 있으면 에러가 나는데 어떤 Bean을 주입해 주어야 하는지 알 수 없기에 id를 지정해 주는 것이다
<bean id="action1" class="sist.com.di.basic5.ActionMessage" p:message="hi" p:count="50">
<qualifier value="q1"></qualifier>
</bean> <!-- p 태그를 통해 해당 클래스에 값을 넣어 줌 set 메소드가 있어야 가능함 -->
<bean id="action2" class="sist.com.di.basic5.ActionMessage" p:message="h2" p:count="200">
<qualifier value="q2"></qualifier>
</bean>
</beans>
xml 파일에서 bean을 작성할 때 추가로 Qualifier 코드를 넣어 주고,
@Inject
@Qualifier(value="q2")
가져올 qualifier의 값을 넣어 준다
public void setAm(@Qualifier(value="q1") ActionMessage am) {
System.out.println("setam");
this.am = am;
}
파라미터 안에 넣는 식으로도 사용이 가능하다
필수 프로퍼티를 명시할 때 사용한다 필수 프로퍼티가 없을 경우 BeanInitializationException 오류를 발생한다
메서드에서만 사용이 가능하고, 선언부에서는 사용이 불가능하다
또한 @Required와 property의 갯수는 프로퍼티가 더 많거나 같아야 한다
@Controller와 마찬가지로 해당 클래스를 루트 컨테이너에 Bean 객체로 생성해 주는 어노테이션이다
요청 URL을 어떤 메서드가 처리할 것인지 매핑해 주는 어노테이션이다
@GetMapping, @PostMapping도 있는데 RequestMapping은 form의 method에 무관하게 알아서 넘어 온 형식대로 처리해 준다
참고한 사이트 : https://codevang.tistory.com/258
https://velog.io/@dnjscksdn98/Spring-Spring-Boot-어노테이션-정리