Woopii Vyeolog

어노테이션(@) 간략 설명 본문

Spring Framework

어노테이션(@) 간략 설명

WooPii 2020. 2. 10. 11:01

************************* 참고 **************************

MVC모델을 만들때 각 영역의 이름을 아래 처럼 두고 하는 경우가 많다고 함(알파벳 순이라 보기 편한듯)

1. domain : 데이터 객체

2. repo(싱글턴으로 구현) : Repository

3. service(싱글턴으로 구현) : Service

4. web(싱글턴으로 구현) -- 컨트롤러가 여기로 들어간다

**********************************************************

 

 

프로그램이 거대해 짐에 따라 XML을 이용하여 IOC Container 를 설정하는 것이 점점 어려워졌고, 그에 따라

어노테이션(Annotation)이란것이 등장을 했다. 어노테이션은 코드에 메타데이터를 작성하여, 직관적인 코딩이

가능하게 만들어주며, 이에 따라 생산성이 증대되는 장점을 가지고 있다.

 

*********참고

메타데이터?? : 데이터에 관한 구조화된 데이터로, 다른 데이터를 설명해 주는 데이터이다. 대량의 정보 가운데에서 찾고 있는 정보를 효율적으로 찾아내서 이용하기 위해 일정한 규칙에 따라 콘텐츠에 대하여 부여되는 데이터이다.

 

 

어노테이션은 앞에 @를 쓰고 명명하고 싶은 이름을 적는다.

 

 

 

@Configuration : 스프링 IOC Container에게 해당 클래스는 Bean 구성 클래스임을 알려줌

 

@bean VS @Component

@Bean 어노테이션과 @Conponent 어노테이션 둘다 Spring IOC container에 Bean을 등록하도록

하는 어노테이션이다. 둘의 용도에서 약간의 차이가 있다.

 

 

@Bean : 개발자가 직접 제어가 불가능한 외부 라이브러리 등을 Bean으로 만들려고 할 때 사용됨

 

@Component : 개발자가 직접 작성한 클래스를 bean으로 등록하게 위한 어노테이션이다.

 

 

@Autowired(중요!!)

Bean의 의존성 주입은 @AutoWired를 이용하여 할 수 있다.

가져와서 사용하고 싶을 때 Singleton으로 사용될 수 있게끔 있는 거 찾아서 호출만 해주는거임

----> private로 해당 클래스 선언만 하고 어노테이션으로 autowired해주면 알아서 찾아서 호출 해줌

 

*******의존성 주입(Difendency Injection) 이란????

 

먼저, 한가지 예를 보면,

 

//먼저 Component 어노테이션으로 bean을 등록하고
@Component
public class Tire{
     public void roll(){
     	//content
     }
}


//Car라는 상위 모듈 안에 하위 모듈로서 Tire클래스가 들어가게 한다.
//여기서 Car는 Tire의 메소드를 이용하니 의존한다고 말할 수 있으며 둘은 의존 관계이다.
//그리고 new를 통해 객체를 만들거나 @AutoWried 어노테이션을 사용하여 해당 객체를 가져와서
//사용하게 하는 것을 의존성 주입(Defendency Injection)이라고 한다.
@Component
public class Car{
      //Tire tire = new Tire();
      @AutoWired
      private Tire tire;
      
      public void run(){
      	   tire.roll();
           ...
           ...
           ...
      }
}

 

 

@Repository(Compoenet 상속)

--> 해당 클래스가 Repository의 역활을 한다고 명시해주는 어노테이션 

 

 

@Service(Compoenet 상속)

--> 해당 클래스가 Service의 역활을 한다고 명시해주는 어노테이션 

 

 

@Controller(Compoenet 상속)

--> 해당 클래스가 Controller의 역활을 한다고 명시해주는 어노테이션 

 

 

 

출처

https://galid1.tistory.com/494

'Spring Framework' 카테고리의 다른 글

Spring 다운, 설치, 한글 설정(UTF-8)  (0) 2020.03.16
Spring FrameWork 에서 CSS파일 JS파일 가져오기가 안될 때  (2) 2020.02.12
IOC container, DIP, DI Framework  (1) 2020.02.11
Bean VS POJO  (1) 2020.02.11
MVC 모델  (0) 2020.02.10
Comments