@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")