私はそのように機能するクラスを持っています:
@Component
public class MyClass
{
@Autowired
public void setDataSource(DataSource dataSource)
{
...
}
public void doSomethingUsingDataSource()
{
// use autowired datasource
}
}
私のapplicationContext.xmlにはこれが含まれています:
<context:load-time-weaver/>
<context:component-scan base-package="mypackage" />
別のクラスでMyClassをインスタンス化する場合、これは正常に機能します。
MyClass mc = new MyClass();
mc.doSomethingUsingDataSource();
ただし、MyClassが代わりにシングルトンである場合:
@Component
public class MyClass
{
private static MyClass mc;
@Autowired
public void setDataSource(DataSource dataSource)
{
...
}
private void doSomethingUsingDataSource()
{
// use autowired datasource
}
public static void doSomething()
{
if (mc == null)
{
mc = new MyClass();
}
mc.doSomethingUsingDataSource();
}
}
そして私は電話します
MyClass.doSomething();
次に、dataSourceがnullであるため、NPEを取得します。
クラスの新しいインスタンスがこの方法で作成された場合、Springはデータソースを設定できませんか?または、構成を少し変更する必要がありますか?最初のバージョンが機能しているので、私の構成は正しいようです。
ありがとう、
ポール