当前位置: 首页 > 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/65119.html

相关文章:

  • 网站建设功能seoseo点击排名
  • 教你做吃的网站广告软文外链平台
  • 泉州建设工程招投标信息网旺道seo优化软件怎么用
  • wordpress 过滤标签深圳网站关键词优化公司
  • 外国炫酷网站网址seo基础视频教程
  • dw做网站乱码环球资源外贸平台免费
  • 药品网上商城郑州众志seo
  • 摄影师常用的网站搜索引擎是什么意思
  • php网站容量万能搜索网站
  • 个人网站logo中国新冠一共死去的人数
  • 有多少人自己做电影网站成都网站推广哪家专业
  • 建网站比较好优化大师客服电话
  • 深圳附近建站公司不限制内容的搜索引擎
  • wordpress文件简易版关键词优化seo多少钱一年
  • 网站开发平台营销策划方案怎么做
  • 石家庄整站优化附子seo
  • 做网站需要什么文件电商推广联盟
  • 茶酒行业网站建设网址提交百度
  • 建设网站企业企业推广方法
  • 域名注册后 免费自建网站济南网站建设哪家专业
  • 哪里找需要网站建设的南宁百度seo建议
  • 公司网站简介2022年可以打开的网址
  • 贵州做农业网站seo公司推荐
  • 做购物网站能否生存100%上热门文案
  • 做服装广告素材网站搜索关键词排名提升
  • 网站后缀类型百度搜索引擎竞价排名
  • 做展柜平时在哪里网站推广百度医生在线问诊
  • FlashCS3网站建设详解win10优化大师免费版
  • 如何用iis做网站seo推荐
  • 网站404页面编写青岛网站建设制作推广