Beanの自動アセンブリAutowiring

2238 ワード

例:AutoWiringDaoとAutoWiringServiceの2つのクラスがあり、AutoWiringDaoはAutoWiringServiceのプロパティです.自動アセンブリを使用しない前に、次のように構成されています.
<?xml version="1.0" encoding="UTF-8" ?>
<beans ........>
    <bean id="autoWiringDao" class="com.main.huihui.AutoWiringDao" />
    <bean id="autoWiringService" class="com.main.huihui.AutoWiringService">
        <property name="autoWiringDao" ref="autoWiringDao" />
    </bean>
</beans>

自動アセンブリの使用後:
一.No:何もしない(デフォルトオプション)
二.byName:属性名に基づいて自動的に組み立てる.このオプションでは、コンテナをチェックし、名前に基づいてプロパティと完全に一致するbeanを検索し、プロパティと自動的にアセンブリします.
<?xml version="1.0" encoding="UTF-8" ?>
<beans ........
    default-autowiring="byName">
    <bean id="autoWiringDao" class="com.main.huihui.AutoWiringDao" />
    <bean id="autoWiringService" class="com.main.huihui.AutoWiringService" />
</beans>

三.byType:指定した属性タイプと同じbeanがコンテナに存在する場合、その属性と自動的にアセンブリされます.このタイプのbeanが複数存在する場合、異常が放出され、byType方式で自動アセンブリができないことが指摘される.一致するbeanが見つからなければ、何も起こらない.byTypeによる検索は、idとは関係なく、idは書かなくてもよい.
<?xml version="1.0" encoding="UTF-8" ?>
<beans ........
    default-autowiring="byType">
    <bean id="autoWiringDao" class="com.main.huihui.AutoWiringDao" />
    <bean id="autoWiringService" class="com.main.huihui.AutoWiringService" />
</beans>

四.constructor:byType方式と類似しており、構造関数に適用する点が異なる.コンテナにコンストラクタパラメータに一致するbeanが見つからない場合、異常が放出される.
class AutoWiringService {
    private AutoWiringDao autoWiringDao;
    public AutoWiringService(AutoWiringDao autoWiringDao) {
        this.autoWiringDao = autoWiringDao;
    }
    ....
}
<?xml version="1.0" encoding="UTF-8" ?>
<beans ........
    default-autowiring="constructor">
    <bean id="autoWiringDao" class="com.main.huihui.AutoWiringDao" />
    <bean id="autoWiringService" class="com.main.huihui.AutoWiringService" />
</beans>