Spring中Bean的注册与注入——注解方式

<beans>
    // 注解Autowired的注解处理器
    <bean class="....AutowiredAnnotationBeanPostProcessor" />
    // 注解Resouce、PostConstruct、PreDestroy的注解处理器,符合JSR-250标准的注解
    <bean class="....CommonAnnotationBeanPostProcessor" />
    // 注解PersistenceUnit、PersistenceContext的注解处理器
    <bean class="....PersistenceAnnotationBeanPostProcessor" />
    // 注解Required的注解处理器
    <bean class="....RequiredAnnotationBeanPostProcessor" />

    // 此句可直接代替上述四个配置
    <context:annotation-config />

    // 使用上述注解的类必须先被注册为bean,开启注解扫描,上述所有功能用如下一句话完成
    // 可扫描类前的注解Component、Repository、Service、Controller,四个注解可将其标注的类注册为bean
    <context:component-scan base-package="..*" />

    // 完成aop的注解Aspect、Pointcut、Before、After、Around的注解处理器,默认false使用jdk动态代理,true使用cglib
    <aop:aspectj-autoproxy proxy-target-class="true" />
</beans>

// 注解Component标注任何类,其扩展Repository标注dao、Service标注服务、Controller标注控制器,参数为bean的id
// 注解Scope指定bean的作用域,默认singleton,如果dao、service、controller全部使用默认单例,在设计时就必须规避并发问题
// 同一个实例多线程会共享成员属性,局部属性为线程独有,由此在设计dao、service、controller时,用户自己定的变量必须为局部
@Repository("xxDao")
@Scope("singleton")
public class XxDaoImpl implements XxDao {
    ..
}

@Service("yyServiceRpc")
public Class YyServiceRpc {
    // 外部服务
    public YyService yyService;

    ..
}

@Service("xxService")
public class XxServiceImpl implements XxService {
    // 默认按属性名寻找匹配的bean,找不到按属性类型寻找匹配的bean
    // 可通过参数使其按指定的名字寻找匹配的bean,找不到报错,不会再按属性类型寻找匹配
    @Resource(name = "xxDao")
    XxDao xxDao;

    // 注解Autowired按属性类型寻找匹配的bean,参数required设置允许找不到bean,一般仅在测试用
    // 若匹配类型的bean有多个会抛异常,注解Qualifier指定按给定的名字寻找匹配的bean
    @Autowired(required = false)
    @Qualifier("yyServiceRpc")
    YyServiceRpc yyServiceRpc;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值