Spring的核心容器Bean的基础知识(二)
来源:互联网 发布:win平板必备软件 编辑:程序博客网 时间:2024/05/16 06:40
这篇来介绍一下Bean基础中的依赖相关。Bean元素的depends-on属性,depends-on哪个bean。
(一)
Java Bean 之间的依赖关系:可以通过<ref/>元素来手动指定Bean的依赖关系。即同ref表示指定依赖。
Bean的依赖关系可以改变Bean的实例化顺序,被依赖的Bean要先于依赖的Bean优先被实例化。
<ref/>的三种模式和用法:
local:当前同一个xml,只能用相同的id表示。
bean:不一定是在同一个xml中,可以用相同的id或name表示。
parent:允许引用当前的BeanFactory或ApplicationContext的父BeanFactory或ApplicationContext中的Bean。
HelloWorld.java(定义Bean)
package com.gc.acion;import java.util.Date;public class HelloWorld {private String msg = null;private Date date = null;public void init(){this.msg = "wangyj";}public void cleanup(){this.msg = "";System.out.println("HelloWorld中的"+this.msg+"已销毁");}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public Date getDate() {return date;}public void setDate(Date date) {this.date = date;}}
指定依赖xml配置:
<bean id="HelloWorld" class="com.gc.acion.HelloWorld" scope="singleton" init-method="init" destroy-method="cleanup" depends-on="date"><!-- local属性模式 --><property name="date"><ref local="date"/></property><!-- bean属性模式 --><property name="date"><ref bean="date"/></property><!-- parent属性模式 --><property name="date"><ref parent="date"/></property></bean>
现在来说明另一种依赖方式。Bean的自动装配。Bean的依赖关系根据xml配置自动关联依赖,不需要程序员自己手动去指定。
Bean的自动装配有5种模式:autowrtite=""
byName:Bean.java中的属性根据相同的名字去找xml配置中找id相同的bean。
<bean id="HelloWorld" class=""com.gc.acion.HelloWorld" scope="singleton" autowire="byName"><property name="msg"><value>wangyj</value></property></bean><bean id="date" class="java.Util.Date"></bean>
byType:Bean.java中的属性根据相同的属性的类型去xml配置中找相同类型的id。比如都是Date
<bean id="HelloWorld" class=""com.gc.acion.HelloWorld" scope="singleton" autowire="byType"><property name="msg"><value>wangyj</value></property></bean><bean id="date" class="java.Util.Date"></bean>
constructor:Bean.java中构造函数中的参数,去找合适类型的Bean。
<bean id="HelloWorld" class=""com.gc.acion.HelloWorld" scope="singleton" autowire="constructor"><property name="msg"><value>wangyj</value></property></bean><bean id="date" class="java.Util.Date"></bean>
autodetect:优先构造方法constructor,然后byType
<bean id="HelloWorld" class=""com.gc.acion.HelloWorld" scope="singleton" autowire="autodetect"><property name="msg"><value>wangyj</value></property></bean><bean id="date" class="java.Util.Date"></bean>
no:需要指定依赖<ref/>
<bean id="HelloWorld" class=""com.gc.acion.HelloWorld" scope="singleton" autowire="no"><property name="msg"><value>wangyj</value></property><property name="date"><ref local="date"/></property></bean><bean id="date" class="java.Util.Date"></bean>
(三)以上是自动装配,但是自动装配是否能保证bean的每个属性时候都设定完成,所以我们需要加一个依赖检查。
一般自动装配+依赖检查配合使用,确保bean的属性被设定完成,否则会报错提示。
依赖检查关键字:dependency-check
有四种模式:
simple:只针对基本类型、String、集合
<bean id="HelloWorld" class=""com.gc.acion.HelloWorld" scope="singleton" autowire="autodetect" dependency-check="simple"></bean><bean id="date" class="java.Util.Date"></bean>
检查msg属性
object:依赖的对象
<bean id="HelloWorld" class=""com.gc.acion.HelloWorld" scope="singleton" autowire="autodetect" dependency-check="objects"></bean><bean id="date" class="java.Util.Date"></bean>
检查date属性
all:全部
<bean id="HelloWorld" class=""com.gc.acion.HelloWorld" scope="singleton" autowire="autodetect" dependency-check="all"></bean><bean id="date" class="java.Util.Date"></bean>
即检查msg也检查date
none:不检查(默认)
当bean属性都有默认值或者不需要检查bean的属性是否都需要设置到bean上时,依赖检查的作用就不是很大了。
本章讲的是Bean的注入方式,下一章讲集合的注入方式。
- Spring的核心容器Bean的基础知识(二)
- Spring的核心容器Bean的基础知识(一)
- Spring的核心容器Bean的基础知识(三)
- Spring 的核心容器
- Spring学习二:Spring管理Java Bean的容器介绍
- Spring之核心容器bean
- Spring之核心容器bean
- Spring之核心容器bean
- Spring容器-Bean的生命周期
- Spring容器-Bean的生命周期
- 基于java的Spring容器配置(二)(@Configuration,@Bean,@Import,@ImportSource)
- Spring中的IOC(二):容器对bean属性的装配
- Spring 源码深入解析之bean容器的基本实现(二)
- Spring(三)——核心容器Bean
- Spring核心学习(2)管理Bean的生命周期
- 自定义spring容器--spring容器读取bean配置文件的原理
- spring核心:bean工厂的装配 1
- spring核心:bean工厂的装配 2
- [BZOJ2056][gift? 高精度?][水题]
- memcache-介绍
- 已知中序遍历和先序遍历重建二叉树
- javascript 常见数据类型转换情形
- adb调试命令和通过无线网使用adb设置
- Spring的核心容器Bean的基础知识(二)
- [IDEA]快捷键学习2
- 三天打鱼两天晒网C语言编程
- qt中在不同类间传递参数的几种方式
- 网络面试题3
- Java复习——static关键字与main方法
- oracle localhost可连接,ip地址不能连接
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
- static的用法