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

白城网站建设线上推广外包公司

白城网站建设,线上推广外包公司,手机免费资源下载网站模板,荷兰网站开发价格Aware 接口用于注入一些与容器相关信息,例如: ​ a. BeanNameAware 注入 Bean 的名字 ​ b. BeanFactoryAware 注入 BeanFactory 容器 ​ c. ApplicationContextAware 注入 ApplicationContext 容器 ​ d. EmbeddedValueResolverAware 注入 解析器&a…

Aware 接口用于注入一些与容器相关信息,例如:

​ a. BeanNameAware 注入 Bean 的名字

​ b. BeanFactoryAware 注入 BeanFactory 容器

​ c. ApplicationContextAware 注入 ApplicationContext 容器

​ d. EmbeddedValueResolverAware 注入 解析器,解析${}

为什么有了@autowired还需要用Aware,因为autowired会存在失效的问题

在 Spring 框架里,@Autowired和Aware接口有着不同的设计目的,它们并非简单的替代关系。下面详细分析它们的差异以及@Autowired可能失效的场景。

1. @Autowired 的工作原理与局限
@Autowired借助依赖注入(DI)的方式,把 Spring 容器中的 bean 自动注入到目标组件里。不过,它存在以下几方面的限制:生命周期的制约:@Autowired主要在 bean 的实例化和属性填充阶段发挥作用。要是你需要在 bean 初始化的更早阶段获取某些资源,@Autowired就无法满足需求了。
静态环境的不适用:由于静态变量或方法不属于某个具体的 bean 实例,所以@Autowired不能直接对静态字段进行注入。
ApplicationContext 依赖问题:如果要获取ApplicationContext本身,使用@Autowired会形成循环依赖,比如在自定义 bean 处理器中就可能遇到这种情况。2. Aware 接口的作用
Aware接口是 Spring 提供的一种回调机制,它允许 bean 在初始化过程中获取容器的特定资源。常见的Aware接口有:ApplicationContextAware:能获取ApplicationContext。
BeanNameAware:可以获取当前 bean 的名称。
EnvironmentAware:能够获取环境配置信息。

简单的来说

@Autowired的解析依赖于 bean 后处理器,属于扩展功能。也就是说@Autowired注解的功能实现是借助 Spring 的
bean 后处理器来完成的,在 bean 的生命周期中,@Autowired的解析处理是在特定的扩展流程里进行的。

Aware 接口属于内置功能,无需添加任何扩展 Spring 就能识别。这意味着在 Spring 容器的核心流程中,Aware
接口相关方法会被调用,在某些场景下,因为@Autowired属于扩展功能,可能会在一些特殊情况下失效,而作为内置功能的 Aware
接口不会出现这种问题。例如在某些场景下,使用 Aware 接口注入 ApplicationContext
能成功,但是使用@Autowired注入 ApplicationContext 却会失败 。

public class MyBean implements BeanNameAware, ApplicationContextAware, InitializingBean {@Overridepublic void setBeanName(String name) {log.debug("当前bean:" + this + ",实现 BeanNameAware 调用的方法,名字叫:" + name);}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {log.debug("当前bean:" + this + ",实现 ApplicationContextAware 调用的方法,容器叫:" + applicationContext);}@Overridepublic void afterPropertiesSet() throws Exception {log.debug("当前bean:" + this + ",实现 InitializingBean 调用的方法,初始化");}@Autowiredpublic void aaa(ApplicationContext applicationContext) {log.debug("当前bean:" + this +",使用 @Autowired 容器是:" + applicationContext);}@PostConstructpublic void init() {log.debug("当前bean:" + this + ",使用 @PostConstruct 初始化");}
}
public class TestAwareAndInitializingBean {@Testpublic void testAware1() throws Exception {GenericApplicationContext context = new GenericApplicationContext();context.registerBean("myBean", MyBean.class);context.refresh();context.close();}
}

在这里插入图片描述

http://www.cadmedia.cn/news/10195.html

相关文章:

  • 手机端网站开发流程seo排名优化app
  • 建设企业官方网站官网网站制作的步骤
  • 搭建门户网站网络推广平台排名
  • 免费正能量的软件ppt南昌seo计费管理
  • 上海人才网最新招聘信息官方网站网站域名备案查询
  • 网站建设联系方式网络推广工作是做什么的
  • 微信公众号排版编辑seo网站推广教程
  • 网站设计建设网站百度引流推广怎么收费
  • 网站设计与制作的过程软文兼职10元一篇
  • 工程中标查询网站自己做seo网站推广
  • 网站如何引导客户口碑营销的成功案例
  • 选择佛山网站设计app推广注册招代理
  • 做网站是什么工作中国搜索网站排名
  • 商丘网站制作公司关键词出价计算公式
  • 工厂订单管理软件品牌关键词优化哪家便宜
  • 快速做网站教程搜索引擎技术基础
  • 中国外贸网西安seo排名外包
  • 德州 网站建设广告营销
  • 主题网站界面设计买链接
  • 实时开奖走势网站建设seo包年优化平台
  • 制作一个html网页深圳谷歌优化seo
  • 网站建设和电商区别网站优化方法
  • 四川省建设厅官方培训网站优化是什么梗
  • 移动建站公司2023最火的十大新闻
  • web个人网站怎么做东莞网络推广及优化
  • led灯散热片技术支持 东莞网站建设做什么推广最赚钱
  • 贵港网站建设动态网络营销服务
  • 网站建设 蜀美网络网络营销相关工作岗位
  • 河南信阳网站建设公司电话知乎关键词排名工具
  • 政府网站建设构想网站优化seo怎么做