热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

《Spring5学习》02装配Bean之基于JavaConfig装配Bean

2019独角兽企业重金招聘Python工程师标准尽管在大部分场景下通过组件扫描和自动装配实现Bean自动化配置是更为推荐的方式,但是也存在无法使用自动化装配的场

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

    尽管在大部分场景下通过组件扫描和自动装配实现Bean自动化配置是更为推荐的方式,但是也存在无法使用自动化装配的场景,例如当你需要为一些第三方库中的组件类创建Bean装配到你的应用中,这时候是无法在类代码中添加注解因此也就无法使用自动化配置方案了。在这种情况下可以推荐使用JavaConfig的方式进行显示装配,相比XML它是更好的解决方案,更安全且容易重构。JavaConfig类通常应该作为配置类放在单独的包中与处理程序逻辑的类区分开。使用JavaConfig装配Bean包括如下步骤:

 

1 - 创建配置类,为其添加@Configuration注解

@Configuration
public class MemcachedConfig {}

2 - 声明简单的Bean

@Configuration
public class MemcachedConfig {@Beanpublic MemcachedService memcacheService(){return new MemcachedService();}}

    要在JavaConfig中声明Bean,我们需要编写一个方法,该方法会创建所需类型的实例,然后为该方法添加@Bean注解。@Bean注解会告诉Spring该方法将会返回一个对象,该对象会注册为Spring上下文中的Bean,默认情况下,Spring容器中本方法创建的Bean的ID与方法名相同,如果想修改Bean的名称既可以通过修改方法名也可以通过@Bean注解的name属性指定

 

3 - 借助JavaConfig实现依赖注入

    在JavaConfig中装配有依赖关系的Bean的方法有以下几种:

1)方法1,引用依赖Bean的创建方法

@Configuration
public class MemcachedConfig {@Beanpublic MemcachedClient memcachedClient(){return new MemcachedClient();}@Beanpublic MemcachedService memcacheService(){return new MemcachedService(memcachedClient());}}

注意这里memcachedClient的实例Bean并不是通过调用memcachedClient()方法获取的,因为在memcachedClient()方法被@Bean注解修饰,Spring在第一次调用该方法加载Bean之后会拦截所有对该方法的调用并直接返回返回该方法所创建的Bean

2)方法2,将依赖Bean作为方法参数传入

@Configuration
public class MemcachedConfig {@Beanpublic MemcachedClient memcachedClient(){return new MemcachedClient();}@Beanpublic MemcachedService memcacheService(Memcached memcachedClient){return new MemcachedService(memcachedClient);}}

    这种方式引用依赖Bean通常是我们推荐的方式他不要求依赖Bean与该类的声明放在同一个配置类中,甚至不要求依赖Bean必须采用JavaConfig声明

    基于JavaConfig装配Bean可以组合使用@Bean和@Qualifier、@Primary或自定义注解处理歧义Bean


转:https://my.oschina.net/zhangyq1991/blog/1926648



推荐阅读
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • 突破MIUI14限制,自定义胶囊图标、大图标样式,支持任意APP
    本文介绍了如何突破MIUI14的限制,实现自定义胶囊图标和大图标样式,并支持任意APP。需要一定的动手能力和主题设计师账号权限或者会主题pojie。详细步骤包括应用包名获取、素材制作和封包获取等。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有