Java – Swing应用程序中的Hibernate和Spring
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java – Swing应用程序中的Hibernate和Spring,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4089字,纯文字阅读大概需要6分钟。
内容图文
![Java – Swing应用程序中的Hibernate和Spring](/upload/InfoBanner/zyjiaocheng/791/29bf011fcc244e3ea1e0c8142bd18bf8.jpg)
我是编程的新手.我在Swing应用程序中遇到问题.我想会话有问题.我使用Hibernate并通过Spring配置它.当我按下按钮我想向数据库添加信息但我得到NullPoinerException.也许我必须以另一种方式编写用户界面?
需要你的帮助!谢谢.
这是我的代码:
MainFrame.java
public class MainFrame extends JFrame {
public MainFrame(){
setTitle("Title");
setSize(300,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
makeButtons();
setVisible(true);
}
public void makeButtons(){
JPanel panel=new JPanel();
panel.add(makeLoginField());
panel.add(makeLoginButton());
panel.add(makePassField());
panel.setVisible(true);
this.add(panel);
}
public JButton makeLoginButton(){
JButton loginButton=new JButton("Login");
loginButton.addActionListener(new Action());
return loginButton;
}
public JTextField makeLoginField(){
JTextField loginField=new JTextField();
loginField.setSize(new Dimension(134, 20));
return loginField;
}
public JPasswordField makePassField(){
JPasswordField passField=new JPasswordField();
passField.setSize(new Dimension(134, 20));
return passField;
}
public static void main(String[] args) {
JFrame m=new MainFrame();
}
}
Action.java
class Action implements ActionListener{
@Autowired
private UserServiceInterface userService;
public void setuserService(UserServiceInterface userService) {
this.userService=userService;
}
public void actionPerformed (ActionEvent e){
User u=new User();
u.setName("HellofromGUI");
userService.addUser(u);
}
}
UserService.java
@Transactional
public class UserService implements UserServiceInterface{
@Autowired
private UserDaoInterface dao;
public void setDao(UserDaoInterface dao) {
this.dao = dao;
}
public void addUser(User u){
dao.insertRow(u);
}
public List getData(){
return dao.getDBValues();
}
}
UserDao.java
public class UserDao implements UserDaoInterface{
@Autowired
private SessionFactory sessionFactory;
public void insertRow(User user) {
Session session = null;
session = sessionFactory.getCurrentSession();
session.save(user);
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public List getDBValues() {
Session session = sessionFactory.getCurrentSession();
List<User> users = session.createCriteria(User.class).list();
return users;
}
}
beans.xml中
<beans>
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
<bean id="userdao" class="dao.UserDao">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="userservice" class="service.UserService">
<property name="dao">
<ref bean="userdao" />
</property>
</bean>
<bean id="paymentdao" class="dao.PaymentDao">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="paymentservice" class="service.PaymentService">
<property name="dao">
<ref bean="paymentdao" />
</property>
</bean>
<bean id="usergui" class="ui.Action">
<property name="userService">
<ref bean="userservice" />
</property>
</bean>
</beans>
解决方法:
要记住Spring的重要一点是它只能将引用注入Spring托管bean.在您的代码中,您期望Spring会将一个UserService实例注入您的Action类. Spring应该正确地将这个注入执行到名为usergui的Spring bean中,但是,在您的UI中,您正在使用以下代码创建自己的Action类实例:
loginButton.addActionListener(new Action());
无论何时自己创建一个Object实例,它都不会被Spring管理,需要像处理任何自我管理对象那样对待,即手动设置所有必需的引用.
要获得您期望的结果,您需要更改UI逻辑以引用您在配置文件中定义的Spring usergui bean.为了获得这个实例,首先需要检索Spring的BeanFactory实例.下面是一个示例,说明代码如何查找正确的usergui`实例:
// using ClassPathResource, you can also use a FileResource or other method to load config
Resource res = new ClassPathResource("/beans.xml");
// initialize bean factory
BeanFactory factory = new XmlBeanFactory(res);
// retrieve Spring managed Action class
ActionListener action = factory.getBean("usergui", ActionListener.class);
// configure login button
loginButton.addActionListener(action);
示例代码直接引用ActionListener而不是Action类.通常在使用Spring时,您希望与Class(而不是Class本身)(Action)实现的接口(ActionListener)进行交互.这样做允许您更改bean usergui引用的实现,例如,Action – > DifferentAction,无需修改UI代码.
内容总结
以上是互联网集市为您收集整理的Java – Swing应用程序中的Hibernate和Spring全部内容,希望文章能够帮你解决Java – Swing应用程序中的Hibernate和Spring所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。