TIL 2021.10.05(화) 어노테이션 정리 2

개발중·2021년 10월 5일
0

Spring

목록 보기
5/11

@Component

직접 작성한 class를 bean으로 등록하기 위한 어노테이션

@Bean

ArrayList 같은 라이브러리 등을 Bean으로 등록하기 위해 사용하는 어노테이션

해당 라이브러리 객체를 반환하는 메소드를 만들고 위에 @Bean을 사용한다

bean 뒤에 이름을 정해 주지 않으면 해당 메소드의 이름이 camelCase로 변경해서 등록된다

@Autowired

<context:annotation-config/> 필요

스프링 기반이라 Inject보다 범위가 좁다

속성, setter, 생성자에서 사용하며 타입에 따라 자동으로 Bean을 주입한다 Controller에서 DAO나 Service 객체들을 주입할 때 사용한다

속성, setter, 생성자 파라미터가 여러 개인 메소드는 @Qualifier를 사용하여야 한다

위치 : 멤버 변수, setter 메서드, 생성자, 일반 메서드

@Inject

@Autowired와 동일하게 동작하지만 찾는 순서가 다르다
java 기반이라 범위가 더 넓다

위치 : 멤버 변수, setter 메서드, 생성자, 일반 메서드

@Resource

<context:annotation-config/> 필요

name 속성을 기준으로 찾게 된다 name 속성이 없으면 타입으로 넘어간다

bean id 값이 name이 된다

위치 : 멤버 변수, setter 메서드

@Qualifier

타입이 동일한 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;
	}

파라미터 안에 넣는 식으로도 사용이 가능하다

@Required

필수 프로퍼티를 명시할 때 사용한다 필수 프로퍼티가 없을 경우 BeanInitializationException 오류를 발생한다

메서드에서만 사용이 가능하고, 선언부에서는 사용이 불가능하다

또한 @Required와 property의 갯수는 프로퍼티가 더 많거나 같아야 한다

@Repository(외부I/O처리), @Service(로직 처리)

@Controller와 마찬가지로 해당 클래스를 루트 컨테이너에 Bean 객체로 생성해 주는 어노테이션이다

@RequestMapping

요청 URL을 어떤 메서드가 처리할 것인지 매핑해 주는 어노테이션이다
@GetMapping, @PostMapping도 있는데 RequestMapping은 form의 method에 무관하게 알아서 넘어 온 형식대로 처리해 준다

참고한 사이트 : https://codevang.tistory.com/258
https://velog.io/@dnjscksdn98/Spring-Spring-Boot-어노테이션-정리

profile
공부한 것 정리하는 개발 입문자

0개의 댓글