은은하게 코드 뿌시기

[의존성주입]DI/Dependency Injdection/ 애노테이션/애너테이션/어노테이션- @Autowired, @Resource, @Inject 본문

웹/spring

[의존성주입]DI/Dependency Injdection/ 애노테이션/애너테이션/어노테이션- @Autowired, @Resource, @Inject

은은하게미친자 2022. 8. 12. 00:16
728x90

1. @Autowired

  • : 주입하려고하는 객체의 타입(type)이 일치하는 객체를 자동으로 주입한다, 타입으로 연결 안되면 이름 으로 연결된다.  ex)) private USERVO uservo; 일때  USERVO 
  • spring framework에서 지원 ,org.springframework.beans.factory.annotation.Autowired
  • 필드, 생성자, setter 에 붙일 수 있다. setter에 붙여서 사용할 경우 반드시 생성자가 정의되어있어야 한다.
  • 강제연결/빈지정방법 : @Qualifier("title");    , @Primary 사용
  • SpringFramwork 안에서만 사용 가능
  • 더보기
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    package kr.co.dong;
     
    import org.springframework.beans.factory.annotation.Autowired;
     
    public class ditest {
        @Autowired
        dione dio;
        
    }
     
    class dione{
        String hello1="hello";
        
        String hellomethod() {
            return "hello";
        }
        
    }
     
    cs

2. @Resource

  • : 주입하려고하는 객체 이름(id)이 일치하는 객체를 자동으로 주입한다. 이름으로 연결 안되면 타입으로 연결된다.ex)) ex)) private USERVO uservo; 일때  uservo
  • java 제공 애노테이션, javax.annotation.Resource
  • 필드, setter에 붙일 수있다. 생성자에는 붙일 수 없다. @Autowired와  마찬가지로 반드시 기본생성자가 정의 
  • 강제연결/빈지정방법 : @Resurce(name ="title");
  • Java 9 이후로 삭제

3. @Inject

  • @Autowired 와 유사하게 주입하려고하는 객체의 타입이 일치하는 객체를 자동으로 주입한다. 타입으로 연결 안되면 이름으로 연결된다. ex)) private USERVO uservo; 일때  USERVO 
  • java 제공 애노테이션, javax.inject.Inject
  • 필드, 생성자, setter에 붙일 수 있다. @Autowired와 마찬가지로 setter에 사용할 경우 반드시 기본생성자가 정의 되어 있어야한다.
  • 강제연결/빈지정방법 : @Qualifier("title");    , @Primary 사용, @Named(value=:"title");
  • 특정 프레임워크에 종속적이지않음

참고사이트 :

https://codingnojam.tistory.com/13

 

[Spring] @Autowired, @Inject, @Resource 차이점 비교정리

안녕하세요 코딩노잼입니다. 오늘은 의존성 주입에 사용하는 애너테이션 @Autowired, @Inject, @Resource에 대해서 각각에 대해 어떤 특징과 차이점이 있는지 알아보겠습니다. 예시로 사용할 클래스는

codingnojam.tistory.com

 

728x90
Comments