개발공부/Spring

[spring] 어노테이션을 이용할 때의 장점과 @Autowired를 이용한 DI

환타몬 2022. 1. 24. 17:55

1. annotation이란?

코드 파일 내부에 코드 설정을 심는데, 코드 파일에다가 설정을 심을 때 사용되는 설정 정보를 어노테이션이라고 함.

어노테이션에는 @Autowired를 포함한 다양한 어노테이션이 존재한다.

@Autowired는 Dependency Injection 설정을 대신하는 어노테이션 설정이다.

 

2. annotation을 사용했을 때의 장점?

xml로 설정할 때의 모듈 변경 방법.

만약 B라는 인터페이스를 사용하고 있는 S라는 녀석이 있고, B를 구성하는 B2객체가 있을 때, xml파일을 조금만 변경하면 소스 코드를 변경하지 않고 B2 객체를 B3바꿀 수 있기 때문에 이것만으로도 좋았음.

 

하지만 그냥 B3 내부에 annotation만 해준다면 xml파일을 열고, 수정할 필요 없이 그 자체로 설정이 바뀌게 되는 것이기 때문에 깔끔하게 업데이트가 됨.

 

 

2. 어노테이션 사용

 1) exam 클래스를 참조하는 <property name ="exam" ref = "exam" /> 를 주석처리 한다.

 2) 실행하게되면 nullPointer errer가 발생하게 되는데, 이것은 ExamInlineConsole 클래스에서 exam이라는 객체를 불러와야 하는데 그것을 찾을 수 없기 때문에 나오게 되는 에러.

 3) ExamInlineConsole 클래스파일로 들어가서 해당 객체를 불러오는 setter위에 @Autowired를 적으면, xml파일에서 매치되는 녀석을 찾아온다.

 4) 바로 되는 것은 아니고 xml파일의 namespaces에서 context를 불러온다.

 5) 그리고 상단에 <context:annotation-config />를 적어주면 적상작동 되는 것을 확인할 수 있다.