Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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 如何将Spring与Swing结合使用_Java_Spring_Swing_Spring Mvc - Fatal编程技术网

Java 如何将Spring与Swing结合使用

Java 如何将Spring与Swing结合使用,java,spring,swing,spring-mvc,Java,Spring,Swing,Spring Mvc,我正在使用Swing开发一个桌面应用程序,但是有了它,我想使用Spring框架来使用IOC,并且我想使用接口技术来实现这一点。但是,当我通过接口的实例调用一个函数,并且该接口由一个声明了被调用函数的类实现时,我得到了nullPointerException 以下是我的简单应用程序代码: 接口: 您的代码中缺少某些内容 您发布的主函数不会调用任何Swing框架的创建。这真的是你要调用的代码吗 其次,bean名称不匹配,在xml中bean名为empMasterServiceImpl,在代码中取emp

我正在使用Swing开发一个桌面应用程序,但是有了它,我想使用Spring框架来使用IOC,并且我想使用接口技术来实现这一点。但是,当我通过接口的实例调用一个函数,并且该接口由一个声明了被调用函数的类实现时,我得到了nullPointerException

以下是我的简单应用程序代码:

接口:
您的代码中缺少某些内容

您发布的主函数不会调用任何Swing框架的创建。这真的是你要调用的代码吗


其次,bean名称不匹配,在xml中bean名为
empMasterServiceImpl
,在代码中取
empMasterService
。它将不起作用。

如何创建EmpManager,在应用程序xml中有一个bean用于管理器,但它也包含主方法。然后在主方法中获取应用程序上下文,并设置服务bean,这样EmpManager bean就不会在应用程序上下文中做任何事情

我建议将main方法提取到另一个类中,在该类中加载应用程序上下文,并仅在UI管理器上使用getBean。当前的设置方式忽略了Spring的许多IoC功能,直接从应用程序上下文中获取bean,而不是让Spring为您这样做


这可能无法直接解决您的问题,但它至少允许Spring有一个单一的入口点,并将DI保持在Spring的手中,而不是依赖您自己设置它们。

只是一个想法-因为您的上下文似乎初始化正确,您确定没有两个不同的
ApplicationContext.xml
文件挂在不同的目录中吗?“非常紧急”您的时间安排与我们无关。也许你需要一位顾问。@AndrewThompson谢谢你的大力支持…@maksimov谢谢你的回复,我查看了我的应用程序目录,但只有一个ApplicationContext文件。@Balasaheb Spring通常会打印错误/警告,如果初始化有任何问题,请在调试这一行时小心:
new ClassPathXmlApplicationContext(新字符串[]{“ApplicationContext.xml”})感谢回复,实际上empMasterService是IEmpMasterService接口的一个实例,由empMasterService实现。我创建了一个接口bean,并将其映射到实现的类。我在我的网络项目中使用了这种技术,效果很好。我想这是另一个我没有添加的问题。谢谢,现在我知道这段代码出了什么问题,实际上我正在创建一个按钮并向其中添加一个actionListener,所以这次我创建了一个新的actionListener,这就是为什么它会出现错误。现在我已经创建了实现ActionListener的classMyActionListener,在这个类中我使用了这个bean。
public interface IEmpMasterService {    
    public InternalResultsResponse<EmpMaster> maintainEmpMaster(
            EmpMaster empMaster);
}
public class EmpMasterService implements IEmpMasterService {    
    private IEmpMasterDAO empMasterDAO; 
    public IEmpMasterDAO getEmpMasterDAO() {
        return empMasterDAO;
    }
    public void setEmpMasterDAO(IEmpMasterDAO empMasterDAO) {
        this.empMasterDAO = empMasterDAO;
    }
    @Override
    public InternalResultsResponse<EmpMaster> maintainEmpMaster(
            EmpMaster empMaster) {
        InternalResultsResponse<EmpMaster> response = new InternalResultsResponse<EmpMaster>();
        //some logic her...
        response = getEmpMasterDAO().maintainEmpMaster(request);
        return response;
    }}
public interface IEmpMasterDAO {
    InternalResultsResponse<EmpMaster> maintainEmpMaster(
            EmpMasterRequest request);
}
class Implementing DAO:
public class EmpMasterDAO extends HibernateDaoSupport implements IEmpMasterDAO{
    @Override
    public InternalResultsResponse<EmpMaster> maintainEmpMaster(
            EmpMasterRequest empMasterRequest) {
//hibernate code goes here...       
        return resultsResponse;
    }
} 
public class EmpManager extends javax.swing.JFrame {    
    private IEmpMasterService empMasterService;
    private static ApplicationContext context;  
    public IEmpMasterService getEmpMasterService() {
        return empMasterService;
    }
    public void setEmpMasterService(IEmpMasterService empMasterService) {
        this.empMasterService = empMasterService;
    }
public static void main(String args[]) {
        context = new ClassPathXmlApplicationContext(new String[]{"ApplicationContext.xml"});
empMasterService = (EmpMasterService)context.getBean("empMasterService");
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        String name = jTextField1.getText();
        String salary = jTextField2.getText();
        EmpMaster empMaster = new EmpMaster();
        empMaster.setEmpName(name);
        empMaster.setSalary(Double.parseDouble(salary));  
//***** getting Error at this line *****//    
        InternalResultsResponse<EmpMaster> response = getEmpMasterService().maintainEmpMaster(empMaster);       
    }
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    <import resource="dataSource.xml"/>
       <bean id="mainFrame" class="org.UI.EmpManager">
        <property name="title"> <value>Spring Example</value></property>    
        <property name="empMasterService" ref="empMasterServiceImpl"></property>    
    </bean>     
    <bean id="empMasterServiceImpl" class="org.service.EmpMasterService">
        <property name="empMasterDAO" ref="empMasterDAOTarget"></property>      
    </bean> 
    <bean id="empMasterDAOTarget" class="org.DAO.EmpMasterDAO">
        <property name="hibernateTemplate" ref="matrixHibernateTemplate"/>
    </bean> 
</beans>
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at org.UI.EmpManager.jButton1ActionPerformed(EmpManager.java:140)
    at org.UI.EmpManager.access$0(EmpManager.java:132)
    at org.UI.EmpManager$1.actionPerformed(EmpManager.java:67)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)