Spring几种不同方式配置Bean

Spring(2)——配置Bean的几种方式 1. 什么是 IOC Ioc- Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。 谁控制谁,控制什么: 传统的Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建以来对象;而Ioc是有专门一个容器来创建这些对象,即由Ioc容器... 阅读详情

配置文件(resources/config/initBean.xml)

Spring IoC容器如何实例化Bean呢?传统应用程序可以通过new和反射方式进行实例化Bean。而Spring IoC容器则需要根据Bean定义里的配置元数据使用反射机制来创建Bean。在Spring IoC容器中根据Bean定义创建Bean主要有以下几种方式:

一、使用无参构造器实例化Bean

使用此种方式,class属性指定的类必须有无参构造器

initBean.xml中的定义:

<bean name="bean" class="com.pyy.Bean"/>  

二、使用有参数的构造器实例化Bean

Bean.java中的定义:

package com.pyy;   
  public class Bean {  
        private String message;  
    	public Bean() {  
                  this.message = "Hello World!";  
           }  
        public Bean(String message) {  
                  this.message = message;  
           }  
          
         public void sayHello() {  
                  System.out.println(message);  
           }  
}  


initBean.xml中的定义:

<!--使用默认构造参数-->  
<bean name="bean1" class="cn.pyy.Bean">  
    <!--使用有参数构造参数-->  
   
<bean name="bean2" class="cn.pyy.Bean">  
<!-- 指定构造器参数 -->  
    <constructor-arg index="0" value="Hello Spring!"/>  
</bean> 
配置完了,下面进行测试

@Test  
public void testInitBeanByConstructor() {  
       //使用构造器  
     BeanFactory beanFactory =  
new ClassPathXmlApplicationContext("config/initBean.xml");  
       Bean bean1 = beanFactory.getBean("bean1", Bean.class);  
       bean1.sayHello();  
       Bean bean2 = beanFactory.getBean("bean2", Bean .class);  
       bean2.sayHello();  
} 

三、使用静态工厂实例化Bean

使用这种方式除了指定必须的class属性,还要指定factory-method属性来指定实例化Bean的方法,而且使用静态工厂方法也允许指定方法参数,spring IoC容器将调用此属性指定的方法来获取Bean,配置如下所示:


public class BeanStaticFactory {  
    //工厂方法  
       public static Bean newInstance(String message) {  
              //返回需要的Bean实例  
           return new Bean(message);  
	}  
}


1.静态工厂类


2.initBean.xml中的配置

<!-- 使用静态工厂方法 -->  
<bean id="bean3" class="com.pyy.BeanStaticFactory" factory-method="newInstance">  
     <constructor-arg index="0" value="Hello Spring!"/>  
</bean>  

3.编写测试代码
@Test  
public void testInitBeanByStaticFactory() {  
       //使用静态工厂方法  
       BeanFactory beanFactory =  
new ClassPathXmlApplicationContext("config/initBean.xml");  
        Bean bean3 = beanFactory.getBean("bean3", Bean.class);  
       bean3.sayHello();  
}  

四、使用实例工厂实例化Bean

使用这种方式不能指定class属性,此时必须使用factory-bean属性来指定工厂Bean,factory-method属性指定实例化Bean的方法,而且使用实例工厂方法允许指定方法参数,方式和使用构造器方式一样,配置如下:

1.实例工厂类

 public class BeanStaticFactory {  
    //工厂方法  
       public static Bean newInstance(String message) {  
              //返回需要的Bean实例  
           return new Bean(message);  
	}  
}


2.initBean.xml中的配置

<!—1、定义实例工厂Bean -->  
<bean id="beanInstanceFactory"  class="com.pyy.BeanInstanceFactory"/>  
<!—2、使用实例工厂Bean创建Bean -->  
<bean id="bean4"  factory-bean="beanInstanceFactory"  factory-method="newInstance">  
   <constructor-arg index="0" value="Hello Spring!"></constructor-arg>  
</bean>  


3.编写测试代码
@Test  
public void testInitBeanByStaticFactory() {  
       //使用静态工厂方法  
       BeanFactory beanFactory =  
new ClassPathXmlApplicationContext("config/initBean.xml");  
        Bean bean4 = beanFactory.getBean("bean4", Bean.class);  
       bean4.sayHello();  
}  




spring注入Bean的几种方式 阅读详情

相关推荐

Spring创建Bean的几种方式

最简单的配置,可以通过xml中bean标签来设置 通过这种方法要在响应类中添加get和set方法,或者添加构造方法.或者可以通过静态工厂或者实例工厂方法 通过这种方式配置要创建一个工厂类,然后将类和方法在xml文件中配置.最后我们还可以通过实现FactoryBean接口来创建一个bean,然后再xml中配置这个实现类即可. 需要注意的是BeanFactory和FactoryBean完全不是一个概念.BeanFactory是spring容器最基本的接口,他提供了spring容器的最基本方法,但是不

weixin_42828799的博客 2827

Spring:创建Bean的几种方式

Spring创建工厂的三种方式

VipMao的博客 1万+

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。还原数据库时把序列取消勾选,选择不还原序列。因为还原表的同时,会自动将自增序列还原上去,此处勾选会导致数据库重复创建序列。点击还原数据库完毕后,可以看到序列仅有一个,没有出现重复序列。但此时的序列当前值是从1开始的,需要重置。点击菜单“其它”-》“序列”,可以看到有多个重复序列。

奋斗鱼 1043

Spring配置Bean的几种方式

​ Spring容器提供了三种装配bean的方式,所谓装配就是指将bean配置在spring容器中,并能够在类与类之间提供依赖关系。 一、隐式Bean发现机制和自动装配 ​ Spring从两个角度来实现自动化装配:组件扫描(Spring自动发现应用中上下文所需要的创建的Bean),自动装配(Spring自动满足Bean之间的依赖) 使用Component注解将普通类配置成Bean @Com...

算云烟 4907

AI人工智能全模态大模型架构:推动智能交通发展的架构设计

本文旨在阐述全模态大模型在智能交通领域的架构设计原理和应用方法。我们将探讨如何利用多模态AI技术解决交通流量预测、事故预警、路线优化等关键问题。文章将从基础概念入手,逐步深入技术细节,最后探讨实际应用和未来发展方向。全模态大模型:能够处理和理解多种数据模态(如图像、文本、语音等)的大型AI模型智能交通系统(ITS):利用先进技术优化交通流量和安全性的综合系统多模态融合:将不同数据源的信息整合处理的技术核心概念回顾全模态大模型是能够处理多种数据类型的强大AI系统。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 835

Orcad原理图导入Allegro

在即将设计的PCB中,将层叠设置好后,执行File→import→parameters,将刚才导出的.prm文件导入,很多参数就自动设置好了,与已完成的PCB里的参数保持一致。具体操作是:在已完成的PCB里执行File→Exoprt→Parameters,弹出下图所示的对话框,选择需要导出的设计参数后,设置到导出路径,导出记录设计参数的文件(.prm)。在.brd文件导入网表后,往往需要页面大小、格点、各层叠里各要素显示颜色等参数,手动设置十分麻烦,我们可以在一块已经完成的PCB里导出记录设计参数的文件。

sinat_27007097的博客 2085

Spring中三种配置Bean的方式

1.使用xml配置文件 由Spring Framework本身决定,此处不详细说。 2.使用Java注解的配置 如果一个类使用了@Service,那么此类将自动注册成一个bean,不需要再在applicationContext.xml文件定义bean了,类似的还包括@Component、@Repository、@Controller等。然后需要在applicationContext.xml文件中加一行,作用是自动扫描base-package包下的注解: <context:component-scan

Jocab_jl的博客 1022

Altera Quartus II FPGA固件烧录全攻略:从SOF到JIC的完整流程(附EPCQ128配置技巧)

本文详细介绍了使用Altera Quartus II工具链将FPGA固件从SOF文件转换为JIC文件并烧录到EPCQ128 Flash芯片的完整流程。内容涵盖环境配置、文件转换步骤、EPCQ128专用配置技巧以及常见问题解决方案,帮助工程师实现FPGA固件的flash固化,确保设计可靠运行。

weixin_30275415的博客 206

spring中的applicationContext的配置文件import两个不同beans中含有相同的bean的id

测试的结果是,实际上获得的是最后一次导入的bean.xml中的bean

qq_40875283的博客 375

FID指标实战:如何用Python快速计算生成图像的质量分数(附完整代码)

本文详细介绍了如何使用Python计算Fréchet Inception Distance(FID)指标,以评估生成图像的质量。通过完整的代码示例和优化技巧,帮助开发者快速实现FID计算,并解读分数背后的实际意义,适用于GAN和扩散模型的性能评估。

weixin_28718487的博客 377

《从理念到落地:Claude Code 在真实项目中的深度实践指南》基于 Anthropic 团队内部使用经验的扩展与深度解读,一篇面向工程团队的全面实践手册

Claude Code 支持通过# 创建新的 API 端点根据以下输入创建完整的 API 端点:资源名称:$ARGUMENTS请创建以下文件:1. `src/routes/{resource}.routes.ts` - 路由定义2. `src/controllers/{resource}.controller.ts` - 控制器3. `src/services/{resource}.service.ts` - 服务层。

AI天才研究院 484

Spring学习之配置Bean几种不同的方式

一、无参构造器配置<bean id="helloWord" class="spring_0.HelloWord"></bean>二、有参构造器<bean id="car" class="spring_0.Car"> <!--也可以指定 indx属性 --> <constructor-arg value="Audi" type="java.lang.String"/> <constructor

小蚂蚁的博客 2283

机器学习项目实战案例数据集

本专栏整理了《机器学习项目实战案例》,内包含了各种不同的机器学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。

优快云 精品推荐 3640

详解Bean注入Spring的方式

xml 方式 注解方式 @Configuration + @Bean @Import FactoryBean BDRegistryPostProcessor 从Spring的IOC特性入手,聊一聊Spring中把Bean注入Spring容器的几种方式 我们先来简单了解下IOC的概念:IOC即控制反转,也称为依赖注入,是指将对象的创建或者依赖关系的引用从具体的对象控制转为框架或者IOC容器来完成,也就是依赖对象的获得被反转了。 可以简单理解为原来由我们来创建对象,现在由Spring来创建并控制对象 一、xm

weixin_40964170的博客 2472

uniapp - 解决 uni.chooseImage 在苹果 IOS 真机上点击没反应的问题,苹果手机点击 uni.chooseImage方法不生效,也不报任何错误(解决苹果ios系统点击无效问题)

uniapp小程序h5网页苹果ios系统点击uni.chooseImage不执行点击无效,uniapp使用uni.chooseImage方法点击没反应怎么办,uniappuni.chooseImage在ios苹果手机运行点击不触发,uniappuni.chooseImage苹果ios系统点击无效,uniapp项目ios端云打包之后uni.chooseImage不生效了,uniapp打包之后uni.chooseImage()无法打开相机,uniapp苹果手机无法打开相机和相册,uniapp网页h5微信支

🏆 前端领域优质创作者 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Spring读取外部属性配置文件的几种方式

可以在Spring的applicationContext.xml中引用外部配置的属性文件,比如数据库信息等。。 2.5的配置方式 &lt;context:property-placeholder location=&quot;classpath:jdbc.properties&quot;/&gt; 2.0的配置方式 &lt;bean id=&quot;propertyConfigurer&quot; class=&quot

小小默:进无止境 3691

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Spring 03-Spring Bean的注册发现流程

Spring框架通过不同的ApplicationContext实现类(如AnnotationConfigApplicationContext、ClassPathXmlApplicationContext等)初始化IoC容器。

2401_84606589的博客 698

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

spring bean 的装配方式

任何一个功能模块都是由很多组件(对象)在一起协调完成的,订单管理组件、产品管理组件、支付组件需要彼此了解并相互协作,它们还需要与数据库访问组件一起协作,从而完成从数据库读取数据、写入数据的行为。 在Spring中,所有对象的创建、装配、维护、销毁,都交给Spring容器,对象之间的关联(即装...

chenru6416的博客 178

注册bean有多少种方式

注册bean有多少种方式

weixin_42293662的博客 428

解释Spring支持的几种bean的作用域?思维导图 代码示例(java 架构)

为了更直观地展示Spring支持的几种Bean的作用域,可以使用思维导图工具(如XMind、MindMeister等)绘制一个结构化的图表。Spring框架提供了多种Bean的作用域,每种作用域决定了Bean的生命周期和可见范围。以下是Spring中常见的Bean作用域及其特点和使用场景。希望这些信息对你有所帮助!如果你有任何进一步的问题或需要更详细的解释,请随时告诉我。

qq_33240556的博客 881

加载spring上下文几种方式汇总

一:Spring中的几种容器都支持使用xml装配bean,包括:      XmlBeanFactory ,     ClassPathXmlApplicationContext ,     FileSystemXmlApplicationContext ,     XmlWebApplicationContext  加载这些容器的配置文件的xml有一下几种常见的方法:  1:引

u013322876的博客 372

转载:spring 中加载xml配置文件的几种方法

原文地址:[u]http://noobjava.iteye.com/blog/976472[/u] [list] [*] [*]一:Spring中的几种容器都支持使用xml装配bean,包括: [*] XmlBeanFactory , [*] ClassPathXmlApplicationContext , [*] FileSystemXmlApplicatio...

huiy的专栏 160

Spring注入Bean的几种方式

通过注解注入Bean 背景 我们谈到Spring的时候一定会提到IOC容器、DI依赖注入,Spring通过将一个个类标注为Bean的方法注入到IOC容器中,达到了控制反转的效果。那么我们刚开始接触Bean的时候,一定是使用xml文件,一个一个的注入,就例如下面这样。 <bean id="bean" class="beandemo.Bean" /> 复制代码我们的项目一般很大的话,就需...

weixin_33933118的博客 3万+

spring 的 bean 配置的几种方式

Spring 提供了多种配置BeanXML 配置:传统的方式,适用于对 XML 更熟悉的开发者,或者在大型项目中集中管理配置。基于注解的配置:更加简洁和直观,适用于现代 Java 开发,减少了冗长的 XML 配置文件。基于 Java 配置的方式:提供了类型安全和更强的灵活性,适合需要复杂配置逻辑的场景。Spring Boot 自动配置:大大简化了 Spring 应用的配置过程,遵循“约定优于配置”原则,非常适合快速开发。

Flying_Fish_roe的博客 2084

Spring Bean有哪几种配置方式?

Spring Bean有哪几种配置方式?

java1234的博客 589

一文道破将bean注入到Spring中的几种方式

前两天有学妹问我如何将bean注入到Spring中,虽问题较简单,但还是写此文以告之。在Java的Spring框架中,将bean注入到容器中是核心概念之一,这是实现依赖注入的基础。Spring提供了多种方式来将bean注入到容器中。写此文,同时也希望这篇文章能帮助到各位路过的大佬。

小威的博客 1万+
上一篇: 静态块,匿名构造方法,构造方法执行顺序
下一篇: 三种不同方式的构造器注入
jackphang
博客等级 码龄14年 9粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值