- 开启注解
<!--1. 注解式开发 -->
<!--1) 注解驱动 -->
<context:annotation-config/>
<!--2) 用注解方式注入bean,并指定查找范围:com.zking.ssh2及子子孙孙包-->
<context:component-scan base-package="com.zking.oa"/>
- 常用注解
-
@Repository
将DAO类声明为Bean -
@Service
通常作用在业务层 -
@Constroller
通常作用在控制层,将在springMVC中使用 -
@Component
是一个泛化的概念,仅仅表示spring中一个组件(Bean),可以作用在任何层次 -
@Scope
模式声明(singleton|prototype) -
@Autowired
将自动在代码上下文中找到和其匹配(默认是类型匹配)的Bean,并自动注入到相应的地方去 -
@Resource
@Resource的装配顺序:
1、@Resource后面没有任何内容,默认通过name属性去匹配bean,找不到再按type去匹配
2、指定了name或者type则根据指定的类型去匹配bean
3、指定了name和type则根据指定的name和type去匹配bean,任何一个不匹配都将报错 -
@Transactional
注解配置事务,个人感觉写XML配置声明式事务更加简单
- @Autowired和@Resource两个注解的区别:
- @Autowired默认按照byType方式进行bean匹配,@Resource默认按照byName方式进行bean匹配
- . @Autowired是Spring的注解,@Resource是J2EE的注解,这个看一下导入注解的时候这两个注解的包名就一清二楚了
- Spring属于第三方的,J2EE是Java自己的东西,因此,建议使用@Resource注解,以减少代码和Spring之间的耦合。
- Base模块注解
- BaseDAO
@Component
@Scope("singleton")
@Autowired
setHibernateTemplateOverride(HibernateTemplate hibernateTemplate)//添加一个setXxx方法解决公共属性HibernateTemploate的注入问题,方法名可随便起
- BaseBiz
@Component
@Scope("singleton")
- BaseAction
//@Component//不用加此注解
@Scope("prototype")
- Spring Test+JUnit完美组合
- 在工程的pom文件中增加spring-test的依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
- 使用springframework提供的单元测试新建测试类,并在该类上加上两个注解:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath*:ApplicationContext.xml"})
- 在执行单元测试时,为了避免产生脏数据,可将测试单元设置成事务回滚
@Rollback(value = true|false)//true回滚事务,false提交事务
@Transactional(transactionManager = "transactionManager")