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;//}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

红黑树和平衡二叉树的区别_一文搞懂红黑树

文章参考 | https://segmentfault.com/a/1190000012728513前言当在10亿数据进行不到30次比较就能查找到目标时,不禁感叹编程之魅力!二叉树在了解红黑树之前,先要了解二叉树,又叫二叉查找树、二叉搜索树、二叉排序树。二叉树顾名思…

mysql table keys_MySQL Explain详解

在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做…

程序员肚子越来越大_肚子越来越大,除了肥胖还可能是疾病信号!腰间搓一搓,排出痰浊,消脂防病~...

☀ 定期推送健康知识,生活窍门,演出资讯,旅游信息,商家优惠等诸多优质内容,接地气、重服务的微信平台!关注我们妥妥没错!今天我们所说的“要命的肚子”就是一种肥胖,众所周知导致肥胖…

java语言特点解释类_Java语言特点

Java语言特点引导语:Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。那么你知道Java语言的特点吗,以下是百分网小编分享给大家的Java语言特点,欢迎阅读!Java语言的特点1. 简单、面向对象和为人所熟悉java的简单首先体现在精简的…

python内置方法怎么使用_python的常用内置方法

__author__ cocopython内置函数# all() 全为真,才为真print(all([0,-2,3])) # Falseprint(all([1,-2,3])) # True# any() 任意为真,则为真print(any([1,-6,3])) # Trueprint(any([0,,1])) # True# bin() 十进制转二进制print(bin(8)) #0b1000# bool() 判…

高级java技术web组件_(重温)JavaWeb--Servlet技术(二)(JavaWeb 的三大组件之一)...

1.HttpServletRequest 类a)HttpServletRequest 类有什么作用。每次只要有请求进入 Tomcat 服务器,Tomcat 服务器就会把请求过来的 HTTP 协议信息解析好封装到 Request 对象中。 然后传递到 service 方法(doGet 和 doPost)中给我们使用。我们可以通过 HttpServletReq…

python实现线性回归预测不用sklearn库_python – 为什么我的自定义线性回归模型不匹配sklearn?...

我正在尝试用Python创建一个简单的线性模型,不使用库(numpy除外).这就是我所拥有的import numpy as npimport pandasnp.random.seed(1)alpha 0.1def h(x,w):return np.dot(w.T,x)def cost(X,W,Y):totalCost 0for i in range(47):diff h(X[i],W) - Y[i]squared diff * difft…

svm算法原理_机器学习——分类算法(1)

一、 K近邻KNN算法的基本思想就是在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对应的特征进行相互比较,找到训练集中与之最为相似的前K个数据,则该测试数据对应的类别就是K个数据中出现次数最多的那…

svn复制出来的java_从svn下载的项目(或从别处拷贝来的)报错的可能情况以及解决经验...

1、sdk版本不符合。举个栗子:如果svn上的项目是用sdk10的,但是你电脑上最低sdk是14的,那么这时候就会报错。解决办法:a、鼠标点击项目,b、快捷键“altenter”,c、左侧点击“Android”,右侧选中一…

spring揭秘_被问到了! Spring 和 Spring Boot 之间到底有啥区别?

相信很多小伙伴和我一样,常用Spring 和Spring Boot 但是就是没有研究二者之间到底有什么区别?今天就来大揭秘 ↓概述对于 Spring和 SpringBoot到底有什么区别,我听到了很多答案,刚开始迈入学习 SpringBoot的我当时也是一头雾水&am…

mysql多表查询sql语句怎么写_MySQL基本SQL语句之单表查询、多表查询和子查询

一、简单查询:基本语法:SELECT * FROM tb_name;查询全部SELECT field1,field2 FROM tb_name; 投影SELECT [DISTINCT] * FROM tb_name WHERE qualification; 选择说明:FROM子句: 要查询的关系 表、多个表、其它SELECT语句WHERE子句…

sql 删除最低分数_软件测试从业者:必备SQL语句21天打卡,前10天

一、价值:1. 根据这些年的经验,帮软件测试从业者精选出:1)日常工作中,需要用到的SQL语句;2)软测面试中,笔试 / 面试 ,需要用到的 SQL问题 & 答案 ;2. SQL这种硬技能 &#xff0c…

php两个手机号正则表达式_php 手机号码验证正则表达式

php 手机号码验证正则表达式比较简洁的代码一:$str ;$isMatched preg_match(/^0?(13|14|15|17|18)[0-9]{9}$/, $str, $matches);var_dump($isMatched, $matches);代码二//正则表达式$tel "15558530459"; //作者的手机号码,如果有疑问可以电话联系我,或…

python defaultdict函数_Python中defaultdict与lambda表达式用法

这篇文章主要介绍了Python中defaultdict与lambda表达式用法,在这里分享给大家,需要的朋友可以参考下本文实例讲述了Python中defaultdict与lambda表达式用法。分享给大家供大家参考,具体如下:从教程中看到defaultdict是一个类&…

python中下拉菜单大小_自动化测试——Selenium+Python之下拉菜单的定位

1.通过selenium.webdriver.support.ui的Select进行定位下拉菜单如下图:定位代码(选择Male):from selenium.webdriver.support.ui import Select# 通过index进行选择Select(driver.find_element_by_id("gender")).select_by_index(1)# 通过valu…

JAVA可不可以编写应用程序_编写一个java应用程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼另附Arith类:public class Arith {//默认除法运算精度小数点后面的位数private static final int DEF_DIV_SCALE 2;//这个类不能实例化private Arith() {}/*** 提供精确的加法运算。** param v1 被加数* param v2 加数…

ssms没有弹出服务器验证_使用SSMS扫描和查找SQL Server数据库的潜在安全漏洞

SQL Server Management Studio 17.4或更高版本的SSMS中提供了SQL Server漏洞侦测(VA)功能,此功能允许SQL Server扫描您的数据库以查找潜在的安全漏洞,并且可以针对SQL Server 2012或更高版本运行。如果您还没有使用SSMS上的较新版本,请不要担…

驱动api_消费者驱动契约已死?

吐槽文一篇。契约的一些问题在实践前后端分离的这些年来,已经诞生了一些技术与工具让前后端进行沟通:契约的 Mock 服务(Mock Server)。用于模拟一个服务器,为特定的接口返回特定的值。契约测试。对前后端协定的 API 进…

php表单提交邮箱_最全实现dede订单表单提交发送到指定邮箱(附前台设置)

打造销售型网站的订单系统。不是所有销售都有权限登陆网站后台查看订单,特别是外地出差时,用户下了订单后不能及时服务用户,可能会造成订单丢失。但dedecms默认的订单提交后只能在后台看到的,每次都要登陆到后台去查看很麻烦。以下…

鸢尾花python贝叶斯分类_机器学习-利用三种分类器实现鸢尾花分类

利用决策树,KNN和朴素贝叶斯三种分类器,对鸢尾花数据集进行分类。下面是具体的流程和代码:1、 数据读取:实验数据是直接加载的sklearn内置的鸢尾花数据集,共150条数据,包含4个特征,而且是一个三…