Spring Annotation 详解 .

(1) 、<context:component-scan base-package="*.*" />
 该配置隐式注册了多个对注解进行解析的处理器,如:
 AutowiredAnnotationBeanPostProcessor     
 CommonAnnotationBeanPostProcessor
 PersistenceAnnotationBeanPostProcessor   
 RequiredAnnotationBeanPostProcessor
 其实,注解本身做不了任何事情,和XML一样,只起到配置的作用,主要在于背后强大的处理器
 其中就包括了<context:annotation-config/>配置项里面的注解所使用的处理器
 所以配置了<context:component-scan base-package="">之后,便无需再配置<context:annotation-config>


(2)、@Component、@Repository、@Service、@Controller、@Autowired、@Resource
 而Spring2.5就为我们引入了组件自动扫描机制
 它可以在classpath下寻找标注了@Service、@Repository、@Controller、@Component注解的类
 并把这些类纳入Spring容器中管理,它的作用和在XML中使用bean节点配置组件是一样的
 使用自动扫描机制,则需配置<context:component-scan base-package="com.jadyer"/>启动自动扫描
 其中base-package指定需要扫描的包,它会扫描指定包中的类和子包里面类
 @Service用于标注业务层组件
 @Repository用于标注数据访问组件,即DAO组件
 @Controller用于标注控制层组件,如Struts中的Action
 @Component泛指组件,当组件不要好归类时,可以使用这个注解进行标注
 1、可以使用诸如@Service("personDao")修改bean名称,而它默认的是将首字母小写的类名作为<bean>名称
 2、若要更改<bean>作用域的话,可以使用@Scope("prototype")注解来修改<bean>作用域

 一般使用@Resource注解,而不要使用@Autowired注解
 因为@Autowired注解是Spring提供的,而@Resource注解是J2EE提供的
 在JDK6中就已经包含@Resource注解了,所以它没有跟Spring紧密耦合


(3)、<tx:annotation-driven />
 @Transactional 注解可以被应用于接口定义和接口方法、类定义和类的 public 方法上。
 Spring团队的建议是你在具体的类(或类的方法)上使用 @Transactional 注解,而不要使用在类所要实现的任何接口上。
 @Service
 @Transactional(rollbackFor=Exception.class)   //对当前类的所有方法起作用
 @SuppressWarnings("serial")
 public class ButtonBo extends GlobalBo {
  ....
  @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true) //具体方法上
    public Button findButton(String buttonid) throws BaseException {
     return hibernateEntityDao.get(Button.class, buttonid);
   }
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值