Spring Bean 配置说明
bean的几种装配方式的基本用法

bean的几种装配方式的基本用法Bean的装配方式是Spring框架中用于实现对象依赖注入的一种机制。
Spring提供了多种装配方式,包括XML配置、注解配置和Java代码配置。
下面将分别介绍这几种装配方式的基本用法。
1.XML配置方式XML配置方式是Spring最早的装配方式之一,需要在XML文件中明确描述Bean的定义和依赖关系。
以下是XML配置的基本用法:- 在XML文件中使用`<bean>`元素定义Bean,可以指定Bean的类名、属性值、构造函数参数等。
- 使用`<property>`元素设置Bean的属性值,可以通过`ref`属性引用其他Bean。
- 使用`<constructor-arg>`元素设置Bean的构造函数参数,同样可以通过`ref`属性引用其他Bean。
2.注解配置方式注解配置方式是Spring 2.5引入的一种装配方式。
通过在Bean的类或者方法上添加注解,Spring能够自动完成对象的创建和依赖注入。
以下是注解配置的基本用法:3. Java代码配置方式Java代码配置方式是从Spring 3.0开始引入的,通过编写Java代码来配置Bean和依赖关系。
以下是Java代码配置的基本用法:- 在方法体中可以进行复杂的逻辑处理来创建Bean,并可以通过参数注入其他Bean。
以上是XML配置、注解配置和Java代码配置这三种装配方式的基本用法。
根据实际的需求和项目的规模,可以选择相应的装配方式来完成对象的管理和依赖注入。
在实际开发中,通常会结合使用这三种方式来完实现Bean的装配。
bean使用方法

bean使用方法Bean是Java中重要的概念之一,它是一种可重复使用的软件组件,具有独立性和可插拔性。
在Java开发中,Bean通常用于封装数据和业务逻辑,使得代码更加模块化、可维护和可扩展。
本文将介绍Bean的使用方法,包括创建Bean、设置属性和使用Bean的实例等。
一、创建Bean在Java中,创建Bean有多种方式,最常见的是使用类来定义Bean。
首先,我们需要创建一个类,该类可以包含属性和方法。
然后,我们可以使用该类来创建Bean的实例。
例如,我们可以创建一个名为Person的类,并定义属性name和age:public class Person {private String name;private int age;// 构造方法public Person(String name, int age) { = name;this.age = age;}// getter和setter方法public String getName() {return name;}public void setName(String name) { = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}二、设置属性创建Bean的实例后,我们可以使用setter方法来设置Bean的属性。
setter方法通常具有以下形式:setXxx(),其中Xxx是属性的名称。
例如,我们可以使用以下代码设置Person的属性:Person person = new Person();person.setName("张三");person.setAge(20);三、使用Bean的实例创建并设置Bean的属性后,我们可以使用Bean的实例来调用其方法。
例如,我们可以使用以下代码获取并输出Person的属性:System.out.println("姓名:" + person.getName());System.out.println("年龄:" + person.getAge());四、使用Bean的注意事项在使用Bean时,需要注意以下几点:1. Bean的属性应该具有合适的访问修饰符,一般为private,以保证数据的封装性。
bean的几种装配方式的基本用法

bean的几种装配方式的基本用法Bean的几种装配方式的基本用法在Spring框架中,Bean是一个重要的概念,它代表了应用程序中的一个组件。
Bean可以通过不同的装配方式来实现依赖注入,从而实现组件之间的解耦。
本文将介绍几种常见的Bean装配方式及其基本用法。
一、XML配置文件装配1.1 基本概念XML配置文件是Spring框架最早支持的一种Bean装配方式。
通过在XML配置文件中定义Bean的属性和依赖关系,Spring容器可以自动创建和管理这些Bean。
1.2 基本语法在XML配置文件中,使用<bean>标签来定义一个Bean。
其中包含以下属性:- id:指定该Bean在容器中的唯一标识符;- class:指定该Bean对应的Java类;- scope:指定该Bean在容器中的作用域;- property:指定该Bean所依赖的其他Bean。
例如:<bean id="userService" class="erService"><property name="userRepository" ref="userRepository"/> </bean>上述代码定义了一个名为“userService”的Bean,它对应Java类“erService”,并依赖于名为“userRepository”的另一个Bean。
1.3 优缺点分析XML配置文件装配方式具有以下优点:- 配置灵活:可以通过修改XML配置文件来改变应用程序的行为;- 易于理解:XML配置文件的结构清晰,易于理解和维护。
但是,XML配置文件装配方式也存在以下缺点:- 冗长:XML配置文件需要编写大量的重复代码,增加了开发者的工作量;- 容易出错:由于XML配置文件中的内容是静态的,容易出现因修改不及时而导致的错误。
spring中bean配置和bean注入

spring中bean配置和bean注⼊1 bean与spring容器的关系Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建⽴Bean定义注册表,然后根据注册表加载、实例化Bean,并建⽴Bean和Bean的依赖关系,最后将这些准备就绪的Bean放到Bean缓存池中,以供外层的应⽤程序进⾏调⽤。
1 bean配置bean配置有三种⽅法:基于xml配置Bean使⽤注解定义Bean基于java类提供Bean定义信息1.1 基于xml配置Bean对于基于XML的配置,Spring 2.0以后使⽤Schema的格式,使得不同类型的配置拥有了⾃⼰的命名空间,是配置⽂件更具扩展性。
①默认命名空间:它没有空间名,⽤于Spring Bean的定义;②xsi命名空间:这个命名空间⽤于为每个⽂档中命名空间指定相应的Schema样式⽂件,是标准组织定义的标准命名空间;③aop命名空间:这个命名空间是Spring配置AOP的命名空间,是⽤户⾃定义的命名空间。
命名空间的定义分为两个步骤:第⼀步指定命名空间的名称;第⼆步指定命名空间的Schema⽂档样式⽂件的位置,⽤空格或回车换⾏进⾏分分隔。
1.1.1 Bean基本配置在Spring容器的配置⽂件中定义⼀个简要Bean的配置⽚段如下所⽰:⼀般情况下,Spring IOC容器中的⼀个Bean即对应配置⽂件中的⼀个<bean>,这种镜像对应关系应该容易理解。
其中id为这个Bean的名称,通过容器的getBean("foo")即可获取对应的Bean,在容器中起到定位查找的作⽤,是外部程序和Spring IOC容器进⾏交互的桥梁。
class属性指定了Bean对应的实现类。
下⾯是基于XML的配置⽂件定义了两个简单的Bean:<?xml version="1.0" encoding="UTF-8" ?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-3.0.xsd"><bean id="car" name="#car1" class="com.baobaotao.simple.Car"></bean><bean id="boss" class="com.baobaotao.simple.Boss"></bean></beans>1.1.2 依赖注⼊1. 属性注⼊2. 构造函数注⼊3. ⼯⼚⽅式注⼊1.2 使⽤注解定义Bean我们知道,Spring容器成功启动的三⼤要件分别是:Bean定义信息、Bean实现类以及Spring本⾝。
Spring常用的一些注解说明

Spring常⽤的⼀些注解说明@Configuration从Spring3.0,@Configuration⽤于定义配置类,可替换xml配置⽂件,被注解的类内部包含有⼀个或多个被@Bean注解的⽅法。
这些⽅法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进⾏扫描,并⽤于构建bean定义。
@Bean@Bean注解⽤于告诉⽅法,产⽣⼀个Bean对象,然后这个Bean对象交给Spring管理。
产⽣这个Bean对象的⽅法Spring只会调⽤⼀次,随后这个Spring将会将这个Bean对象放在⾃⼰的IOC容器中。
SpringIOC 容器管理⼀个或者多个bean,这些bean都需要在@Configuration注解下进⾏创建,在⼀个⽅法上使⽤@Bean注解就表明这个⽅法需要交给Spring进⾏管理。
@Autowired、@Resource@Resource和@Autowired注解都是⽤来实现依赖注⼊的。
只是@AutoWried按by type⾃动注⼊,⽽@Resource默认按byName⾃动注⼊。
♣ @Autowired@Autowired具有强契约特征,其所标注的属性或参数必须是可装配的。
如果没有Bean可以装配到@Autowired所标注的属性或参数中,⾃动装配就会失败,抛出NoSuchBeanDefinitionException.@Autowired可以对类成员变量、⽅法及构造函数进⾏标注,让 spring 完成 bean ⾃动装配的⼯作。
@Autowired 默认是按照类去匹配,配合 @Qualifier 指定按照名称去装配 bean。
♣ @Resource@Resource是JDK提供的注解,有两个重要属性,分别是name和type。
@Resource依赖注⼊时查找bean的规则既不指定name属性,也不指定type属性,则⾃动按byName⽅式进⾏查找。
spring中InitializingBean和@Bean的初始化,bean初始化

spring中InitializingBean和@Bean的初始化,bean初始化InitializingBean接⼝听过bean的初始化防范,只包括afterPropertiesSet⽅法,凡是继承接⼝的类,在初始化bean的时候都会执⾏该⽅法。
import org.springframework.beans.factory.InitializingBean;public class TestInitializingBean implements InitializingBean{@Overridepublic void afterPropertiesSet() throws Exception {System.out.println("ceshi InitializingBean");}public void testInit(){System.out.println("ceshi init-method");}}bean的InitMethod和DestroyMethod1:在配置类中 @Bean(initMethod = "init",destroyMethod = "destory")注解指定2:实现InitializingBean重写其afterPropertiesSet⽅法,重写DisposableBean重写destroy⽅法3:利⽤java的JSR250规范中的@PostConstruct标注在init⽅法上,@PreDestroy标注在destroy注解上需要注意:单实例bean,容器启动时创建对象多实例bean,没次获取时创建对象初始化:对象创建完成,复制完成,调⽤初始化⽅法销毁:单实例,容器关闭时调⽤,多实例,容器不会销毁,只能⼿动调⽤销毁⽅法类:public class Car {public Car() {System.out.println("Car's Constructor..");}public void init(){System.out.println("Car's Init...");}public void destory(){System.out.println("Car's Destroy...");}}配置类:@Bean(initMethod = "init",destroyMethod = "destory")public Car car(){return new Car();}总结:1、Spring为bean提供了两种初始化bean的⽅式,实现InitializingBean接⼝,实现afterPropertiesSet⽅法,或者在配置⽂件中通过init-method指定,两种⽅式可以同时使⽤。
@Bean注解全解析

@Bean注解全解析随着 SpringBoot 的流⾏,基于注解式开发的热潮逐渐覆盖了基于 XML 纯配置的开发,⽽作为 Spring 中最核⼼的 bean 当然也能够使⽤注解的⽅式进⾏表⽰。
所以本篇就来详细的讨论⼀下作为 Spring 中的 Bean 到底都有哪些⽤法。
@Bean 基础声明Spring 的 @Bean 注解⽤于告诉⽅法,产⽣⼀个 Bean 对象,然后这个 Bean 对象交给 Spring 管理。
产⽣这个 Bean 对象的⽅法 Spring 只会调⽤⼀次,随后这个 Spring 将会将这个 Bean 对象放在⾃⼰的 IOC 容器中。
SpringIOC 容器管理⼀个或者多个 bean,这些 bean 都需要在 @Configuration 注解下进⾏创建,在⼀个⽅法上使⽤ @Bean 注解就表明这个⽅法需要交给 Spring 进⾏管理。
快速搭建⼀个 maven 项⽬并配置好所需要的 Spring 依赖<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.13.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.3.13.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.13.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>4.3.13.RELEASE</version></dependency>在 src 根⽬录下创建⼀个AppConfig的配置类,这个配置类也就是管理⼀个或多个 bean 的配置类,并在其内部声明⼀个 myBean 的 bean,并创建其对应的实体类@Configurationpublic class AppConfig {// 使⽤@Bean 注解表明myBean需要交给Spring进⾏管理// 未指定bean 的名称,默认采⽤的是 "⽅法名" + "⾸字母⼩写"的配置⽅式@Beanpublic MyBean myBean(){return new MyBean();}}public class MyBean {public MyBean(){System.out.println("MyBean Initializing");}}在对应的 test ⽂件夹下创建⼀个测试类SpringBeanApplicationTests,测试上述代码的正确性public class SpringBeanApplicationTests {public static void main(String[] args) {ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);context.getBean("myBean");}}输出 : MyBean Initializing随着 SpringBoot 的流⾏,我们现在更多采⽤基于注解式的配置从⽽替换掉了基于 XML 的配置,所以本篇⽂章我们主要探讨基于注解的 @Bean 以及和其他注解的使⽤。
Spring的Bean配置说明

<beans> Spring配置文件的根元素,包含一个或多个bean元素。
<bean> 用于告诉Spring容器一个类以及它是如何配置的。
class属性:Java Bean 类名(全路经)。
id属性:Java Bean在BeanFactory中的唯一标识,代码中通过BeanFactory获取JavaBean实例时需以此作为索引名称。
name属性:同上,如果给bean增加别名,可以通过name属性指定一个或多个id。
singleton属性:指定此Java Bean是否采用单例(Singleton)模式,如果设为“true”,则在BeanFactory作用范围内,只维护此Java Bean的一个实例,代码通过BeanFactory获得此Java Bean实例的引用。
反之,如果设为“false”,则通过BeanFactory获取此Java Bean实例时,BeanFactory每次都将创建一个新的实例返回。
abstract属性:设定ApplicationContext是否对bean进行预先的初始化。
parent属性:定义一个模板。
autowire属性:bean自动装配模式。
可选5种模式。
no:不使用自动装配。
Bean的引用必须通过ref元素定义。
byName:通过属性名字进行自动装配。
byType:如果BeanFactory中正好有一个同属性类型一样的bean,就自动装配这个属性。
如果有多于一个这样的bean,就抛出一个致命异常,它指出你可能不能对那个bean使用byType的自动装配。
如果没有匹配的bean,则什么都不会发生,属性不会被设置。
如果这是你不想要的情况(什么都不发生),通过设置dependency-check="objects"属性值来指定在这种情况下应该抛出错误。
constructor:这个同byType类似,不过是应用于构造函数的参数。
如果在BeanFactory中不是恰好有一个bean与构造函数参数相同类型,则一个致命的错误会产生。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<beans>
Spring配置文件的根元素,包含一个或多个bean元素。
default-autowire属性:默认的bean自动装配模式。
可选5种模式。
no:不使用自动装配。
Bean的引用必须通过ref元素定义。
byName:通过属性名字进行自动装配。
byType:如果BeanFactory中正好有一个同属性类型一样的bean,就自动装配这个属性。
如果有多于一个这样的bean,就抛出一个致命异常,它指出你可能不能对那个bean使用byType 的自动装配。
如果没有匹配的bean,则什么都不会发生,属性不会被设置。
如果这是你不想要的情况(什么都不发生),通过设置dependency-check="objects"属性值来指定在这种情况下应该抛出错误。
constructor:这个同byType类似,不过是应用于构造函数的参数。
如果在BeanFactory中不是恰好有一个bean与构造函数参数相同类型,则一个致命的错误会产生。
autodetect:通过对bean 检查类的内部来选择constructor或byType。
如果找到一个缺省的构造函数,那么就会应用byType。
default-dependency-check属性:默认的依赖检查模式。
可选四种。
none :不进行依赖检查。
没有指定值的bean属性仅仅是没有设值。
Simple:对基本类型和集合(除了合作者外,比如其他的bean,所有东西)进行依赖检查。
Object:对合作者进行依赖检查。
all :对合作者,基本类型和集合都进行依赖检查。
default-lazy-init属性:默认延迟加载。
True 或False 。
<bean>
用于告诉Spring容器一个类以及它是如何配置的。
class属性:Java Bean 类名。
id属性:Java Bean在BeanFactory中的唯一标识,代码中通过BeanFactory获取JavaBean 实例时需以此作为索引名称。
name属性:同上,如果给bean增加别名,可以通过name属性指定一个或多个id。
singleton属性:指定此Java Bean是否采用单例(Singleton)模式,如果设为“true”,则在BeanFactory作用范围内,只维护此Java Bean的一个实例,代码通过BeanFactory获得此Java Bean实例的引用。
反之,如果设为“false”,则通过BeanFactory获取此Java Bean实例时,BeanFactory每次都将创建一个新的实例返回。
abstract属性:设定ApplicationContext是否对bean进行预先的初始化。
parent属性:定义一个模板。
autowire属性:bean自动装配模式。
可选5种模式。
no:不使用自动装配。
Bean的引用必须通过ref元素定义。
byName:通过属性名字进行自动装配。
byType:如果BeanFactory中正好有一个同属性类型一样的bean,就自动装配这个属性。
如果有多于一个这样的bean,就抛出一个致命异常,它指出你可能不能对那个bean使用byType 的自动装配。
如果没有匹配的bean,则什么都不会发生,属性不会被设置。
如果这是你不
想要的情况(什么都不发生),通过设置dependency-check="objects"属性值来指定在这种情
况下应该抛出错误。
constructor:这个同byType类似,不过是应用于构造函数的参数。
如果在BeanFactory中不
是恰好有一个bean与构造函数参数相同类型,则一个致命的错误会产生。
autodetect:通过对bean 检查类的内部来选择constructor或byType。
如果找到一个缺省的
构造函数,那么就会应用byType。
dependency-check属性:依赖检查模式。
可选四种。
none :不进行依赖检查。
没有指定值的bean属性仅仅是没有设值。
Simple:对基本类型和集合(除了合作者外,比如其他的bean,所有东西)进行依赖检查。
Object:对合作者进行依赖检查。
all :对合作者,基本类型和集合都进行依赖检查。
lazy-init属性:延迟加载。
True 或False 。
init-method属性:初始化方法,此方法将在BeanFactory创建JavaBean实例之后,在向应
用层返回引用之前执行。
一般用于一些资源的初始化工作。
destroy-method属性:销毁方法。
此方法将在BeanFactory销毁的时候执行,一般用于资源
释放。
factory-bean属性:通过实例工厂方法创建bean,class属性必须为空,factory-bean属性必
须指定一个bean的名字,这个bean一定要在当前的bean工厂或者父bean工厂中,并包含
工厂方法。
而工厂方法本身通过factory-method属性设置。
factory-method属性:设定工厂类的工厂方法。
depends-on属性:Bean依赖关系。
一般情况下无需设定。
Spring会根据情况组织各个依赖
关系的构建工作。
只有某些特殊情况下,如JavaBean中的某些静态变量需要进行初始化(这
是一种BadSmell,应该在设计上应该避免)。
通过depends-on指定其依赖关系可保证在此Bean加载之前,首先对depends-on所指定的资源进行加载。
----------------------------------------------------------------------------------------------
Spring Bean 配置说明
<property>
用于设置一个属性。
name属性:属性的名称。
value属性:指定bean的属性值。
BeanFactory将自动根据Java Bean对应的属性类型加以匹配。
如果需要将属性值设定为null,必须使用<null/>节点。
ref属性:指定了属性对BeanFactory中其他Bean的引用关系。
<value>
指定bean的属性值。
<ref>
指定了属性对BeanFactory中其他Bean的引用关系。
bean属性:指定了属性对BeanFactory中其他Bean的引用关系。
local属性:指定了属性对BeanFactory中其他Bean的引用关系。
(仅在本地(同一个)xml文件里寻找bean。
parent属性:指定了属性对BeanFactory中其他Bean模板的引用关系。
<list>
指定bean的属性类型为List的属性值。
<map>
指定bean的属性类型为List的属性值。
<set>
指定bean的属性类型为List的属性值。
<props>
指定bean的属性类型为Properties的属性值。
<prop>
key属性:指定Properties的键
<idref>
用来设置属性值为容器中其他bean的id或name。
<null>
指定一个空值。
<constructor-arg>
使用构造方法注入,指定构造方法的参数。
index属性:设置参数的序号。
ref属性:同ref
type属性:参数类型。
value属性:参数的值。
<lookup-method>
lookup方法注入
bean属性:要注入的bean名
name属性:要注入的方法名称
<replaced-method>
用来把已存在的方法实现替换为其他的实现。
name属性:要替换的方法名
replacer属性:替换者类,实现org.springframework.beans.factory.support.MethodReplacer
接口)
<arg-type>
方法返回的类型。