Spring--SSH--全注解开发

SSH全注解开发:

  (1) 在Action类中添加注解,实现Struts2的注解开发(@NameSpace、@ParentPackage、@Action...)

 1 package com.tongji.actions;
 2
 3 import org.apache.struts2.convention.annotation.Action;
 4 import org.apache.struts2.convention.annotation.Namespace;
 5 import org.apache.struts2.convention.annotation.ParentPackage;
 6 import org.apache.struts2.convention.annotation.Result;
 7 import org.springframework.beans.factory.annotation.Autowired;
 8 import org.springframework.context.annotation.Scope;
 9 import org.springframework.stereotype.Component;
10
11 import com.tongji.beans.Student;
12 import com.tongji.service.IStudentService;
13
14 @Component
15 @Scope("prototype")
16 @Namespace("/test")
17 @ParentPackage("struts-default")
18 public class RegisterAction {
19     private String name;
20     private int age;
21
22     //声明Service对象
23     @Autowired
24     private IStudentService service;
25
26     public String getName() {
27         return name;
28     }
29
30     public void setName(String name) {
31         this.name = name;
32     }
33
34     public int getAge() {
35         return age;
36     }
37
38     public void setAge(int age) {
39         this.age = age;
40     }
41
42     public IStudentService getService() {
43         return service;
44     }
45
46     public void setService(IStudentService service) {
47         this.service = service;
48     }
49
50     @Action(value="register", [email protected](location="/welcome.jsp"))
51     public String execute() {
52         Student student = new Student(name, age);
53         service.addStudent(student);
54         return "success";
55     }
56 }

  (2) 在 Spring 配置文件中注册组件扫描的基本包 <context:component-scan base-package="com.tongji"/>,在Dao层、Service层和Action层中注解组件和依赖注入,相应地删除在 Spring 配置文件中删除 dao、service、action 的 Bean 定义

 1 package com.tongji.dao;
 2
 3 import java.util.List;
 4
 5 import org.hibernate.Session;
 6 import org.hibernate.SessionFactory;
 7 import org.springframework.beans.factory.annotation.Autowired;
 8 import org.springframework.stereotype.Repository;
 9
10 import com.tongji.beans.Student;
11
12 @Repository("studentDao")   //表示当前Dao的Bean的id为studentDao
13 public class StudentDaoHbnImpl implements IStudentDao{
14
15     @Autowired
16     private SessionFactory sessionFactory;
17
18     public void setSessionFactory(SessionFactory sessionFactory) {
19         this.sessionFactory = sessionFactory;
20     }
21
22     @Override
23     public void insertStudent(Student student) {
24         sessionFactory.getCurrentSession().save(student);
25     }
26
27     @Override
28     public void deleteStudent(int id) {
29         Student student = sessionFactory.getCurrentSession().get(Student.class, id);
30         //Student student = this.selectStudentById(id);
31         sessionFactory.getCurrentSession().delete(student);
32     }
33
34     @Override
35     public void updateStudent(Student student) {
36         sessionFactory.getCurrentSession().update(student);
37     }
38
39     @Override
40     public String selectStudentNameById(int id) {
41 //        Student student = this.selectStudentById(id);
42 //        if (student != null) {
43 //            return student.getName();
44 //        }
45 //        return null;
46
47         String hql = "select name from Student where id= :id";
48         String name = (String) sessionFactory.getCurrentSession().createQuery(hql).
49                         setInteger("id", id).
50                             uniqueResult();
51         return name;
52     }
53
54     @Override
55     public List<String> selectStudentNames() {
56         String hql = "select name from Student";
57         return sessionFactory.getCurrentSession().createQuery(hql).list();
58     }
59
60     @Override
61     public Student selectStudentById(int id) {
62         return sessionFactory.getCurrentSession().get(Student.class, id);
63     }
64
65     @Override
66     public List<Student> selectStudents() {
67         String hql = "from Student";
68         return sessionFactory.getCurrentSession().createQuery(hql).list();
69     }
70
71 }

  (3) 在 Spring 配置文件中开启 Spring 事务注解驱动 <tx:annotation-driven transaction-manager="transactionManager"/>,使用 Spring 的事务注解管理事务

 1 package com.tongji.service;
 2
 3 import java.util.List;
 4
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.stereotype.Service;
 7 import org.springframework.transaction.annotation.Transactional;
 8
 9 import com.tongji.beans.Student;
10 import com.tongji.dao.IStudentDao;
11
12 @Service("studentService")  //表示当前Service的Bean的id为studentService
13 public class StudentServiceImpl implements IStudentService {
14
15     @Autowired
16     private IStudentDao dao;
17
18     public void setDao(IStudentDao dao) {
19         this.dao = dao;
20     }
21
22     @Override
23     @Transactional
24     public void addStudent(Student student) {
25         dao.insertStudent(student);
26     }
27
28     @Override
29     @Transactional
30     public void removeStudent(int id) {
31         dao.deleteStudent(id);
32     }
33
34     @Override
35     @Transactional
36     public void modifyStudent(Student student) {
37         dao.updateStudent(student);
38     }
39
40     @Override
41     @Transactional(readOnly=true)
42     public String findStudentNameById(int id) {
43         return dao.selectStudentNameById(id);
44     }
45
46     @Override
47     @Transactional(readOnly=true)
48     public List<String> findStudentNames() {
49         return dao.selectStudentNames();
50     }
51
52     @Override
53     @Transactional(readOnly=true)
54     public Student findStudentById(int id) {
55         return dao.selectStudentById(id);
56     }
57
58     @Override
59     @Transactional(readOnly=true)
60     public List<Student> findStudents() {
61         return dao.selectStudents();
62     }
63
64 }

  (4) 删除Hibernate映射文件,在实体类中以注解的方式表明映射关系,并在 Spring 配置文件的 SessionFactory 定义中,删除映射文件的相关配置mappingResources,添加实体包扫描器packagesToScan。

 1 package com.tongji.beans;
 2
 3 import javax.persistence.Entity;
 4 import javax.persistence.GeneratedValue;
 5 import javax.persistence.Id;
 6 import javax.persistence.Table;
 7
 8 import org.hibernate.annotations.GenericGenerator;
 9
10 @Entity
11 @Table
12 public class Student {
13     @Id
14     @GenericGenerator(name="xxx", strategy="native")
15     @GeneratedValue(generator="xxx")
16     private Integer id;
17     private String name;
18     private int age;
19
20     public Integer getId() {
21         return id;
22     }
23
24     public void setId(Integer id) {
25         this.id = id;
26     }
27
28     public String getName() {
29         return name;
30     }
31
32     public void setName(String name) {
33         this.name = name;
34     }
35
36     public int getAge() {
37         return age;
38     }
39
40     public void setAge(int age) {
41         this.age = age;
42     }
43
44     public Student() {
45         super();
46     }
47
48     public Student(String name, int age) {
49         super();
50         this.name = name;
51         this.age = age;
52     }
53
54     @Override
55     public String toString() {
56         return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
57     }
58
59 }

  Spring配置文件:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4         xmlns:context="http://www.springframework.org/schema/context"
 5         xmlns:aop="http://www.springframework.org/schema/aop"
 6         xmlns:tx="http://www.springframework.org/schema/tx"
 7         xsi:schemaLocation="
 8         http://www.springframework.org/schema/beans
 9         http://www.springframework.org/schema/beans/spring-beans.xsd
10         http://www.springframework.org/schema/context
11         http://www.springframework.org/schema/context/spring-context.xsd
12         http://www.springframework.org/schema/tx
13         http://www.springframework.org/schema/tx/spring-tx.xsd
14         http://www.springframework.org/schema/aop
15         http://www.springframework.org/schema/aop/spring-aop.xsd">
16
17     <!-- 注册数据源:C3P0数据源 -->
18     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
19         <property name="driverClass" value="${jdbc.driverClass}" />
20         <property name="jdbcUrl" value="${jdbc.url}" />
21         <property name="user" value="${jdbc.user}" />
22         <property name="password" value="${jdbc.password}" />
23     </bean>
24
25     <!-- 注册JDBC属性文件 -->
26     <context:property-placeholder location="classpath:jdbc.properties"/>
27
28     <!-- 参考hibernate的主配置文件来配置 -->
29     <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
30         <property name="dataSource" ref="dataSource"/>
31         <property name="hibernateProperties">
32             <props>
33                 <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
34                 <prop key="hibernate.current_session_context_class"> org.springframework.orm.hibernate5.SpringSessionContext</prop>
35                 <prop key="hibernate.hbm2ddl.auto">update</prop>
36                 <prop key="hibernate.show_sql">true</prop>
37                 <prop key="hibernate.format_sql">true</prop>
38             </props>
39         </property>
40         <property name="packagesToScan" value="com.tongji.beans"/>
41     </bean>
42
43     <context:component-scan base-package="com.tongji"/>
44
45     <!-- 注册事务管理器 -->
46     <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
47         <property name="sessionFactory" ref="sessionFactory"/>
48     </bean>
49
50     <!-- 事务注解驱动 -->
51     <tx:annotation-driven transaction-manager="transactionManager"/>
52 </beans>

  至此,全注解开发完成。

时间: 2024-12-02 22:46:14

Spring--SSH--全注解开发的相关文章

SSH全注解开发

web.xml: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web

java spring mvc 全注解

本人苦逼学生一枚,马上就要毕业,面临找工作,实在是不想离开学校.在老师的教导下学习了spring mvc ,配置文件实在繁琐,因此网上百度学习了spring mvc 全注解方式完成spring的装配工作; 废话不多说了上干货,其实我也没怎么理解不过简单的运行了一个spring mvc 全注解项目,也不能说是全注解,因为保留了web.xml和spring-serlvet.xml文件,(可能有的童鞋会说,这样配置可能对以后的修改不方便,无法达到只修改配置文件就切换某些环境.其实不是,零配置文件只是修

springmvc3.2+spring+hibernate4全注解方式整合(四)

以上是工程文件,下面开始测试 package test.testservice; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.t

springmvc3.2+spring+hibernate4全注解方式整合(一)

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.

springmvc3.2+spring+hibernate4全注解方式整合(三)

service接口 package com.fangjian.core.platform.service; import com.fangjian.core.platform.po.User; public interface UserService { void saveUser(User user); } service实现 package com.fangjian.core.platform.service.impl; import org.springframework.beans.fa

springmvc3.2+spring+hibernate4全注解方式整合(二)

jdbc.properties #hibernate settings hibernate.show_sql=true hibernate.format_sql=true hibernate.cache.use_query_cache=true hibernate.cache.provider_class=net.sf.ehcache.hibernate.SingletonEhCacheProvider #mysql version database setting jdbc.driver=co

springMVC,spring,mybatis全注解搭建框架--第一步,让框架跑起来

自己从事java开发工作也有一年多了,自己却没有亲手搭建一个完整的框架.于是今天自己动手搭建一个,过程中遇到一些问题,倒腾了大半天终于搞定了. 现在给大家分享一下过程,自己也记录下来,以后学习参考使用. 我采用全注解的方式去搭建springMVC,spring,mybatis框架,同时自己也可以去配置xml,但是主要还是通过注解的方式来实现.参考的网上其它大神分享的方法,多多少少有些地方写的不清楚,也并不是完全通过注解去实现的. springboot可以真正说是零配置吧,后面我将给大家演示spr

Spring的IOC注解开发入门1

基本知识点如下: 引入注解约束,配置组件扫描 类上的注解: @Conponent  @Controller @Service @Repository 普通属性的注解   @value 对象属性的注解    @Resource   @Autowired  @Qualifier Bean生命周期,初始化与销毁: @PostConstruct @PreDestroy Bean作用范围:@Scope("prototype")  , 默认是singleton 1.创建web项目引入jar包 除了

spring mvc在注解开发下表单提交到不了Controller方法的解决手段

这个问题很诡异,不太懂为什么,但是知道如何解决,如果知道为什么的话希望能评论我下! 表单提交代码如下: <form class="form clearfix" action="${website}register" method="post"> <h1 class="title">智能码控门禁系统<span class="in">注册</span >/<

Spring的IOC注解开发入门2

注解方式设置属性的值 在我们IOC基于xml属性注入的方式中有(一般推荐set方法) 构造方法注入普通值:<constructor-arg>的使用 set方法注入普通值:<property>的使用   注入对象值:ref的使用 SPEL方式注入普通值与对象值 #{SPEL} P名称空间方式注入普通值与对象值 在我们IOC基于注解方式开发中 普通属性:Value 对象属性:AutoWired :设置对象类型的属性的值,按照类型注入.习惯是按照名称完成属性注入,那么和以下注解配合使用@