当前位置: 首页 > news >正文

wordpress 底部备案号网站seo服务

wordpress 底部备案号,网站seo服务,教师网络培训心得体会,音乐网站禁止做浅度链接今天遇到一个对我来说很奇葩的错误,我想在Service中注入bean,我这里使用了Autowired和Resource都不能注入,导致初始化失败,使用了getBean()方法就可以注入。从来没有遇到过这个问题。后来我查询了一下,才明白了原理。我…

今天遇到一个对我来说很奇葩的错误,我想在Service中注入bean,我这里使用了@Autowired和@Resource都不能注入,导致初始化失败,使用了getBean()方法就可以注入。从来没有遇到过这个问题。后来我查询了一下,才明白了原理。我的getBean()方法如下:

@Service
public class BeanUtils implements ApplicationContextAware {private static ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {this.applicationContext = applicationContext;}public static <T> T getBean(Class<T> clazz) {return applicationContext.getBean(clazz);}
}

@Autowired

特性:

这是Spring框架提供的注解,支持自动依赖注入。
可以应用于构造函数、方法、字段等。
注入方式:

按类型注入:Spring会在容器中查找与类型匹配的Bean。
可结合@Qualifier:如果存在多个同类型的Bean,可以使用@Qualifier来指定具体的Bean。
required属性:

默认情况下,@Autowired的required属性为true,即要求必须找到对应的Bean。如果找不到,Spring会抛出异常。
设置为false后,如果找不到对应的Bean,注入的字段会被赋值为null。

@Autowired 和 @Resource 的区别

@Autowired

  1. 特性

    • 这是Spring框架提供的注解,支持自动依赖注入。
    • 可以应用于构造函数、方法、字段等。
  2. 注入方式

    • 按类型注入:Spring会在容器中查找与类型匹配的Bean。
    • 可结合 @Qualifier:如果存在多个同类型的Bean,可以使用@Qualifier来指定具体的Bean。
  3. required属性

    • 默认情况下,@Autowiredrequired属性为true,即要求必须找到对应的Bean。如果找不到,Spring会抛出异常。
    • 设置为false后,如果找不到对应的Bean,注入的字段会被赋值为null

@Resource

  1. 特性

    • 这是来自Java EE的注解,常用于JNDI资源的注入。
    • 也可以用于字段或方法。
  2. 注入方式

    • 按名称优先:默认情况下,@Resource会首先根据字段名查找Bean。如果找不到,再按类型查找。
    • 如果使用name属性,可以显式指定要注入的Bean名称。
  3. 没有required属性

    • @Resource没有类似@Autowiredrequired属性,无法控制注入失败时的行为。

为什么有时注解无法注入Bean?

  1. 注入时机

    • Spring的依赖注入发生在容器启动时,如果在构造器中试图注入的Bean尚未初始化,可能导致注入失败。这在Bean之间相互依赖时尤为明显。
  2. 作用域问题

    • 如果一个单例Bean试图注入一个原型Bean,Spring可能只会注入单例Bean的一个实例,而不是每次调用都获取一个新的原型Bean。这种情况下,使用getBean可以获取最新的原型实例。
  3. 条件性注入

    • 使用@Profile@Conditional等注解时,某些Bean可能会因条件未满足而未被创建,导致注入失败。这时手动调用getBean可以获取已经创建的Bean。
  4. 依赖顺序

    • 在复杂的依赖关系中,可能会出现注入顺序问题。如果一个Bean依赖于另一个尚未创建的Bean,Spring可能无法正确处理这类依赖,导致注入失败。手动调用getBean可以避开这个问题。

示例

@Service
public class A {@Autowiredprivate B b; // 如果B尚未初始化,这里可能会失败public void doSomething() {// 使用b的功能}
}@Service
public class B {@Autowiredprivate A a; // A依赖B,可能导致循环依赖
}
http://www.mmbaike.com/news/44401.html

相关文章:

  • 有人用dw做网站吗百度惠生活商家入驻
  • 北京网站备案要求吗站长工具无忧
  • 如何做视频教程网站网站快速排名优化哪家好
  • 手机微网站与微官网微商如何引流与推广
  • 阿里云服务器做盗版电影网站seo和sem的联系
  • 党建网站建设体球网足球世界杯
  • 做移门的网站东莞做网站最好的是哪家
  • 用vps刷网站流量要怎么做保定seo推广外包
  • 聊城网站建设包括哪些域名站长工具
  • php做网站开发有什么框架成都公司网站seo
  • 建站平台取名字百度电话客服24小时
  • 做门户网站的营业范围网络营销的内容
  • 微信客户管理系统平台官网安卓优化大师最新版下载
  • 嘉定网站开发网站推广的方式有哪些
  • 做房源网站搜狗网站收录提交入口
  • 企业营销型网站应该有哪些内容seo怎么快速提高排名
  • 泰州模板建站哪家好seo哪家好
  • 做旅游网站多少钱专业网站优化排名
  • 企业logo设计网站中国产品网
  • 绍兴网站设计企业seo推广外包
  • 制作网站能挣钱个人怎么创建网站
  • 有什么较好的网站开发框架seo优化网站源码
  • 做网站自动赚钱吗seo在线外链
  • 外包加工网站有哪些百度学术论文查重官网入口
  • 高邮做网站搜狗识图
  • 陕西西安网站建设seo岗位培训
  • 重庆做网站推广公司友链大全
  • 最新远程网站建设服务百度电话客服24小时人工服务热线
  • 网站开发项目风险seo及网络推广招聘
  • 什么公司做的网站好代写1000字多少钱