복붙노트

[SPRING] @Autowired는 구성 요소 검색이 제거 된 경우 작동하지 않습니다.

SPRING

@Autowired는 구성 요소 검색이 제거 된 경우 작동하지 않습니다.

구성에서 구성 요소 스캔 태그를 제거하면 주석이 @Autowired가 더 이상 작동하지 않는다는 (이 주석을 사용하는 모든 Java 클래스에서) 문제에 직면하고 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

  <context:component-scan base-package="efco.auth" />

here are some beans...

efco.auth 패키지에는 하나의 클래스 만 있으며이 클래스는 다음 클래스 EfcoBasketLogic과 아무런 관련이 없습니다.

@Autowired를 사용하는 클래스 :

package efco.logic;
    public class EfcoBasketLogic extends BasketLogicImpl {

        @Autowired
        private EfcoErpService erpService;

이 Bean은 다른 스프링 구성 파일에 정의되어 있습니다.

<bean id="BasketLogic" class="efco.logic.EfcoBasketLogic">
    <property name="documentLogic" ref="DocumentLogic" />
    <property name="stateAccess" ref="StateAccess" />
    <property name="contextAccess" ref="ContextAccess" />
  </bean>

보시다시피, erpService가 정의되지 않았습니다. 다른 세 속성은 BasketLogicImpl에 있으며 설정자가 있습니다.

내가 뭘 잘못하고있어?

해결법

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

    1.Tomasz가 말했듯이 @Autowired가 작동하려면 가 필요합니다. 이있을 때, 암묵적으로 annotation-config가 포함됩니다.

    Tomasz가 말했듯이 @Autowired가 작동하려면 가 필요합니다. 이있을 때, 암묵적으로 annotation-config가 포함됩니다.

  2. ==============================

    2.autowire = "byType"또는 autowire = "byName"을 빈 선언에 추가하면 작업을 수행해야합니다.

    autowire = "byType"또는 autowire = "byName"을 빈 선언에 추가하면 작업을 수행해야합니다.

  3. from https://stackoverflow.com/questions/13176997/autowired-doesnt-work-if-component-scan-removed by cc-by-sa and MIT license