default-autowire-candidatesプロパティの役割検証

1922 ワード

軽量級java_を表示EE企業応用実戦(李剛著)がdefault-autowire-candidatesの役割を見たとき、原文の説明はこうです.要素にdefault-autowire-candidates属性を制定することで、Beanを制限し、これらのBeanをこの自動アセンブリから除外することもできます.default-autowire-candidatesプロパティの値を使用すると、パターン文字列を使用できます.たとえば、default-autowire-candidates=「*abc」を作成すると、abcで終わるBeanはすべて自動アセンブリから除外されます.それだけでなく、このプロパティは、任意のモード文字列に一致するすべてのBeanが自動アセンブリから除外されるように、複数のモード文字列を指定することもできます.
この説明を見たとき、この属性の字面は、除外者ではなく自動アセンブリの候補者を意味するのではないかと疑問に思った.検証:



```java
public class Chinese {    private Axe axe;    public void setAxe(Axe axe) {        this.axe = axe;    }    @Override    public void useAxe() {        System.out.println(axe.chop());    }}

テスト:ApplicationContext ctx=new ClassPathXmlApplicationContext(「bean.xml」)Person person = ctx.getBean("chinese", Person.class);person.useAxe(); 正常に実行されます.説明steelAxeは除外されていません.正常な自動組み立てられています
修正default-autowire-candidates:****default-autowire-candidates="Axe 2"*再実行テスト:Exception in thread"main"Java.lang.NullPointerException at myspring.Chinese.useAxe(Chinese.java:30) at myspring.SpringTest.main(SpringTest.java:58)空のポインタは、chineseの依存axeが注入されず、空であることを示しています.だから実行するuseAxeメソッドの場合、空のポインタが間違っています.
以上のテストをまとめると、default-autowire-candidatesは候補者であるべきであり、すなわちマッチングは含まれるべきである.不一致は除外されます.**Spring,default-autowire-candidates属性の役割検証について