java引入bean代码_通过java代码装配bean
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相关推荐
- java项目----教务管理系统_基于Java的教务管理系统
java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...
- java动态执行逻辑_动态执行代码逻辑
动态执行逻辑的方法据我所知有一下两种方式 QLExpress Groovy QLExpress QLExpress是阿里开源的动态脚本执行的项目. 由阿里的电商业务规则.表达式(布尔组合).特殊数学公 ...
- java编写排序的代码_在Java 8之前,您编写了几行代码来对对象集合进行排序?...
java编写排序的代码 在Java 8之前,您编写了几行代码来对对象集合进行排序? Java 8您需要多少个? 您可以在Java 8中用一行完成. 让我们看看下面的Employee类. public ...
- java计分系统编程代码_使用Java代码对实时系统进行编程
由于许多重要原因,Java语言在实时系统中的使用并不广泛. 这些包括Java语言设计固有的不确定性性能影响,例如动态类加载,以及Java Runtime Environment(JRE)本身,例如垃圾 ...
- java cxf服务端代码_【JAVA】 cxf 生成 webservice 服务端代码
CXF Apache CXF = Celtix + XFire.CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding . ...
- java调节音量代码_用Java调用VC音量控制程序_java
前言 本文通过java的Runtime接口来实现调用其他语言实现的应用程序,进而来实现对计算机硬件信息的监控和控制.本文是多媒体信息系统的一个部分,就是调整计算机音量. 使用VC编写音量控制程序 本控 ...
- java空心正方形代码_从Java中的用户输入绘制空心星号正方形/矩...
我正在尝试创建一个程序,要求用户提供正方形/矩形的宽度和长度尺寸,然后使用#符号将其绘制出来.我几乎了解了,除了我似乎不太了解矩形的右边以正确打印出来- 这是我的代码: import java.uti ...
- java发送outlook邮件_通过Java代码发送OutLook邮件
准备 我们想通过Java代码实现发送OutLook邮件,必须准备以下材料: OutLook邮箱 目标邮箱 查看OutLook邮箱信息 打开OutLook邮箱,在Settings中搜索或找到SMTP: ...
- java dijkstra算法代码_[转载]Java实现dijkstra算法: 地图中任意起点寻找最佳路径...
最近在复习java,下学期要用,写这个练手. 技术较粗糙,见谅. 代码里用的是这幅地图,根据实际情况更改,在addNode方法中 这个是运行结果,起点和终点在 运行wrap(String qidia ...
最新文章
- leetcode算法题--反转单词前缀
- java用毫秒数做日期计算的一个踩坑记录
- 【面试题】你知道为什么HashMap是线程不安全的吗?
- 成功解决TypeError: Singleton array array('data_input/xgboost/data_RentListingInquries/RentListingInqurie
- build.xml引用其它文件的任务
- Software Ate The World, Open Source Is Eating The Software World
- 三个帮助你整理信息的桌面 WiKi
- java原子更新类_Java内部具有原子更新的动态热交换环境
- 前端学习(1847)vue之电商管理系统电商系统的功能划分
- 销售面销五个最基础步骤步骤_3个步骤,可提供强有力的反馈
- 人脸识别已OUT?猫脸识别才更酷!|在线课堂
- 【Luogu1908】逆序对(离散化,树状数组求逆序对)
- 拓端tecdat|Python中的多项式回归拟合非线性关系实例
- 2-1 组合优化问题
- mysql 全文索引查询所用关键词最小长度限制
- 徐思201771010132《面向对象程序设计(java)》第一周学习总结
- HIT-SC-Lab1 Convex Hull的算法实现(JAVA)
- 修改Hosts文件解决文件访问问题
- Redis和消息队列
- “三年拿下全球第一!”7年小米销量冲到全球第二,雷军做对了什么?
热门文章
- jquery filter和not
- MFC中实现的画箭头算法 (Arrow in MFC)
- 笔记:数据绑定表达式(一)
- vue-day03-vue组件化开发
- 3.1_ 6_ 基本分页存储管理的基本概念
- 项目:基于以太网通信,单片机作为客户端,接收CAN-Ethernet的十六进制数据
- 哔哩哔哩n倍速播放视频
- Leetcode--56. 合并区间
- 服务器的防火墙禁止了对指定通讯端口的访问,使用iptables限制访问网站指定端口...
- matlab实验符号计算答案,实验7 Matlab符号计算.doc