Spring Bean基本管理
一、使用setter方式完成依赖注入
public class HelloBean {
private String helloWord;
private Date date;
......
}
public class TDemo {
public static void main(String[] args){
ApplicationContext acc=new ClassPathXmlApplicationContext("applicationContext.xml");
HelloBean hb=(HelloBean)acc.getBean("helloword");
System.out.println(hb.getHelloWord());
}
}
<beans
<bean id="helloword" class="org.jack.com.HelloBean">
<property name="helloWord" value="hello word !!!"></property>
</bean>
</beans>
二、使用constructor方式完成注入
public class HelloBean {
private String helloWord;
private String name;
public HelloBean(String helloWord,String name){
this.helloWord=helloWord;
this.name=name;
}
........
}
public class TDemo {
public static void main(String[] args){
ApplicationContext acc=new ClassPathXmlApplicationContext("applicationContext.xml");
HelloBean hb=(HelloBean)acc.getBean("ides");
System.out.println(hb.getHelloWord());
System.out.println(hb.getName());
}
}
<beans
<bean id="ides" class="org.jack2.com.HelloBean">
<constructor-arg index="0" value="我的世界,我来做主!!!">
</constructor-arg>
<constructor-arg index="1" value="我的名字,jack!">
</constructor-arg>
</bean>
</beans>
三、属性参考
public class HelloBean {
private String helloWord;
private Date date;
..........
}
public class TDemo {
public static void main(String[] args){
ApplicationContext acc=new ClassPathXmlApplicationContext("applicationContext.xml");
HelloBean hb=(HelloBean)acc.getBean("helloword");
System.out.println(hb.getHelloWord());
System.out.println(hb.getDate());
}
}
<beans
<bean id="datetime" class="java.util.Date"></bean>
<bean id="helloword" class="org.jack3.com.HelloBean">
<property name="helloWord" value="这个世界是好,是坏,都控制在自己心态!!!">
</property>
<property name="date" ref="datetime">
</property>
</bean>
</beans>
四、综合的总结:
普通类:
public class Ts {
private String helloWord;
private Date date;
public Ts(){}
public Ts(Date date){
this.date=date;
}
}
测试类:
public static void main(String[] args){
ApplicationContext acc= new ClassPathXmlApplicationContext("applicationContext.xml");
Ts t=(Ts)acc.getBean("根据实际情况填写");
System.out.println("date: "+t.getDate());
System.out.println("helloWord: "+t.getHelloWord());
}
配置文件如下:
<beans
<bean id="date" class="java.util.Date"></bean>
<!-- 以指定属性的形式,写配置文件 -->
<!--
<bean id="tt" class="org.jack.com.Ts">
<property name="helloWord" value="你还,好吗?"></property>
<property name="date" ref="date"></property>
</bean>
-->
<!-- autowire="autodetect"; 这个自动绑定是Spring会尝试用入constructor来处理依赖关系的建立 -->
<!--
<bean id="ts" class="org.jack.com.Ts" autowire="autodetect">
<property name="helloWord" value="hello!!!"/>
</bean>
-->
<!-- autowire="byType";即可完成bean属性的按类型自动绑定 -->
<!--
<bean id="hw" class="org.jack.com.Ts" autowire="byType">
<property name="helloWord" value="hello!!!"/>
</bean>
-->
<!-- autowire="byName";即可完成bean属性的按名称自动绑定 -->
<!--
<bean id="helloBean" class="org.jack.com.Ts" autowire="byName">
<property name="helloWord">
<value>Hello!</value>
</property>
</bean>
-->
<!-- autowire="constructor";即可完成bean属性的按构造方法自动绑定。在建立依赖关系时,
Srping容器会试图比对容器中的Bean实例类型,及相关的构造方法上的参数类型,看看在类型上是否符合,
如果有的话,则选用该构造方法来建立Bean实例。 -->
<!--
<bean id="helloBean" class="org.jack.com.Ts" autowire="constructor">
<property name="helloWord">
<value>今天应该完成的任务!!!</value>
</property>
</bean>
-->
<!-- 在自动绑定中,由于没办法从定义文件中,清楚地看到是否每个属性都完成设定,
为了确定某些依赖关系确实建立,您可以假如依赖检查,在<bean>标签使用时设定"dependency-check",
可以有四种依赖检查方式:simple、objects、all、none。
simple:只检查简单的类型(像原生数据类型或字符串对象)属性是否完成依赖关系,。
objects:检查对象类型的属性是否完成依赖关系。
all:则检查全部的属性是否完成依赖关系。
none:设定是默认值,表示不检查依赖性。 -->
<bean id="ts" class="org.jack.com.Ts" autowire="autodetect" dependency-check="all">
<property name="helloWord" value="hello!!!"/>
</bean>
</beans>