全注解帮我们省去了大量的配置文件,但是必要的配置还是不可少的
- spring.xml配置文件中需要配置:
- dataSource(数据源)
- sessionFactory(会话工厂)
- hibernateTemplate(HibernateTemplate类)
- transactionManager(事务管理类,不用事务的话可省去)
- <context:annotation-config></context:annotation-config>(声明用注解进行依赖注入)
- <context:component-scan base-package="com" />(告诉spring容器扫描com下的包,对使用注解的bean进行管理)
- <tx:annotation-driven transaction-manager="transactionManager"/>(声明使用注解的事务)
spring.xml完整代码:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<!-- 用注解进行依赖注入 -->
<context:annotation-config></context:annotation-config>
<!-- 用注解让spring管理bean -->
<context:component-scan base-package="com" />
<!-- 注解的事务 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- 配置数据源 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql:///ssh621"></property>
<property name="username" value="root"></property>
<property name="password" value=""></property>
</bean>
<!-- 配置会话工场 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>com.bmh.po.League</value>
<value>com.bmh.po.Team</value>
<value>com.bmh.po.ChampionShip</value>
<value>com.bmh.po.Group</value>
</list>
</property>
</bean>
<!-- 配置hibernateTemplate类 -->
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<constructor-arg index="0">
<ref bean="sessionFactory" />
</constructor-arg>
</bean>
<!-- 配置事务管理类 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
</beans>
需要注意的是:
- sessionFactory中没用mappingResources这个属性了,取而代之的是annotatedClasses,因为实体bean同样使用了注解,不再需要映射文件了
- sessionFactory对应的class变了,这里需要的是支持注解的类
2. struts.xml配置文件中的package标签中的配置也都不用了,struts.xml中基本可以不用写什么
3. web.xml不变
4. action层的类:BmhAction的注解
@Controller("bmhAction")//声明是控制层的组件,名为bmhAction,不指定的话默认是类的简单名的第一个字母小写
@Namespace("/")//声明命名空间,相当于struts.xml中<package namespace="/">
@Results({//如果return的字符串为"test"则转到testDirection.jsp
@Result(name="test",location="/WEB-INF/test/testDirection.jsp"),
@Result(name="error",location="/WEB-INF/test/error.jsp")
})
@ExceptionMappings({//如果方法中出现该异常则返回"error",error根据上面的配置,让浏览器跳转
@ExceptionMapping(exception = "java.lang.Exception",result="error")
})
//这里要继承ActionSupport,不然可能出现找不到action的错误
public class BmhAction extends ActionSupport{
@Resource(name = "bmhService")//依赖注入,默认按名称装配,如果没有匹配的才按类型装配,
//这里我直接指明name=,就只能按名称装配了
private IBmhService bs;
5. service层的类:BmhService的注解
@Service("bmhService")//声明是业务层的组件
@Transactional//对类中所有方法采用默认的事务管理
public class BmhService implements IBmhService {
@Resource(name = "bmhDao")
private IBmhDao bd;
//也可以写着某些方法上
@Transactional(propagation=Propagation.REQUIRED)
public void testTx(){
bd.testTx1();
bd.testTx2();
}
6. DAO层的类:BmhDao的注解:
@Repository("bmhDao")
public class BmhDao implements IBmhDao {
@Resource(name = "hibernateTemplate")
private HibernateTemplate ht;
7. 最后,还要对实体类进行注解:
@Entity//声明式实体类
@Table(name="groupinfo")//声明对应的表
public class Group {
@Id//该属性对应的字段为主键
@GeneratedValue(generator="group")//采用名为group的生成策略
@GenericGenerator(name="group",strategy="native")//主键生成策略
@Column(name="groupid")//数据库中对应的字段名
private int groupId;
@Column(name="groupname")//普通的字段
private String groupName;
注意,上面的@Entity和@Table注解导入的是javax包下的类而不是hibernate的
分享到:
相关推荐
很全的ssh全注解环境搭建,各个配置文件,以及dao层,业务层,action控制层
整合使用最新版本的三大框架(即Struts2...参考文档:(感谢下边的两位原创作者,另外我在结合两个优点的基础之上,把所有的配置换成了注解的配置方案。) http://blog.csdn.net/songanling/article/details/22454973 ...
struts2+hibernate+spring很详细的全注解资源配置
关于ssh的注解配置,通过学习此文档,了解ssh的配置问题
SSH框架整合,全jpa注解真正的零配置。 struts2.3.8 spring3.2 hibernate4.1.9. 带有分页,全局异常,权限拦截器,session过滤等功能。 内有jar包。导入开发工具后部署既可跑起来。已做了简单的数据库操作功能。供...
ssh2注解配置,全部是注解配置,struts2和hibernate3和spring2.5全部是注解配置,,访问路径为http://localhost:8080/mytest/student/findAll.action
SSH框架整合,全jpa注解真正的零配置。 struts2.3.8 spring3.2 hibernate4.1.9. 带有分页,全局异常,权限拦截器,session过滤等功能。 内有jar包。导入开发工具后部署既可跑起来。已做了简单的数据库操作功能。供...
ssh全注解项目(一对一,一对多,多对多),hibernate的注解配置及映射关系
SSH全注解零配置整合(官方最新包) struts2.3.16 spring4.0.2 hibernate4.3.4 jquery2.1.0
使用eclipse工具,用SSH零配置全注解实现简单登录
基于maven的Spring3、Struts2.3、Hibernate4.1.9 最新全注解整合框架,完美运行,包括struts配置文件的常用解释(可以实现零配置),hibernate4的新用法和声明式的AOP事物控制编写。供大家学习,对全注解的方式不明白...
SSH 整合原代码 包括2种方式:注解&xml;配置 (已测试, 原创) 包含所需的lib
自己刚搭建的,比较简单,大家可以参考下,先配置pom文件,然后是spring和hibernate属性文件的整合,然后是struts和web文件。我用的是tomcat7发布的,需要在maven的setting中设置下server,在tomcat7的conf下tomcat-...
对初学者很好的框架学习项目SSH 详细注解采用heibernate注解完成
struts2+hibernate+spring无配置架构
SSH整合,纯注解,包含事务,零配置,代码高度复用