본문 바로가기

# About Springfamework

# DI Compare( Dependency Injection )

@Resource  @Autowired  @Inject 의 공통점 :

     특정 Bean 기능을 수행하기 위해 기능에 필요한 특정 Bean을 참조해야 하는 경우가 많이 발생함.

     그럴때 사용하는 것이 @Resource @Autowired @Inject 의 anotation

 

  @Resource @Autowired @Inject
설명 Java 지원 anotation spring Framework에서 지원하는 Dependency (의존도 주입 ) 용도. 자동주입되며, 종속적 Java 지원 anotation
사용위치  필드, 한개의파라미터인 비어있는 프로퍼티 setter 메소드 필드 , 생성자 , 여러개인 피라미터 메소드 

필드 , 생성자 , 메소드

연결또는 검색방식 이름으로 연결 , 안되면 타입. 타입으로 연결 안되면 이름 타입으로 연결 안되면 이름.
특이사항   스프링프레임워크 종속적  
강제연결하기 @Resource(name="title") @Qualifier("title")  

 

@Resource :

     name으로 DI를 가능케함. 자바에서 지원하는 어노테이션, 프레임워크 *종속적이지 않아 많이 사용한다.

     *종속적 : 어떤 것에 딸려 붙어있는, 또는 그런것.

     필요로 하는 지원을 쓰기위해 어노테이션을 추가해 DI (의존도주입)을 한다.

     Bean을 생성해주며 싱글톤 패턴이 자동으로 적용이 된다고 생각하면 된다.

 

@Autowired

     type으로 DI를 가능케한다. SpringFramework에서 지원하는 어노테이션, framework에 종속적

     추천하지않는 이유 : SpringFramework 사용도중 , 다른 framework로 수정할 경우, 많은 리소스 발생. 양이 방대할수록       답이없다. Bean을 생성하며, 싱글톤 패턴이 자동적으로 적용됨 타입으로 연결하기 때문에 같은타입인 여러개의 필드는 오       류발생.. 강제 연결시 @Qualifier를 사용하면 됨. 이름을 붙여서 사용해야함.

 

@Inject : 

     name으로 DI를 가능케하며, Java에서 지원하는 어노테이션, Framework에 비 종속적임.

     @Resource랑 다를게 없지만, 차이점을뽑자면 Java에서 지원하는 어노테이션이지만 "타입으로 연결"