spring中bean的配置

Spring项目bean基础配置 对于bean的配置中,主要有bean基础配置,bean的别名配置,bean的作用范围配置(重点),这三部分内容:1. bean基础配置(id与class);2. bean的name属性(别名配置);3. bean作用范围scope配置。 阅读详情

spring中bean的配置

1.配置形式:

    (1) 基于XML文件的方式

            1.在xml文件中通过节点来配置bean
[html]  view plain  copy
  1. <!-- 配置bean -->  
  2. <bean id="helloworld" class="com.wul.spring.beans.Helloworld">  
  3. <property name="name" value="wul"></property>  
  4. </bean>  

2.id:Bean的名称
---  在IOC容器中必须是唯一的
---  若id没有指定,Spring自动将权限定性类名作为Bean的名字
---  id可以指定多个名字,名字之间可用逗号,分号,或空格分隔

     (2)基于注解的方式

2.Bean的配置方式:

      (1)通过全类名(反射)

[html]  view plain  copy
  1. <!--   
  2. 配置bean   
  3. Class:bean的全类名,通过反射的方式在IOC容器中创建Bean,所以要求Bean中必须有无参数的构造器  
  4. id:标识容器中的bean,id唯一    
  5. -->  
  6. <bean id="helloworld" class="com.wul.spring.beans.Helloworld">  
  7. <property name="name" value="wul"></property>  
  8. </bean>  

      (2) 通过工厂方法(静态工厂方法&实例工厂方法) 

      (3)FactoryBean

3.IOC容器BeanFactory&ApplicationContext概述

( 1 ) SpringIOC容器
        在Spring IOC容器读取Bean配置创建Bean实例之前,必须对它进行实例化,只有在容器实例化,才可以从IOC容器里获取Bean实例并使用。
( 2 )IOC容器实现
         Spring提供了两种类型的IOC容器实现
         (1)  BeanFactory IOC容器的基本实现
 (2)  ApplicationContext提供了更多的高级特性,是BeanFactory的子接口。
        -BeanFactory是Spring框架的基础设施,面向Spring本身;
         ApplicationContext面向使用Spring框架的开发者,几乎所有的应用场合都直接使用  ApplicationContext而非底层的BeanFactory
       -无论使用何种方式,配置文件是相同的。
( 3 )ApplicatonContext
        (1)ApplicatonContext代表 Spring 的IOC容器,是一个接口。
        (2)ApplicationContext的主要实现类:
1.ClassPatnXmlApplicationContext:从类路径下加载配置文件
2.FileSystemXmlApplicationContext:从文件系统下加载配置文件
(3)ApplicatonContext的拓展类
         ConfigurationApplicationContext拓展于ApplicationContext,新增加两个主要方法:refresh()和close(),让ApplicationContext
          具有启动,刷新和关闭上下文的能力。
                WebApplicationContext是专门为WEB应用而准备的,它允许从相对于WEB根目录的路径中完成初始化工作。

4.依赖注入的方式:

        (1)属性注入

属性注入即通过setter方法注入Bean的属性值或依赖的对象,
属性注入使用<property>元素,使用name属性指定Bean的属性名称,value属性或<value>字节点指定属性值。
属性注入是实际应用中最常用的注入方式
属性注入时:必须要求对应bean有无参的构造器和setter方法
[html]  view plain  copy
  1. <bean id="helloworld" class="com.wul.spring.beans.Helloworld">  
  2.     <property name="name" value="wul"></property>  
  3. </bean>  

        (2)构造器注入

通过构造方法注入Bean的属性值或依赖的对象,它保证了Bean实例在实例化后就可以使用
构造器注入在<constructor-arg>元素里声明属性,<constructor-arg>中没有name属性
构造方法注入:必须要求bean有对应参数的构造器

[html]  view plain  copy
  1. <!-- 通过构造方法来配置bean的属性 -->  
  2. <bean id="car" class="com.wul.spring.beans.Car">  
  3.     <constructor-arg value="Audi" index="0"></constructor-arg>  
  4.     <constructor-arg value="shanghai" index="1"></constructor-arg>  
  5.     <constructor-arg value="300000" type="double"></constructor-arg>  
  6. </bean>  
使用构造器注入属性值可以指定参数的位置和参数的类型!以区分重载的构造器:
Car.java
[java]  view plain  copy
  1. public Car(String brand, String corp, double price) {  
  2.     super();  
  3.     this.brand = brand;  
  4.     this.corp = corp;  
  5.     this.price = price;  
  6. }  
  7.   
  8. public Car(String brand, String corp, int maxSpeed) {  
  9.     super();  
  10.     this.brand = brand;  
  11.     this.corp = corp;  
  12.     this.maxSpeed = maxSpeed;  
  13. }  
application.xml
[html]  view plain  copy
  1. <bean id="car2" class="com.wul.spring.beans.Car">  
  2.     <constructor-arg value="Baoma" type="java.lang.String"></constructor-arg>  
  3.     <constructor-arg value="shanghai" type="java.lang.String"></constructor-arg>  
  4.     <constructor-arg value="240" type="int"></constructor-arg>  
  5. </bean>  

     (3)工厂方法注入(很少注入,不推荐)



Helloworld.java
[java]  view plain  copy
  1. package com.wul.spring.beans;  
  2.   
  3. public class Helloworld {  
  4.       
  5.     private String name;  
  6.   
  7.   
  8.     public void setName(String name) {  
  9.         this.name = name;  
  10.     }  
  11.       
  12.     public void hello(){  
  13.         System.out.println("Hello "+name);  
  14.     }  
  15.       
  16.     /*   
  17.      若写带参构造器必须再写个无参构造器 
  18.     public Helloworld(String name){ 
  19.         this.name = name; 
  20.     }*/  
  21.       
  22. }  
Car.java
[java]  view plain  copy
  1. package com.wul.spring.beans;  
  2.   
  3. public class Car {  
  4.       
  5.     private String brand;  
  6.     private String corp;  
  7.     private double price;  
  8.     private int maxSpeed;  
  9.       
  10.       
  11.       
  12.       
  13.     public String getBrand() {  
  14.         return brand;  
  15.     }  
  16.   
  17.     public void setBrand(String brand) {  
  18.         this.brand = brand;  
  19.     }  
  20.   
  21.     public String getCorp() {  
  22.         return corp;  
  23.     }  
  24.   
  25.     public void setCorp(String corp) {  
  26.         this.corp = corp;  
  27.     }  
  28.   
  29.     public double getPrice() {  
  30.         return price;  
  31.     }  
  32.   
  33.     public void setPrice(double price) {  
  34.         this.price = price;  
  35.     }  
  36.   
  37.     public int getMaxSpeed() {  
  38.         return maxSpeed;  
  39.     }  
  40.   
  41.     public void setMaxSpeed(int maxSpeed) {  
  42.         this.maxSpeed = maxSpeed;  
  43.     }  
  44.   
  45.     public Car(){  
  46.           
  47.     }  
  48.       
  49.     public Car(String brand, String corp, double price) {  
  50.         super();  
  51.         this.brand = brand;  
  52.         this.corp = corp;  
  53.         this.price = price;  
  54.     }  
  55.       
  56.     public Car(String brand, String corp, int maxSpeed) {  
  57.         super();  
  58.         this.brand = brand;  
  59.         this.corp = corp;  
  60.         this.maxSpeed = maxSpeed;  
  61.     }  
  62.   
  63.   
  64.   
  65.   
  66.   
  67.   
  68.   
  69.     @Override  
  70.     public String toString() {  
  71.         return "Car [brand=" + brand + ", corp=" + corp + ", price=" + price  
  72.                 + ", maxSpeed=" + maxSpeed + "]";  
  73.     }  
  74.       
  75.       
  76.       
  77. }  

applicationContext.xml
[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
  5.         http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">  
  6.       
  7.     <!--   
  8.         配置bean   
  9.         Class:bean的全类名,通过反射的方式在IOC容器中创建Bean,所以要求Bean中必须有无参数的构造器  
  10.         id:标识容器中的bean,id唯一    
  11.     -->  
  12.     <bean id="helloworld" class="com.wul.spring.beans.Helloworld">  
  13.         <property name="name" value="wul"></property>  
  14.     </bean>  
  15.       
  16.     <!-- 通过构造方法来配置bean的属性 -->  
  17.     <bean id="car" class="com.wul.spring.beans.Car">  
  18.         <constructor-arg value="Audi" index="0"></constructor-arg>  
  19.         <constructor-arg value="shanghai" index="1"></constructor-arg>  
  20.         <constructor-arg value="300000" type="double"></constructor-arg>  
  21.     </bean>  
  22.       
  23.     <!-- 使用构造器注入属性值可以指定参数的位置和参数的类型!以区分重载的构造器 -->  
  24.     <bean id="car2" class="com.wul.spring.beans.Car">  
  25.         <constructor-arg value="Baoma" type="java.lang.String"></constructor-arg>  
  26.         <constructor-arg value="shanghai" type="java.lang.String"></constructor-arg>  
  27.         <constructor-arg value="240" type="int"></constructor-arg>  
  28.     </bean>  
  29.       
  30. </beans>  
Main.java
[java]  view plain  copy
  1. package com.wul.spring.beans;  
  2.   
  3. import org.springframework.context.ApplicationContext;  
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  5.   
  6. public class Main {  
  7.       
  8.     public static void main(String[] args){  
  9.           
  10.   
  11.         ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");  
  12.   
  13.         Helloworld helloworld = (Helloworld) ctx.getBean("helloworld");  
  14.           
  15.         helloworld.hello();  
  16.           
  17.         Car car = (Car) ctx.getBean("car");  
  18.         System.out.println(car);  
  19.           
  20.         Car car2 = (Car) ctx.getBean("car2");  
  21.         System.out.println(car2);  
  22.           
  23.           
  24.     }  
  25. }  

















【Spring】— Spring中Bean的配置、作用域 singleton是Spring容器默认的作用域,当Bean的作用域为singleton时,Spring容器就只会存在一个共享的Bean实例,并且所有对Bean的请求,只要id与该Bean的id属性相匹配,就会返回同一个Bean的实例。在Spring中,XML配置文件的根元素是beans,beans中可以包含多个bean子元素,每一个bean子元素定义了一个Bean,并描述了该Bean如何被装配到Spring容器中。从中可以看出,两次输出的结果相同,这说明Spring容器只创建了一个Scope类的实例。 阅读详情

相关推荐

【Ultrascale+ MPSOC学习记录】6、从eMMC启动翻车

因为MPSOC还有一种启动模式是eMMC,接下来咱就实现从eMMC启动。

ryo891012的博客 474

spring bean 初始化时构造函数的选择

1.存在无参构造函数,且没有 @Autowired注解时使用无参构造器。 2.不存在无参构造函数,但存在有参构造函数,并且没有@Autowired注解会报错,添加@Autowired注解就不会报错。 3.存在多个构造函数,并且含有无参构造函数,有@Autowired注解 会使用@Autowired注解标注的构造器。 4.有多个@Autowired注解会报错,除非全设置为required = false,此时会加载参数最多的构造器。 bean 类: @Component public class Son {

lin1214000999的博客 3646

什么是plm系统?-数字化转型网

当今世界,产品研发能力是企业在激烈的市场竞争中保持战略优势的核心竞争力之一。如何有效地缩短产品研发周期、改善产品服务的设计迭代流程、有效降低产品的研发成本,也是企业面临的主要问题之一。PLM(Product Lifecycle Management,产品生命周期管理)在优化产品研发的全管理流程、增强企业产品的市场竞争力方面具有关键的作用。

cxo17757154043的博客 882

spring配置bean

第一章 spring框架构成 第二章 spring容器 第三章 spring配置bean原文链接 https://zhhll.icu/2021/框架/spring/基础/3.spring配置bean/构造器创建bean是最常用的,如果不使用构造注入,Spring会调用无参构造器来创建实例使用的是反射机制,要求该bean所对应的类必须有一个无参构造器而对于注入方式,有构造器注入和setter方法注入使用setter方法注入时,注意一定要有无参构造器,spring会根据配置的class来使用class.newI

Lxn2zh的博客 1762

BepInEx插件开发实战:用Visual Studio快速创建你的第一个Unity Mod(2024新版)

本文是2024年新版BepInEx插件开发实战指南,详细讲解如何使用Visual Studio快速创建你的第一个Unity Mod。内容涵盖专业开发环境搭建、插件生命周期解析、利用HarmonyX进行游戏代码注入、实现实时调试与热重载技巧,以及项目配置与打包发布全流程,助你从Mod使用者转变为创造者。

weixin_29002595的博客 339

神经符号AI架构解析:如何通过V&V提升AI系统可信性

在人工智能领域,深度学习模型因其强大的模式识别能力而广泛应用,但其内部决策过程往往如同“黑盒”,难以追溯和解释,这给系统验证与确认带来了巨大挑战。验证与确认是确保复杂软件系统安全、可靠、符合预期的基石,其中验证关注“是否正确地构建了产品”,确认则关注“是否构建了正确的产品”。神经符号人工智能作为一种新兴范式,通过融合符号逻辑的透明推理与深度学习的强大感知,为解决这一难题提供了关键技术路径。它使得AI系统既能从数据中学习复杂模式,又能依据可形式化检验的规则进行逻辑推理,从而在自动驾驶、医疗诊断等高可靠性应用场

weixin_28681379的博客 356

spring关于bean的配置

spring中bean的配置 1.配置形式:     (1) 基于XML文件的方式             1.在xml文件中通过节点来配置bean 2.id:Bean的名称 ---  在IOC容器中必须是唯一的 ---  若id没有指定,Spring自动将权限定性类名作为Bean的名字 ---  id可以指定多个名字,名字之间可用逗号,分号,或

两岸猿_吴轻舟先生的博客 2658

如何浏览与下载全球免费的地图高分辨率(亚米级)的遥感影像?

前言 如果你想使用商业卫星的高分辨遥感影像,一般价格昂贵。我们可以使用地图平台上免费的高分辨率数据。目前数据源很多,比如说google earth、天地图、四维地球、必应地图等等。这些影像统一有一个共同点就是:RGB三波段;Web地图瓦片服务。这意味着我们可以通过瓦片服务下载影像,但下载的影像只有三个波段,分别是 一.引言 二、可使用高分辨率的地图数据源 1.Google Earth影像 2.Esri World Image 3.天地图 4.必...

锐多宝的地理空间 2万+

Spring IOC创建Bean

Spring IOC创建Bean 1.通过属性创建Bean 通过配置bean标签来完成对象的管理 id:对象名 class:对象的模板类(所有交给IOC容器来管理的类必须有无参构造函数,因为Spring底层是通过反射机制来创建对象,调用的是无参构造) 对象的成员变量通过property标签完成赋值 name:成员变量名 value:成员变量值(基本数据类型,String可以直接赋值,如果是其他引用类型,不同通过value赋值) ref:将IOC中的另一个bean赋给当前的成员变量(DI) <b

weixin_43273005的博客 445

Google账号找回通用方法(尤其是知道账号密码仍无法登录和找回的)

Google账号找回通用方法【尤其是知道账号密码仍无法登录和找回的】普通找回注意:适用于常用谷歌账户的设备和网络情况下无法使用手机或辅助邮箱验证码进行密码找回特殊找回方法注意;适用于1.新的设备以及网络环境(包括由于非正常原因导致设备系统以及应用信息变更)2.没有开启辅助验证(手机/邮箱)3.知道账号密码但无法登录或找回。通过申诉进行找回 普通找回 注意:适用于 常用谷歌账户的设备和网络情况下 无法使用手机或辅助邮箱验证码进行密码找回 通过恢复页面进行恢复 https://accounts.google

极客代码-极致生活 23万+

Debezium 性能调优实战:吞吐量、延迟与资源平衡

摘要: 本文分享了团队如何通过系统性调优将Debezium从初始3,200 TPS/2.8秒延迟提升至15,200 TPS/210ms延迟的实战经验。优化涵盖四个层面:1)Debezium连接器配置(批处理、快照并行、消息精简);2)Kafka分区策略与Avro序列化缓存;3)JVM改用ZGC及OS参数调优;4)MySQL的binlog与I/O优化。关键发现包括分区数黄金公式、sync_binlog调整带来56%的I/O负载下降,以及避免盲目增大队列内存等陷阱。最终实现吞吐量提升4.75倍,并强调性能调优需

爱丹丹的博客 358

Spring通过无参构造及有参构造创建对象方法详解

1.通过类的无参构造创建对象 当用最普通方式配置一个<bean>时,默认就是采用类的无参构造创建对象。在Spring容器初始化时,通过<bean>上配置的class属性反射得到字节码对象,通过newInstance()创建对象。 (详细的创建方式,参见:https://blog.youkuaiyun.com/qq_32224047/article/details/106957319 newInstance()创建对象过程: Class c = Class .forName("类的全路径

浅时光|初如梦 6973

基于STM32、HAL库的MCP4013T-103E/CH 数字电位器驱动程序设计

define MCP4013_I2C_ADDR (0x5F << 1) // HAL库使用7位地址左移1位,或直接使用0xBE/0xBF。#include "i2c.h" // 包含你的I2C初始化相关的头文件,例如由CubeMX生成的 i2c.h。大于127的值会被截断。// MCP4013的读操作:主机发起读取请求,从机返回当前滑片位置的一个字节。// 使用HAL_I2C_Master_Transmit直接发送数据。// 使用HAL_I2C_Master_Receive读取一个字节。

corlin6688的博客 126

Spring配置Bean

但是在A对象中,我们可以发现仍然有B对象进行了相关的包括,这样的话,B对象的本身也会存在着属于自己的属性,然而当我们的A对象想在自己的对象容器中把B的属性进行包含,这样就叫做级联属性赋值。但是我们所产生的是一个动态的工厂时,我们倘若只有一个工厂的时候,他所调用的确实时两个相同的值,但是当我们去创建两个动态工厂去分别调用两个不同的值的时候,这两个值所产生的就是两个不同的。对于静态工厂的时候,当我们产生了两个工厂的时候,他们所产生的相关的值仍然就是相同的,因为静态的类加载只会去调用一个。

开源驱动,创造价值;坦诚清晰,快速失败;让复杂可计算。 1456

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Spring系列二:基于XML配置bean 上

Spring系列二: 基于注解配置bean

你好, 我在学java的博客 3535

数学建模模型总结

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

Spring Bean 配置

- 定义 UserService 类为 Bean,id 为唯一标识 -->id:Bean 的唯一名称,通过获取。class:Bean 的全限定类名,Spring 通过反射创建实例。-- 声明 util 命名空间 -->-- 定义可复用的 List -->-- 注入到 Bean 中 --></bean>场景推荐方式传统项目、复杂配置XML + 注解混合现代应用、快速开发注解 + Java 配置类需要动态生成 BeanJava 配置类简单依赖、快速原型。

m0_75107803的博客 1114

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

spring中bean的配置详解

目录 1 配置Bean概述 1.1 配置文件 1.2 示例bean 1.3 bean框架 2 bean配置 2.1 基于xml配置Bean Bean基本配置 依赖注入 2.2 使用注解定义Bean 使用注解配置信息启动spring容器 2.3 基于java类提供Bean定义 2.4不同配置方式比较 3 Bean注入 3.1 在xml文件中配置依赖注入 属性注入 构造方法注入 工厂方法注入 3.2 使用注解的方式注入 使用@Autowired进行自动注入 使用...

mocas_wang的博客 6470

Spring(三)- Spring中Bean的配置

Spring(三)- Spring中Bean的配置

及时当勉励,岁月不待人 4152

Spring bean配置和bean注入

Bean 定义 被称作 bean 的对象是构成应用程序的支柱也是由 Spring IOC容器管理的。bean 是一个被实例化,组装,并通过 Spring IOC 容器所管理的对象。这些 bean 是由用容器提供的配置元数据创建的,例如:在 XML 的表单中的 定义。 Bean 与 Spring 容器的关系 Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的B...

Hern(宋兆恒) 593

Spring Bean的配置方式

在配置前先了解bean元素的相关属性: 作为 Spring 核心机制的依赖注入,改变了传统的编程习惯,对组件的实例化不再由应用程序完成,转而交由Spring 容器完成,在需要时注入应用程序中,从而对组件之间依赖关系进行了解耦。这一切都离不开Spring 配置文件中使用的元素。 Spring 容器可以被看作一个大工厂,而 Spring 容器中的 Bean 就相当于该工厂的产品。如果希望 这个大工厂能够生产和管理 Bean,这时则需要告诉容器需要哪些 Bean,以及需要以何种方式将这些 Bean 装配到一起 常

weixin_46402513的博客 927

spring 的 bean 配置的几种方式

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

Flying_Fish_roe的博客 2084

spring Bean配置及使用

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springfr...

liangmaxmin的博客 245

Spring bean配置细节

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springfra...

weixin_39996256的博客 122

Spring Bean的配置

二、Bean的配置 配置Bean就是告诉Spring的IOC容器将要去管理的对象 1. 配置bean的方式 1.1 传统的XML配置方式 Person.java public class Person { private String name; private int age; private double money; public String getName() { return name; } public void setNam

奔腾游子 765

Spring如何配置bean属性

在Spring的bean配置文件中,每个bean必须有一个唯一标识的名称或者id,以及一个完全限定的类名,用来让Ioc容器对其进行实例化。

GISXX 4715
上一篇: Mac版eclipse快捷键使用总汇
下一篇: 事务学习
coding1994
博客等级 码龄11年 149粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值