복붙노트

[SPRING] 스프링 종속성 삽입 Autowiring Null [duplicate]

SPRING

스프링 종속성 삽입 Autowiring Null [duplicate]

나는 RestTemplate을 사용하고 그것을 autowire 할 수 있었다. 그러나 나는 나머지 클래스 템플릿 관련 부분을 다음과 같이 다른 클래스로 옮기고 싶다 :

public class Bridge {

    private final String BASE_URL = "http://localhost:8080/u";

    @Autowired
    RestTemplate restTemplate;

    public void addW() {
       Map<String, String> x = new HashMap<String, String>();
       W c = restTemplate.getForObject(BASE_URL + "/device/yeni", W.class, x);
       System.out.println("Here!");
    }
}

그리고 다른 클래스에서 저는 그것을 다음과 같이 부릅니다 :

...
Bridge wb = new Bridge();
wb.addW();
...

나는 Spring과 Dependency Injection에 대해 새로운 것이다. 내 restTemplate 변수가 null이고 예외가 발생합니다. 어떻게 해결할 수 있습니까 (나는 새로운 키워드를 사용하는 것과 관련이 있는지 모르겠습니다)?

해결법

  1. ==============================

    1.Bridge wb = new Bridge ()를 사용하면 종속성 삽입이 작동하지 않습니다. Spring이 관리하지 않기 때문에 restTemplate은 삽입되지 않습니다.

    Bridge wb = new Bridge ()를 사용하면 종속성 삽입이 작동하지 않습니다. Spring이 관리하지 않기 때문에 restTemplate은 삽입되지 않습니다.

    Bridge를 Spring bean 자체처럼 만들어야합니다. 특수 효과 별

    @Service
    public class Bridge {
        // ...
    }
    

    또는 bean 선언에 의해 :

    <bean id="bridge" class="Bridge"/>
    
  2. ==============================

    2.Jeha의 정답에 더 추가하면됩니다.

    Jeha의 정답에 더 추가하면됩니다.

    현재,

    Bridge wb = new Bridge();
    

    그 객체 인스턴스가 "봄 관리"가 아니라는 것을 의미합니다 - 즉. 봄은 그것에 대해 아무것도 모른다. 그렇다면 어떻게 알 수없는 의존성을 주입 할 수 있을까요?

    Jeha가 말했듯이. @Service 주석을 추가하거나 응용 프로그램 컨텍스트 xml 구성 파일에 지정하십시오 (또는 Spring 3을 @Configuration 객체로 사용하는 경우)

    그런 다음 Spring 컨텍스트가 시작되면 BeanFactory에 Bridge.class의 Singleton (기본 동작) 인스턴스가있게됩니다. 다른 Spring-Managed 오브젝트에 그것을 삽입하거나 수동으로 잡아 당겨서 제거하십시오.

    Bridge wb = (Bridge) applicationContext.getBean("bridge"); // Name comes from the default of the class
    

    이제는 종속성이 유선화됩니다.

  3. ==============================

    3.new 연산자를 사용하고 여전히 모든 종속성을 주입하려면 스프링 구성 요소 (@Service로 주석을 추가 함)를 작성하는 대신 @Configurable 클래스로 만드십시오.

    new 연산자를 사용하고 여전히 모든 종속성을 주입하려면 스프링 구성 요소 (@Service로 주석을 추가 함)를 작성하는 대신 @Configurable 클래스로 만드십시오.

    이 방법은 새로운 연산자 종속성에 의해 인스턴스화 된 객체도 주입됩니다.

    몇 가지 구성도 필요합니다. 자세한 설명과 샘플 프로젝트는 여기에 있습니다.

    http://spring-framework-interoperability.blogspot.in/2012/07/spring-managed-components.html

  4. from https://stackoverflow.com/questions/8091203/spring-dependency-injection-autowiring-null by cc-by-sa and MIT license