我有一个 Spring/Swing 应用程序,我正在其中试验 DI,但无论我到目前为止做了什么,我都无法使其正常工作。以下是我从事的一些示例类(class);
public class Launcher {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
ApplicationContext context = null;
try {
context = new AnnotationConfigApplicationContext(AppConfig.class);
MainFrame mainFrame = (MainFrame) context.getBean("mainFrame");
mainFrame.init();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (context != null)
((ConfigurableApplicationContext) context).close();
}
}
});
}
}
@Configuration
@ComponentScan("tr.com.example.*")
public class AppConfig {
@Bean(name = "mainFrame")
public MainFrame createMainFrame() {
return new MainFrame();
}
}
public class MyPanel{
@Autowired
MyManager manager;
...do stuff
}
@Service
public class MyManager{
...do stuff
}
因此,当我尝试将 MyManager 注入(inject) MyPanel 时,我收到 NullPointerException。但如果我尝试将它注入(inject)到 MainFrame 中,它就会起作用。
有人可以向我解释一下这里出了什么问题以及我应该如何正确地解决它吗?
提前致谢。
最佳答案
您的MyPanel
不是@Component
,因此它对Spring不可见,并且任何@Autowired
或其他注释都不会被处理。
Spring的关键是充分利用它。除非您知道某些东西不应该是 bean(即域类、实体等),否则它可能应该是 bean。
关于java - Spring 依赖注入(inject)无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50251334/