s2sh注解配置
s2sh的注解的配置
Annotation
变化最大的是spring的配置文件;就是没有对应属性的注入部分;
标签命名空间:context;
<context:component-scan base-package="com.itcast.oa"></context:component-scan>
事务处理的部分也可以使用注解实现,将之前的配置就可以丢掉了;
<tx:annotation-driven transaction-manager="transactionManager"/>
1,首先,将action,service,dao所有层的所有类整到容器里面;
<context:component-scan base-package="com.itcast.oa"></context:component-scan>
在Dao上 @Respository("departmentDao")
在CommonDaoImpl上就不能继承HibernateDaoSupport,引入HibernateTemplate;
原因是:这里HibernateDaoSupport里面已经引入SessionFactory,提供了set,get方法,就不能使用注解了;
这里在HibernateTemplate上加@Resource(name="hibernateTemplate")
---
在Service上加@Service("departmentService"),这里在Dao上面加上@Resource(name="departmentDao")
--
在Action上加@Controller("departmentAction")@Scope("prototype") Service上@Resource;
--
2,在上面的里面有tx的注解扫描,事务的扫描;这里就可以采用在Service上加上缺省的事务管理;
@Transactional(readOnly=true) 隔离级别,传播属性;默认值;
在save,update,delete上@Transactional(readOnly=false)
3,HibernateTemplate需要配置;
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
------------
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate/hibernate.cfg.xml</value>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<context:component-scan base-package="com.itcast.oa"></context:component-scan>
<tx:annotation-driven transaction-manager="transactionManager"/>
同时会发现,如果在save,update,delete上没有加事务限制,就会报错;因为默认是只读的事务;
如果一个方法上有@Transactional这个类就创建代理对象,有了事务;
但是如果全部没有加@Transactional,就不会创建代理对象;就不存在事务;
就是只要有一个加有事务,就会创建代理对象;否则不会;是只读事务;
----
什么情况适合注解,什么情况适合配置文件?
基本类型不适合用注解,只需要赋值,框架内部分额不适合用注解;其他都可以使用注解配置实现引用;