77

Spring がオブジェクトの自動配線に失敗していますか? 抽象クラス内でオブジェクトを自動配線することは可能ですか? すべてのスキーマが application-context.xml で提供されていると仮定します

質問: 基本クラスと拡張クラス (存在する場合) @Service @Component にはどのような注釈を付ける必要がありますか?

abstract class SuperMan {

    @Autowire
    private DatabaseService databaseService;

    abstract void Fly();

    protected void doSuperPowerAction(Thing thing) {

        //busy code

        databaseService.save(thing);

    }
}

クラスの拡張

public class SuperGirl extends SuperMan {

    @Override
    public void Fly() {
        //busy code
    }

    public doSomethingSuperGirlDoes() {

        //busy code

        doSuperPowerAction(thing)

    }

アプリケーションコンテキスト.xml

<context:component-scan base-package="com.baseLocation" />
<context:annotation-config/>
4

4 に答える 4

44

そのような春のセットアップが機能しています

自動配線されたフィールドを持つ抽象クラス

public abstract class AbstractJobRoute extends RouteBuilder {

    @Autowired
    private GlobalSettingsService settingsService;

@Componentおよび注釈で定義されたいくつかの子。

于 2013-11-13T22:50:15.427 に答える
38

通常、抽象クラスがコンポーネントスキャン用に提供されたベースパッケージにある限り、Spring は自動配線を行う必要があります。

詳細については、これこれを参照してください。

@Service@Componentは両方とも、Spring コンテナー内に注釈付きタイプの Bean を作成するステレオタイプです。Spring Docs の状態として、

このアノテーションは @Component の特殊化として機能し、クラスパス スキャンによって実装クラスを自動検出できるようにします。

于 2013-11-13T22:49:56.677 に答える