博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于已构建S2SH项目配置全注解方式简化配置文件
阅读量:5012 次
发布时间:2019-06-12

本文共 5175 字,大约阅读时间需要 17 分钟。

如果还不熟悉s2sh项目搭建的朋友可以先阅读

这两篇文章熟悉一下。

本文是基于以上两篇文章的基础构建的,以下给出全注解方式配置S2SH项目的参考步骤。

第一步:实体类映射数据库表,简化hibernate通过xml配置文件映射

首先我们新建实体类作为测试,包结构如图所示:

新建User到model包下,实体类字段信息如下所示:

package wjt.com.test.model;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;import javax.persistence.Temporal;import javax.persistence.TemporalType;import org.hibernate.annotations.GenericGenerator;import java.util.Date;@Entity@Table(name="wjt_user")public class User {        @Id    @Column(name="ID",length=32)    //主键生成策略    @GeneratedValue(generator = "paymentableGenerator")    //hibernate的主键生成策略,name属性与@GeneratedValue的generator = "paymentableGenerator"对应,    //strategy 指定具体生成器的类名(指定生成策略)    @GenericGenerator(name="paymentableGenerator",strategy="uuid")    private String id;        private String name;        private String types;        @Temporal(value=TemporalType.DATE)    private Data date;    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getTypes() {        return types;    }    public void setTypes(String types) {        this.types = types;    }    }

hibernate各注解的用途及其属性参考前辈的文章:

实体类准备完毕,我们需要将其交给hibernate工厂扫描映射到数据库表,需要在hibernate的session工厂中配置packagesToScan属性,给出applicationContect.xml配置如下:

update
org.hibernate.dialect.MySQL5InnoDBDialect
false
true
com.wjt.model

第二步:基于注解方式配置IOC

在原项目中service层、dao层中实现类添加注解完成bean对spring容器的注册,去掉采用set访问器属性注入的方式,增加注解声明,代码改写如下:

dao层:

package wjt.com.test.dao.impl;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import wjt.com.test.dao.TestDaoI;@Repository("testDao")//这里是bean注册到spring容器public class TestDaoImpl implements TestDaoI{        @Autowired//这里是将声明的bean注入,其中sessionFactory依旧是在配置文件中注册的    private SessionFactory sessionFactory;    private Session getCurrentSession() {        try {            return sessionFactory.getCurrentSession();        } catch (HibernateException e) {            return sessionFactory.openSession();        }    }    @Override    public void testDaoMethod() {        System.out.println("dao层测试方法...");        if(getCurrentSession()!=null) {            System.out.println("session工厂注入成功!");        }            }        }

service层:

package wjt.com.test.service.impl;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import wjt.com.test.dao.TestDaoI;import wjt.com.test.service.TestServiceI;@Service("testService")public class TestServiceImpl implements TestServiceI{        @Autowired    private TestDaoI testDao;        @Override    public void testServiceMethod() {        System.out.println("service层测试方法...");        testDao.testDaoMethod();    }}

action层:

package wjt.com.test.action;import org.apache.struts2.convention.annotation.Action;import org.apache.struts2.convention.annotation.Namespace;import org.apache.struts2.convention.annotation.Result;import org.springframework.beans.factory.annotation.Autowired;import com.opensymphony.xwork2.ActionSupport;import wjt.com.test.service.TestServiceI;@Namespace("/")@Action(value = "testAction", results = {         @Result(name = "success", location = "/index.jsp"),    })public class TestAction extends ActionSupport {    @Autowired    private TestServiceI testService;    public String execute() throws Exception {        System.out.println("struts==========================");        testService.testServiceMethod();        return "success";    }}

TestAction类名上方的注解在后文中有解释,这里先挂问号。

到这里还需要在applicationContext.xml中声明spring对注解的支持以及spring容器对已注册bean进行扫描完成属性的注入从而达到控制反转的目的,

在<beans></beans>节点下增加如下配置:

其中*号表示扫描wjt.com包及其子包下所有注册的bean。到这里spring+hibernate注解方式配置已全部完成,对上述注解不太熟悉的可以参考前辈文章:

第三步:struts2中action的注解方式配置

首先我们需要引入struts2对注解支持的jar包:

这个时候需要我们在TestAction类名上方添上刚才挂问号的注解,对于Action注解的解释请参考:

我们这里注解的意义为当TestAction中默认方法返回“success”时页面跳转到index.jsp

接着我们需要简化struts2的配置文件,给出简化后的配置文件如下:

第三步:测试

到这里一个完整的基于全注解方式配置s2sh项目就完成了,启动项目测试是否达到我们的要求:

一、项目启动数据库应当已建立一张wjt_user表

二、访问TestAction时应当跳转到index.jsp页面

为了验证测试我们在index.jsp的body标签内写入“这是Mr至简的第一个全注解方式配置S2SH项目”。

启动项目后数据库截图如下:

浏览器地址栏输入:http://localhost:8080/SSHDemo/testAction 请求后截图如下:

以上就是关于S2SH项目全注解配置的参考方案,有不合理的地方还请各位读者指出。

转载于:https://www.cnblogs.com/wujingtaocoding/p/7944806.html

你可能感兴趣的文章
【LeetCode】Flatten Binary Tree to Linked List
查看>>
读后感-浮生六纪
查看>>
执行指定路径的程序文件
查看>>
Leetcode-950 Reveal Cards In Increasing Order(按递增顺序显示卡牌)
查看>>
[Linux] 在 Linux CLI 使用 ssh-keygen 生成 RSA 密钥
查看>>
14款下载有用脚本的超酷网站
查看>>
LXC-Linux Containers介绍
查看>>
7.31实习培训日志-docker sql
查看>>
c#中使用servicestackredis操作redis
查看>>
ios app 真机crash报告分析
查看>>
CRC标准以及简记式
查看>>
SEO搜索引擎
查看>>
关于本地使用tomcat部署web应用,浏览器自动跳转为https的问题
查看>>
一、Text To Speech
查看>>
Java读取并下载网络文件
查看>>
github上构建自己的个人网站
查看>>
在word中粘贴的图片为什么显示不完整
查看>>
SQL Server 数据库的鼠标操作
查看>>
net软件工程师求职简历
查看>>
总线置顶[置顶] Linux bus总线
查看>>