サーバーの起動時に作成されるクラスがあります。クライアント アプリケーションのエントリ メソッドとして機能します。この振る舞いを変えることはできません。
@Autowired
このアンマネージド クラス内でSpring を使用したいのですが。アスペクトウィービングが進むべき道かもしれないと読みました. ログに応じてすでに実行されているようです:
2014-01-28 13:11:10,156 INFO org.springframework.context.weaving.DefaultContextLoadTimeWeaver: Using a reflective load-time weaver for class loader: org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader
しかし、それでも私の注入されDao
たサービスはnull
. 何が欠けている可能性がありますか?
@WebListener
public class MyContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
new TestService().run(); //throws NPE
}
}
@Configurable
class TestService extends AbstractLegacyService {
@Autowired
private Dao dao;
@Override
public void run() {
//dao is always null
dao.find();
}
}
@Component
class Doa dao;
ウィービングを有効にします (tomcat):
@Configuration
@EnableLoadTimeWeaving
@EnableSpringConfigured
public class AppConfig {
}