java - Spring 依赖注入(inject)无法正常工作

标签 java spring dependency-injection

我有一个 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/

相关文章:

java - 更好地使用 for 和 while 循环

java - 如何使用 Junit 和 Spring 手动提交事务

java - 如何从 Spring Controller 在浏览器中返回 CSV 数据

java - 从 Apache HTTPClient Basic Auth 获取意外的 401

java - 如何使用 Spring boot 实现 AWS Secret Manager?做这个的最好方式是什么?

java - 如何创建虚拟 Oracle 服务器来与 Toad 连接

java - Spring MVC 4.1.x RestFul 服务抛出 Json Not Acceptable

Java EE 5 依赖注入(inject)?

spring - 集成测试 : test the Autowired annotation

java - 我应该在方法参数中还是在 Java 的父构造函数中传递对象