属性:
<bean id="beanId" name="beanName" class="beanClass" parent="parentBean" abstract="true | false" singleton="true | false" lazy-init="true | false | default" autowire="byName | byType | constructor | autodetect | default" dependency-check = "none | objects | simple | all | default" depends-on="dependsOnBean" init-method="method" destroy-method="method" factory-method="method" factory-bean="bean"> </bean>
1.parent
表示该Bean为子Bean,其值指向父Bean,重用父Bean已实现的依赖,如果有很多继承同一个父类的Bean,那么在配置文件中实例那些Bean时候可以省略掉父类已经注入的属性,bean定义继承父bean定义,它可以覆盖父bean的一些值。
<bean id="carnetMgr" parent="txProxyTemplate"> <property name="target"> <bean class="ecustoms.carnet.app.biz.CarnetMgr"> <property name="extensionHistoryDAO" ref="extensionHistoryDAO" /> <property name="stockTransactionDAO" ref="stockTransactionDAO" /> <property name="carnetDAO" ref="carnetDAO" /> </bean> </property> </bean>
2.list, set, map和props元素
分别用来设置类型为List,Set,Map和Propertis的属性值。分别用来为bean传入集合值。
<bean id="chinese" class="Chinese"> <property name="friends"> <list> <value>张三</value> <value>李四</value> <ref>beanID</ref> <bean id="" class=""/> </list> </property> <property name="score"> <map> <entry key="数学"> <value>60</value> </entry> <entry key="英语"> <value>70</value> </entry> </map> </property> <property name="basicInfo"> <props> <prop key="身高">165</prop> <prop key="体重">45kg</prop> </props> </property> <property name="interest"> <set> <value>唱歌</value> <value>跳舞</value> </set> </property> </bean>
对应的java代码如下:
public class Chinese implements People { private List friends = new ArrayList(); private Map score = new HashMap(); private Properties basicInfo = new Properties(); private Set interest = new HashSet(); }
3.id
Bean的唯一标识名。它必须是合法的XML ID,在整个XML文档中唯一。
4.name
用来为id创建一个或多个别名。它可以是任意的字母符合。多个别名之间用逗号或空格分开。
5.class
用来定义类的全限定名(包名+类名)。只有子类Bean不用定义该属性。
6.abstract(默认为”false”)
用来定义Bean是否为抽象Bean。它表示这个Bean将不会被实例化,一般用于父类Bean,因为父类Bean主要是供子类Bean继承使用。ture表示抽象Bean,ApplicationContext预初始化时忽略所有抽象Bean定义
7.singleton(默认为“true”)
定义Bean是否是Singleton(单例)。如果设为“true”,则在BeanFactory作用范围内,只维护此Bean的一个实例。如果设为“flase”,Bean将是Prototype(原型)状态,BeanFactory将为每次Bean请求创建一个新的Bean实例。
8.lazy-init(默认为“default”)
用来定义这个Bean是否实现懒初始化。如果为“true”,它将在BeanFactory启动时初始化所有的Singleton Bean。反之,如果为“false”,它只在Bean请求时才开始创建Singleton Bean。
9.autowire(自动装配,默认为“default”)
它定义了Bean的自动装载方式。
1、“no”:不使用自动装配功能。
2、“byName”:通过Bean的属性名实现自动装配,根据Bean定义时的“id"属性上指定的别名与Setter名称是否一致进行自动装配。
3、“byType”:通过Bean的类型实现自动装配,根据PoJo的setXXX()方法所接受的类型判断bean定义文件是否定义有类似的类型对象进行自动装配。
4、“constructor”:类似于byType,但它是用于构造函数的参数的自动组装,Spring容器比对容器中的Bean实例类型及相关的构造方法上的参数类型是否符合进行自动装配。
5、“autodetect”:通过Bean类的反省机制(introspection)决定是使用“constructor”还是使用“byType”,先进行constructor自动装配,若缺省,则进行byType自动装配。
10.dependency-check(依赖检查,默认为“default”)
它用来确保Bean组件通过JavaBean描述的所以依赖关系都得到满足。在与自动装配功能一起使用时,它特别有用。
1、 none:不进行依赖检查。
2、 objects:只做对象间依赖的检查。
3、 simple:只做原始类型和String类型依赖的检查
4、 all:对所有类型的依赖进行检查。它包括了前面的objects和simple。
11.depends-on(依赖对象)
这个Bean在初始化时依赖的对象,这个对象会在这个Bean初始化之前创建。若A depends-on B 意思是实例化A之前必须先实例化B,但A不需要持有B的实例
12.init-method
用来定义Bean的初始化方法,它会在 BeanFactory创建JavaBean实例和属性set注入之后调用。它必须是一个无参数的方法一般用于一些资源的初始化工作。
13.destroy-method
用来定义Bean的销毁方法,它在BeanFactory关闭时调用。同样,它也必须是一个无参数的方法。它只能应用于singleton Bean。
14.factory-method
定义创建该Bean对象的工厂方法。它用于下面的“factory-bean”,表示这个Bean是通过工厂方法创建。此时,“class”属性失效。若是class属性指向工厂类,该工厂类包含的工厂方法须是static
15.factory-bean
定义创建该Bean对象的工厂类。如果使用了“factory-bean”则“class”属性失效。factory-bean属性必须指定一个bean的名字,这个bean一定要在当前的bean工厂或者父bean工厂中,并包含工厂方法。而工厂方法本身通过factory-method属性设置。
@Component:标注一个普通的Spring Bean类
@Controller:标注一个控制器组件类
@Service:标注一个业务逻辑组件类
@Repository:标注一个DAO组件类
约定只是将Bean类首字母改为小写,其他部分不变
@Scope指定作用域
@Resource指定配置依赖
@Autowired自动装配,默认byType.一个实例里面配置一个Field,若多个就要用Field[]数组,如果配置集合Field一定要用泛型
@Qualifier精确的自动装配,byName
相关推荐
### Spring Bean 属性详解 Spring框架是Java平台上的一个开源框架,主要用来简化企业级应用程序的开发。在Spring中,核心概念之一就是Bean,它是一个简单的Java对象,由Spring IoC容器管理。Spring通过XML配置文件...
- **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...
在本文中,我们将深入探讨Spring框架中的Bean XML配置,这是Spring的核心特性之一,它允许我们定义、管理和装配应用中的对象。我们将围绕以下知识点展开: 1. **Spring框架基础**: Spring是一个开源的Java平台,...
在`doCreateBean()`方法中,Spring会创建Bean的实例,`createBeanInstance(beanName, mbd, args)`执行Bean实例的创建,而`populateBean(beanName, mbd, instanceWrapper)`则负责填充Bean的属性,将依赖注入到Bean中...
本文将深入探讨Spring中的"名称空间p",这是一种用于配置Bean属性注入的方式,特别是在XML配置文件中。我们将通过源码分析和实际例子来理解其工作原理。 ### Spring Bean属性注入 Bean属性注入主要有两种方式:`...
### 普元EOS-SpringBean开发概述 普元EOS平台是一款面向企业级应用的低代码开发平台,它集成了大量的开发工具和技术框架,帮助企业快速构建高质量的应用系统。本文将围绕“普元EOS-SpringBean开发”这一主题展开...
3. **初始化**:在属性注入完成后,Spring会执行Bean实现的初始化回调方法,这些方法可以通过实现`InitializingBean`接口的`afterPropertiesSet()`方法或者使用`init-method`属性来指定。此外,还可以通过配置`@...
在Spring配置文件中,我们需要定义一个工厂bean,然后指定该工厂bean的`factory-bean`属性,以及工厂bean中用于创建目标bean的方法,即`factory-method`属性。下面是一个简单的例子: ```xml <bean id="myFactory...
如果Bean定义了初始化回调方法,如`init-method`属性指定的方法,Spring会在初始化后执行这个方法。 9. **Bean的销毁**: 对于Singleton Bean,Spring在容器关闭时会调用`@PreDestroy`注解的方法和实现...
需要注意的是,bean 属性的注入是在初始化方法调用之前。因此,在使用 DependsOn 注解时,需要了解 Spring 中 bean 的加载过程,以免出现错误。 其他实现方式 除了上述两种方式外,还有其他方式可以控制 2 个 bean...
在Spring中,Bean的管理包含多个方面:创建Bean实例、配置Bean属性、控制Bean的生命周期以及Bean作用域的定义。接下来将详细解释这些知识点。 1. Spring的工厂类: Spring通过工厂模式设计了一系列工厂类来创建对象...
2. **属性注入**:Spring会根据Bean定义中的依赖注入(DI)信息,将其他Bean的引用或值设置到当前Bean的属性上。这可以通过setter方法、构造器注入、字段注入等方式完成。 3. **初始化**:在所有属性注入完成后,...
在Spring框架中,动态注册Bean是一项非常实用的功能,它允许我们在应用运行时向Spring容器添加新的Bean定义。这种能力在很多场景下都是极其有用的,比如根据不同的环境配置加载不同的服务实现,或者在运行时根据某些...
在Spring框架中,Bean是核心概念,它代表了应用程序中的对象。Spring通过IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)来管理这些Bean。在这个"Spring Bean简单应用实例"中,我们将...
1. **XML配置**:传统的Spring配置通常使用XML文件,如`beans.xml`,其中包含了Bean的定义,包括类名、初始化方法、属性等。例如: ```xml <bean id="exampleBean" class="com.example.ExampleClass"> ...
在Spring框架中,管理Bean的生命周期是至关重要的。Bean的生命周期包括初始化、正常运行以及销毁三个阶段。在这些阶段,Spring允许开发者定义自定义的行为,以便在特定时刻执行必要的操作。下面将详细介绍如何通过...
Spring Bean的初始化和销毁实例详解 Spring Bean的初始化和销毁是Spring框架中一个非常重要的概念,它们都是Bean生命周期中不可或缺的一部分。在Spring框架中,我们可以使用多种方式来控制Bean的初始化和销毁,以下...
属性赋值阶段,Spring容器会将Bean定义中配置的属性值设置到Bean实例上。在这个过程中,容器会考虑属性值的依赖关系,并按需注入其他Bean或设置具体的值。 3. 初始化(Initialization) 初始化阶段是指Bean已经实例...
- **Spring Framework**:Spring提供了`org.springframework.beans.BeanWrapper`和`org.springframework.beans.PropertyAccessor`接口,简化了对Bean的操作,包括注解的处理。 在实际开发中,遍历Java Bean和利用...
5. **InitializingBean接口**:如果Bean实现了`InitializingBean`接口,Spring会在所有必需的属性设置后调用`afterPropertiesSet()`方法。这个接口的方法调用时机晚于`@PostConstruct`注解的方法,因此实例化顺序会...