之前学ssh框架整合的时候,没看视频,直接去网络上找那些整合好的东西,结果,很痛苦,要问为什么,因为那些看上去整合好的,不是要积分的不知道能不能运行的,就是根本不能运行的,只有零零散散的是能运行的,自己本来以为看了那些,在加上自己之前零零散散的看的关于struts2,hibernate,spring的知识就可以完成整合。
不过还是不行,可能和个人天资有关吧
现在终于在视频的指导下,将框架基本整合好了,下面我详说一下整合的步骤吧:
我之前是使用eclipse+maven进行操作的,现在使用sts+maven,sts是eclipse的一个插件,刚开始用,操作方法和eclipse一样,感觉除了上面安装的插件版本可以更高一点之外,并没有什么更加好用之类的,里面的sql文件竟然没有建立打开方式,format的快捷键也只有在java文件之中才比较灵敏一些。
开始的第一步是建项目:
然后在pom.xml添加相关联的jar包,对于这个,我是将学习好的成品jar包直接复制过来的
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>study.intergrationgroupId>
<artifactId>StrutsSpringHibernateartifactId>
<version>0.0.1-SNAPSHOTversion>
<description>SSH框架整合简单项目description>
<properties> <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<struts.version>2.5.12struts.version>
<spring.version>4.3.10.RELEASEspring.version>
<hibernate.version>5.2.2.Finalhibernate.version>
<mysql.version>5.1.34mysql.version>
properties>
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
<scope>testscope>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-coreartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.apache.strutsgroupId>
<artifactId>struts2-coreartifactId>
<version>${struts.version}version>
<exclusions>
<exclusion>
<groupId>org.javassistgroupId>
<artifactId>javassitartifactId>
exclusion>
exclusions>
dependency>
<dependency>
<groupId>org.apache.strutsgroupId>
<artifactId>struts2-spring-pluginartifactId>
<version>${struts.version}version>
dependency>
<dependency>
<groupId>org.apache.strutsgroupId>
<artifactId>struts2-convention-pluginartifactId>
<version>${struts.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-ormartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.hibernategroupId>
<artifactId>hibernate-coreartifactId>
<version>${hibernate.version}version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>${mysql.version}version>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>1.1.3version>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>fastjsonartifactId>
<version>1.2.38version>
dependency>
<dependency>
<groupId>org.aspectjgroupId>
<artifactId>aspectjweaverartifactId>
<version>1.8.10version>
dependency>
dependencies>
project>
首先进行对Spring是否成功配置进行检查
spring.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:cache="http://www.springframework.org/schema/cache"
xsi:schemaLocation="
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
http://www.springframework.org/schema/cache
http://www.springframework.org/schema/cache/spring-cache-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd">
<context:component-scan base-package="ssh1.service" />
<context:property-placeholder location="classpath:jdbc.properties" />
beans>
下面是进行测试需要在service包中建立相关类
package ssh1.service;
public interface UserServiceI {
public void test();
}
package ssh1.service.impl;
import org.springframework.stereotype.Service;
import ssh1.service.UserServiceI;
@Service("userService")
public class UserServiceImpl implements UserServiceI{
@Override
public void test() {
System.out.println("进行测试");
}
}
下面的测试类,放在test下面新建的test.ModelTest下
测试类下面我只写方法!
@Test
public void testSpring() {
ApplicationContext ac=new ClassPathXmlApplicationContext(new String[] {"classpath:spring.xml"});
UserServiceI userService=(UserServiceI)ac.getBean("userService");
userService.test();
}
使用junit插件运行之后,console中打印出进行测试的字样,并且在junit上面没有报错就代表spring配置好了
下面开始配置hibernate,首先需要建立好model下面的包,另外配置好配置文件
首先是jdbc.properties
jdbc.url=jdbc:mysql:///你使用的数据库?useSSL=true&characterEncoding=UTF-8
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.username=你的数据库账号
jdbc.password=你的数据库密码
hibernate.hbm2ddl.auto=update
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
hibernate.show_sql=true
hibernate.format_sql=false
sessionInfoName=sessionInfo
uploadFieldName=filedate
然后是spring-hibernate.xml,spring-hibernate整合的文件
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:cache="http://www.springframework.org/schema/cache"
xsi:schemaLocation="
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
http://www.springframework.org/schema/cache
http://www.springframework.org/schema/cache/spring-cache-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd">
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init">
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}prop>
<prop key="hibernate.dialect">${hibernate.dialect}prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}prop>
props>
property>
<property name="packagesToScan">
<list>
<value>ssh1.modelvalue>
list>
property>
bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
property>
bean>
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" />
tx:attributes>
tx:advice>
<aop:config>
<aop:pointcut id="transactionPointcut" expression="execution(* ssh1.service..*Impl.*(..))" />
<aop:advisor advice-ref="transactionAdvice" pointcut-ref="transactionPointcut" />
aop:config>
beans>
下面是在model包下面建立与table类
这里是使用注解配置
@Entity(name = "tuser")
public class Tuser {
private String id;
private String name;
private String pwd;
private Set roles=new HashSet();
public Tuser() {
super();
}
public Tuser(String id) {
super();
this.id = id;
}
public Tuser(String id, String name, String pwd) {
super();
this.id = id;
this.name = name;
this.pwd = pwd;
}
@Id
@Column(name = "id", unique = true, nullable = false, length = 36)
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Column(name = "name", nullable = false, length = 50)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column(name = "pwd", nullable = false, length = 36)
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@ManyToMany
public Set getRoles() {
return roles;
}
public void setRoles(Set roles) {
this.roles = roles;
}
}
同时开始进行测试,在dao下面的包建立接口UserDaoI
接口中建立一个用来测试的方法save();
public interface UserDaoI {
public Serializable save(Tuser t);
public void query(String hql);
public List findAll();
public List login(Tuser user);
}
在Impl中实现该方法
@Repository("userDao")
public class UserDaoImpl implements UserDaoI {
private HibernateTemplate hibernateTemplate;
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
@Resource(name = "hibernateTemplate")
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
@Override
public Serializable save(Tuser t) {
return this.getHibernateTemplate().save(t);
}
然后在service下的UserServiceI中同样添加一个方法
public Serializable save(Tuser t);
在UserServiceImpl中进行实现
@Override
public Serializable save(Tuser t) {
return userDao.save(t);
}
然后开始测试
@Test
public void testSpring2() {
ApplicationContext ac=new ClassPathXmlApplicationContext(new String[] {"classpath:spring.xml","classpath:spring-hibernate.xml"});
UserServiceI userService=(UserServiceI)ac.getBean("userService");
Tuser t=new Tuser();
t.setId(UUID.randomUUID().toString());
t.setName("admin");
t.setPwd("admin");
userService.save(t);
}
然后查看数据库,数据库中数据就此插入
就此Spring和Hibernate的整合就简单完成了
下一步:http://blog.csdn.net/qq_36399629/article/details/78081074