코딩 공부/Spring

스프링 공부 - @ 어노테이션

유미._. 2023. 4. 12. 14:22
728x90

 

 

@ 어노테이션 이란?

 

- 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종이다. 자바 어노테이션은 클래스 파일에 임베디드 되어 컴파일러에 의해 생성된 후 자바 가상머신에 포함되어 작동한다.


----- Lombok 관련 -----
@Data : lombok의 getter, setter, tostring을 자동 생성 한다.
@Log4j : Lombok을 이용해서 로그를 기록하는 Logger를 변수로 생성한다. 
@Setter : setter 메서드를 만들어주는 역할을 한다. 


----- Spring 관련 -----
@Component :  그 외에 자동으로 스캔해서 등록하고 싶은 것들을 위해 사용, 스프링에서 관리해야 하는 대상임을 표시한다.
@AutoWired : 주입하려고 하는 객체의 타입이 일치하는지를 찾고 객체를 자동으로 주입한다. (특정한 객체에 의존적이므로 자신에게 해당 타입의 빈을 주입해주라는 표시) 


----- 테스트 관련 -----
@Runwith : 테스트 코드가 스프링을 실행하는 역할을 할 것이라는 의미한다.
@ContextConfiguration : 지정된 클래스나 문자열을 이용해서 필요한 객체들을 스프링 내에 객체로 등록하게 된다. (흔히 Bean으로 등록 된다고 함) 
@Test : JUnit Test 기능을 실행

 

----- Bean 객체 -----
 @Service :  Business Layer에서 Service를 명시하기 위해서 사용
 @Repository :  Persistence Layer에서 DAO를 명시하기 위해서 사용
 @Component :  그 외에 자동으로 스캔해서 등록하고 싶은 것들을 위해 사용
 (+ 추가 @Component의 구체화된 형태로 @Repository, @Service,  @Controller 등이 있다는 것.)

 

❗ @Component, @Service, @Repository는 Bean객체를 만드는 역할을 하지만, @Component가 가장 큰 단위고 @Service, @Repository 등 구체적으로 사용하면 어떤 부분에 쓰이는지 시각적으로 판단하기 편하다.
❗ Bean : 스프링에서 관리되는 객체, 이에 대한 설정은 XML과 Java를 이용해서 처리

 

----- 기타 -----

@Configuration : 해당 클래스의 인스턴스를 이용해서 XML설정 파일을 대신한다.
@Controller :  Presentation Layer에서 Contoller를 명시하기 위해서 사용한다.
@Service :  Business Layer에서 Service를 명시하기 위해서 사용한다.
@Repository :  Persistence Layer에서 DAO를 명시하기 위해서 사용한다.

 

스프링이 동작하면서 생기는일


1. 스프링 프레임워크가 시작되면 스프링이 사용하는 메모리 영역을 만든다. (Context)
2. 스프링에서는 ApplicationContext라는 이름의 객체가 만들어진다.
3. 스프링은 자신이 객체를 생성하고 관리해야 하는 객체들에 대한 설정이 필요하다. 이에 대한 설정이 root-context.xml 파일이다.
4. root-context.xml 파일에 sacn 태그를 통해 패키지를 스캔한다.
5. @Component 라는 어노테이션이 존재하는 클래스의 인스턴스를 생성한다.
6. 다른 클래스의 객체가 필요하다는 @Autowired가 있으면 스프링은 해당 객체의 레퍼런스를 주입한다. 

728x90
반응형