Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Swing窗口应用程序的会话中使用spring加载应用程序上下文_Java_Spring_Swing_Spring Mvc_Session - Fatal编程技术网

Java 在Swing窗口应用程序的会话中使用spring加载应用程序上下文

Java 在Swing窗口应用程序的会话中使用spring加载应用程序上下文,java,spring,swing,spring-mvc,session,Java,Spring,Swing,Spring Mvc,Session,我正在用Spring开发Swing窗口应用程序。 现在,问题是在启动第一个Swing窗口时,我是否可以将ApplicationContext存储在某个会话变量中,并在整个窗口应用程序中使用它,直到用户关闭应用程序 public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() {

我正在用Spring开发Swing窗口应用程序。 现在,问题是在启动第一个Swing窗口时,我是否可以将ApplicationContext存储在某个会话变量中,并在整个窗口应用程序中使用它,直到用户关闭应用程序

 public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    try {
                        context = new ClassPathXmlApplicationContext("classpath*:**/Bean*.xml");
                        LoginPage loginPage = (LoginPage) context.getBean("loginPage");
                        loginPage.frame.setVisible(true);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
ApplicationContext context = new ClassPathXmlApplicationContext("classpath*:**/Bean*.xml");

LoginPage loginPage = (LoginPage) context.getBean("loginPage");
如上所示,要从spring获取LoginPageBean,我需要从ApplicationContext获取它。 如上所示,我可以将
“context”
变量存储在某个会话变量中,以便在应用程序中随时使用该
context
变量,直到用户关闭应用程序为止

 public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    try {
                        context = new ClassPathXmlApplicationContext("classpath*:**/Bean*.xml");
                        LoginPage loginPage = (LoginPage) context.getBean("loginPage");
                        loginPage.frame.setVisible(true);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
ApplicationContext context = new ClassPathXmlApplicationContext("classpath*:**/Bean*.xml");

LoginPage loginPage = (LoginPage) context.getBean("loginPage");

这个问题的原因是,我总是需要创建
上下文
变量,然后从中获得所需的bean。但一直以来,创建上下文变量都不合适,我认为这可能会给内存带来问题。

为什么不将上下文“保存”到会话中?在spring应用程序中不需要上下文。使用依赖项注入。您可以提供依赖项注入的方法吗?可以基类为
MainClass
,调用
MainClass
中的业务逻辑,调用
MainRulesClass
中的数据库对象
MainClass->MainRulesClass->MainDAOClass
要访问MainClass中的业务规则,需要创建MainRulesClass的对象和访问DAO方法,我需要在
MainRulesClass
中创建
MainDAOClass的对象,我已经在bean.xml中放置了bean条目,所以每次访问其他对象时,我都需要获取上下文,然后从bean创建该类的对象。您使用过spring吗?您可以在xml配置、java类配置或使用注释(如Autowired或Ressource)中使用依赖项注入。请查看spring文档