前一篇文章已经简述了SSH项目整合的大体流程,其中大部分是用配置文件完成的,稍微有些复杂。现在咱们把能用注解替换的用注解改一下,以减少代码复杂度。
一、其实能用注解改动的并不是很多,因为大部分都是必须的基础配置步骤,用原来的方法即可,下面一起来看一下可以改动,而且修改之后方便度大大提高的部分:
1,配置声明式事务
<!--声明式事务开始+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- 配置事务管理器 --> <!-- 此处用以sessionfactory依赖注入(比以前代码实现方便多了) -->
<bean id="myTxManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="mySessionFactory"/>
<!-- 事务管理器需要依赖注入sessionFactory -->
</bean>
<!-- 事务通知 事务通知需要依赖注入事务管理器 -->
<tx:advice id="txAdvice" transaction-manager="myTxManager"></tx:advice>
<!-- AOP配置(因为要用声明式事务) --> <!-- 改成用注解配置声明式事务 -->
<tx:annotation-driven transaction-manager="myTxManager"/>
<!--声明式事务结束 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
2,事务提交限制的配置方式(在service实现类的具体方法上家注解(只读不提交),默认是提交事务的)
@Transactional(readOnly=true) //只读 ,事务不提交
@Override
public List<User> list() {
return userDao.list();
}
5,注解把实体类的依赖注入方式 从bean、property 方式解放出来,使用注解即可(非常方便)
ps: @Component(Entity注解),@Repositories (Dao层注解),@Service (Service层注解) ------- 三种不同类型类的注解区分
二、下边是需要修改的部分:
3,组件扫描方式(不能够重复扫描,不然会有冲突)
3.1,app-root.xml(spring核心配置文件) 中组件扫描配置
<!-- Spring配置: 组件扫描(让Spring知道 哪些可以配置注解) -->
<context:component-scan base-package="com.xintouyun.ssh">
<!-- 组件扫描范围:ssh目录下 -->
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan> <!-- 除了Controller(!类型!)的都进行组件扫描 -->
3.2,app-servlet (Spring-mvc配置文件) 中扫描配置:
<!-- Spring配置: 组件扫描(让Spring知道 哪些可以配置注解)-->
<context:component-scan base-package="com.xintouyun.ssh" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan> <!-- 除了Controller(!类型!)的都不扫描 -->
4,原hibernate部分配置(只用修改 实体类映射方式 。xml-->class)
<property name="mappingResources"> <!-- 读取hbm.xml 配置文件,实现类和表的映射 -->
<list>
<value>com/xintouyun/ssh/entity/User.hbm.xml</value>
</list>
</property>