`

[SXT][WY]Spring05 Bean的作用域及自动装配

阅读更多

Bean的作用域

 

spring Bean的作用域:
 
scope可以取值: 
 * singleton:每次调用getBean的时候返回相同的实例
 * prototype:每次调用getBean的时候返回不同的实例

 

<bean id="bean1" class="com.bjsxt.spring.Bean1" scope="prototype"/>

 

public class ScopeTest extends TestCase {
 
 private BeanFactory factory;
 
 @Override
 protected void setUp() throws Exception {
  factory = new ClassPathXmlApplicationContext("applicationContext-*.xml"); 
 }

 public void testScope1() {
  Bean1 bean11 = (Bean1)factory.getBean("bean1");
  Bean1 bean12 = (Bean1)factory.getBean("bean1");
  if (bean11 == bean12) {
   System.out.println("bean11==bean12");
  }else {
   System.out.println("bean11!=bean12");
  }
 }
}

 

根据名称自动装配.

 

<?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:aop="http://www.springframework.org/schema/aop"
      xmlns:tx="http://www.springframework.org/schema/tx"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"
           default-autowire="byType"    //这里开启了按照名称自动装配
           >
 
 <!--
 <bean id="bean2" class="com.bjsxt.spring.Bean2">
  <property name="bean3" ref="bean3"/>
  <property name="bean4">
   <ref bean="bean4"/>
  </property> 
  <property name="bean5" ref="bean5"/>
 </bean>
  -->
 
 <bean id="bean2" class="com.bjsxt.spring.Bean2"/> //bean2并没有显式地依赖某个类,而是bean2的属性名 如果与配置文件中的<bean>id一致,则bean2被自动装配依赖关系
  
 <bean id="bean5111" class="com.bjsxt.spring.Bean5">
  <property name="age" value="20"/>
 </bean>
</beans>

 

根据类型自动装配

 

<?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:aop="http://www.springframework.org/schema/aop"
      xmlns:tx="http://www.springframework.org/schema/tx"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"
           default-autowire="byType"  //启动了按照类型自动装配
           >
 
 <!--
 <bean id="bean2" class="com.bjsxt.spring.Bean2">
  <property name="bean3" ref="bean3"/>
  <property name="bean4">
   <ref bean="bean4"/>
  </property> 
  <property name="bean5" ref="bean5"/>
 </bean>
  -->
 
 <bean id="bean2" class="com.bjsxt.spring.Bean2"/> // bean2中有属性的类型为com.bjsxt.spring.Bean5,则下面的bean5111会被自动装配。属性名和bean名不需要一样
  
 <bean id="bean5111" class="com.bjsxt.spring.Bean5">
  <property name="age" value="20"/>
 </bean>
</beans>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics