8

構成からcomponent-scanタグを削除すると、アノテーション@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パッケージにはクラスが1つだけあり、このクラスは次のクラスEfcoBasketLogicとは関係ありません。

@Autowiredを使用するクラス:

package efco.logic;
    public class EfcoBasketLogic extends BasketLogicImpl {

        @Autowired
        private EfcoErpService erpService;

このBeanは、他のSpring構成ファイルで定義されています。

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

ご覧のとおり、erpServiceは定義されていません。他の3つのプロパティはBasketLogicImplにあり、セッターがあります。

私が間違っているのは何ですか?

4

2 に答える 2

15

Tomaszが言うように、あなたは働く必要があり<context:annotation-config/>ます@Autowired。あなたが持っていたとき<context:component-scan/>、それはあなたのために暗黙のうちに含まannotation-configれていました。

于 2012-11-01T13:07:57.550 に答える
0

autowire="byType"いずれかまたはをBean宣言に追加するautowire="byName"と、機能するはずです。

于 2012-11-01T13:07:03.153 に答える