importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;/** Spring 的组件扫描默认是不启用的,需要显式配置启用组件扫描去寻找被 @Component 注解修饰的组件类,并为其创建 bean 实例。

**/

/** 标记类 CDPlayerConfig 是 Spring 的配置类,通过 java 代码定义 Spring 的装配规则。

* 该类应该包含在Spring应用上下文中如何创建bean的细节。

**/@Configurationpublic classCDPlayerConfig {/** 要在 JavaConfig 中声明 bean ,我们需要编写一个方法,这个方法会创建所需类型的实例,然后给这个方法添加 @Bean 注解。

*

* @Bean 注解会告诉 Spring 这个方法将会返回一个对象,该对象要注册为 Spring 应用上下文中的 bean 。

* 方法体中包含了最终产生 bean 实例的逻辑。

*

* 默认,bean 的 ID 和方法名是一样的,如下 bean 的 ID 为 sgtPeppers 。

* 如果想手动为 bean 指定一个 ID ,可以使用 @Bean 的 name 属性,如:

* @Bean(name="lonelyHeartsClubBand") **/@BeanpublicCompactDisc sgtPeppers() {return newSgtPeppers();

}//这里是使用 Java 创建 bean,因此我们可以发挥 Java 提供的所有功能,只要最终生成一个 CompactDisc 实例即可。例如:

@BeanpublicCompactDisc randomBeatlesCD() {

CompactDisc cd;int choice = (int) Math.floor(Math.random() * 4);switch(choice) {case 1:

cd= newSgtPeppers();break;case 2:

cd= newWhiteAlbum();break;case 3:

cd= newHardDaysNight();break;default:

cd= newRevolver();break;

}returncd;

}/** Spring 装配方式一:

* 在JavaConfig中装配bean的最简单方式就是引用创建bean的方法。

**/@BeanpublicCDPlayer cdPlayer() {//return new CDPlayer(sgtPeppers());

return new CDPlayer(newWhiteAlbum());

}/** Spring 装配方式二:

* 当 Spring 调用 cdPlayer() 创建 CDPlayer bean 的时候,它会自动装配一个 CompactDisc 到配置方法之中。

* 然后,方法体就可以按照合适的方式来使用它。

*

* 通过这种方式引用其他的 bean 通常是最佳的选择,因为它不会要求将 CompactDisc 声明到同一个配置类之中。

* 在这里甚至没有要求 CompactDisc 必须要在 JavaConfig 中声明,

* 实际上它可以通过组件扫描功能自动发现或者通过 XML 来进行配置。

* 你可以将配置分散到多个配置类、XML 文件以及自动扫描和装配 bean 之中,

* 只要功能完整健全即可。不管 CompactDisc 是采用什么方式创建出来的,

* Spring 都会将其传入到配置方法中,并用来创建 CDPlayer bean 。

*

* 当配置类中有多个同类型的 bean 时,此时可以使用 @Qualifier 注解来指定参数注入的是哪一个具体的 bean 。 **/@Beanpublic CDPlayer cdPlayer(@Qualifier("randomBeatlesCD") CompactDisc compactDisc) {return newCDPlayer(compactDisc);

}/** 我们也可以采用属性赋值的方式来注入依赖值,这里所存在的可能性仅仅受到Java语言的限制。

**/

//@Bean//public CDPlayer cdPlayer(@Qualifier("sgtPeppers") CompactDisc compactDisc) {//CDPlayer cdPlayer = new CDPlayer();//cdPlayer.setCd(compactDisc);//return cdPlayer;//}

}

java引入bean代码_通过java代码装配bean相关推荐

  1. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  2. java动态执行逻辑_动态执行代码逻辑

    动态执行逻辑的方法据我所知有一下两种方式 QLExpress Groovy QLExpress QLExpress是阿里开源的动态脚本执行的项目. 由阿里的电商业务规则.表达式(布尔组合).特殊数学公 ...

  3. java编写排序的代码_在Java 8之前,您编写了几行代码来对对象集合进行排序?...

    java编写排序的代码 在Java 8之前,您编写了几行代码来对对象集合进行排序? Java 8您需要多少个? 您可以在Java 8中用一行完成. 让我们看看下面的Employee类. public ...

  4. java计分系统编程代码_使用Java代码对实时系统进行编程

    由于许多重要原因,Java语言在实时系统中的使用并不广泛. 这些包括Java语言设计固有的不确定性性能影响,例如动态类加载,以及Java Runtime Environment(JRE)本身,例如垃圾 ...

  5. java cxf服务端代码_【JAVA】 cxf 生成 webservice 服务端代码

    CXF Apache CXF = Celtix + XFire.CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding . ...

  6. java调节音量代码_用Java调用VC音量控制程序_java

    前言 本文通过java的Runtime接口来实现调用其他语言实现的应用程序,进而来实现对计算机硬件信息的监控和控制.本文是多媒体信息系统的一个部分,就是调整计算机音量. 使用VC编写音量控制程序 本控 ...

  7. java空心正方形代码_从Java中的用户输入绘制空心星号正方形/矩...

    我正在尝试创建一个程序,要求用户提供正方形/矩形的宽度和长度尺寸,然后使用#符号将其绘制出来.我几乎了解了,除了我似乎不太了解矩形的右边以正确打印出来- 这是我的代码: import java.uti ...

  8. java发送outlook邮件_通过Java代码发送OutLook邮件

    准备 我们想通过Java代码实现发送OutLook邮件,必须准备以下材料: OutLook邮箱 目标邮箱 查看OutLook邮箱信息 打开OutLook邮箱,在Settings中搜索或找到SMTP: ...

  9. java dijkstra算法代码_[转载]Java实现dijkstra算法: 地图中任意起点寻找最佳路径...

    最近在复习java,下学期要用,写这个练手.  技术较粗糙,见谅. 代码里用的是这幅地图,根据实际情况更改,在addNode方法中 这个是运行结果,起点和终点在 运行wrap(String qidia ...

最新文章

  1. leetcode算法题--反转单词前缀
  2. java用毫秒数做日期计算的一个踩坑记录
  3. 【面试题】你知道为什么HashMap是线程不安全的吗?
  4. 成功解决TypeError: Singleton array array('data_input/xgboost/data_RentListingInquries/RentListingInqurie
  5. build.xml引用其它文件的任务
  6. Software Ate The World, Open Source Is Eating The Software World
  7. 三个帮助你整理信息的桌面 WiKi
  8. java原子更新类_Java内部具有原子更新的动态热交换环境
  9. 前端学习(1847)vue之电商管理系统电商系统的功能划分
  10. 销售面销五个最基础步骤步骤_3个步骤,可提供强有力的反馈
  11. 人脸识别已OUT?猫脸识别才更酷!|在线课堂
  12. 【Luogu1908】逆序对(离散化,树状数组求逆序对)
  13. 拓端tecdat|Python中的多项式回归拟合非线性关系实例
  14. 2-1 组合优化问题
  15. mysql 全文索引查询所用关键词最小长度限制
  16. 徐思201771010132《面向对象程序设计(java)》第一周学习总结
  17. HIT-SC-Lab1 Convex Hull的算法实现(JAVA)
  18. 修改Hosts文件解决文件访问问题
  19. Redis和消息队列
  20. “三年拿下全球第一!”7年小米销量冲到全球第二,雷军做对了什么?

热门文章

  1. jquery filter和not
  2. MFC中实现的画箭头算法 (Arrow in MFC)
  3. 笔记:数据绑定表达式(一)
  4. vue-day03-vue组件化开发
  5. 3.1_ 6_ 基本分页存储管理的基本概念
  6. 项目:基于以太网通信,单片机作为客户端,接收CAN-Ethernet的十六进制数据
  7. 哔哩哔哩n倍速播放视频
  8. Leetcode--56. 合并区间
  9. 服务器的防火墙禁止了对指定通讯端口的访问,使用iptables限制访问网站指定端口...
  10. matlab实验符号计算答案,实验7 Matlab符号计算.doc