これは本当に基本的なことだと思いますが、Helloworldの後の2番目のステップの例は見つかりませんでした
だから私が持っているのは:
spring-beans.xmlと呼ばれるspringconfigxml:
<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-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:annotation-config />
<context:component-scan base-package="org" />
</beans>
Springコンテキストで初期化されたクラス:
public static void main(String[] args) {
// initialize Spring
ApplicationContext context = new ClassPathXmlApplicationContext("META-INF/spring-beans.xml");
App app = (App) context.getBean("app");
app.run();
}
AppImplクラスの関連する詳細:
@Component("app")
public final class AppImpl implements App{
// focus of question: This autowiring works
@Autowired
private DAO1 dao1;
public void run() {
//focus of question: This works as daoclass is instantiated properly
obj1s = dao1.myFind();
badJobs = runJobs(obj1s);
}
private List<Obj1> runJobs(final List<Obj1> obj1s) {
List<Obj1> jobsGoneBad = new ArrayList<Obj1>();
for (Obj1 next : obj1s) {
// focus of question: usage of new keyword, thus not spring container managed?
Job job = new JobImpl(next);
job.run();
}
return jobsGoneBad;
}
}
JobImplの関連する詳細:
public class JobImpl implements Job {
private Obj1 obj1;
// focus of question: can't autowire
@Autowired
private DAO2 dao2;
@Override
public void run() {
//focus of question: opDAO == null - not initialized by @Autowired
Obj2 obj2 = dao2.myFind();
}
}
DAO1の関連する詳細:
@Repository("DAO1") //Focus of question: DAO1 is a repository stereotype
public class DAO1 {
myfind() { ...}
}
DAO2の関連する詳細:
@Repository("DAO2") //Focus of question: DAO2 is a repository stereotype
public class DAO2 {
myfind() { ...}
}
そうです、springcontext呼び出しを使用してアプリを初期化し、@Autowiredを使用してDAO1インスタンスを正常にインスタンス化します。
次に、Jobのアンマネージドインスタンスを作成し、@ Autowiredを使用して、そのクラスにも「単一の」依存関係を注入したいと思います。
Daoクラスはどちらも春のステレオタイプであり、スキャナーはそれらを正常に検出します。
だから私の質問は、基本的に、@ Autowiredコンセプトをその中で使用できるように、ジョブインスタンスをどのようにインスタンス化する必要があるかということです。
グローバルにアクセス可能なアプリケーションコンテキストが必要な場合、それをどのように導入するのが最善ですか?