`

Spring高级进阶

阅读更多

Java代码

   1. <?xml version="1.0" encoding="UTF-8"?>   
   2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"   
   3.    "http://www.springframework.org/dtd/spring-beans.dtd">   
   4. <beans>   
   5.   <bean id ="HelloWorld" class="com.jnotnull.HelloWorld">   
   6.    <property name ="message">   
   7.      <value>HelloWorld</value>   
   8.    </property>   
   9.    <bean>   
  10. </beans>   

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN" 
   "http://www.springframework.org/dtd/spring-beans.dtd"> 
<beans> 
  <bean id ="HelloWorld" class="com.jnotnull.HelloWorld"> 
   <property name ="message"> 
     <value>HelloWorld</value> 
   </property> 
   <bean> 
</beans> 


这里在配置bean的时候都指明了id,id是这个bean在配置文件中的唯一标识,当然也可以使用name,下面说说它们之间的区别:
id属性是在配置文件中标识Bean的,name属性则可以用来指定这个Bean的别名。因为XML规范对于id的合法字符有严格的规定,所以当用非法字符来配置id时候就不行了,这个时候可以通过name属性来解决。同时通过name属性可以指定多个id,这些id要用都好或者分号分割。
正如上面的代码中提到的格式
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
id属性用来表示整个bean,class属性用来表示这个bean真正代表的类,它是由路径加;类名组成。

在Spring中,Bean可以被定义为两种模式:单例模式和非单例模式(singleton or non-singleton)。而Spring默认的是单例模式,何谓单例模式,就是这个Bean只有一个实例存在,而不管有多少个对这个Bean的请求。而非单例模式则回在每次对这个Bean的请求中产生新的实例。简单的说就是:singleton只会被new一次,而non-singleton却在每次请求的时候都new一次。这就是区别。
上面提到,Spring中,Bean默认的模式是单例模式,我们来看看它的代码:
Java代码

   1. <?xml version="1.0" encoding="UTF-8"?>   
   2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"   
   3. "http://www.springframework.org/dtd/spring-beans.dtd">   
   4. <beans>   
   5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld">   
   6.   <property name ="message">   
   7.   <value>HelloWorld</value>   
   8.   </property>   
   9.  <bean>   
  10. </beans>   

   <?xml version="1.0" encoding="UTF-8"?> 
   <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN" 
   "http://www.springframework.org/dtd/spring-beans.dtd"> 
   <beans> 
   <bean id ="HelloWorld" class="com.jnotnull.HelloWorld"> 
     <property name ="message"> 
     <value>HelloWorld</value> 
     </property> 
    <bean> 
   </beans> 


当然我们可以显式的配置为singleton模式
Java代码

   1. <?xml version="1.0" encoding="UTF-8"?>   
   2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"   
   3. "http://www.springframework.org/dtd/spring-beans.dtd">   
   4. <beans>   
   5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld" singleton="true">   
   6.   <property name ="message">   
   7.   <value>HelloWorld</value>   
   8.   </property>   
   9.  <bean>   
  10. </beans>   

   <?xml version="1.0" encoding="UTF-8"?> 
   <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN" 
   "http://www.springframework.org/dtd/spring-beans.dtd"> 
   <beans> 
   <bean id ="HelloWorld" class="com.jnotnull.HelloWorld" singleton="true"> 
     <property name ="message"> 
     <value>HelloWorld</value> 
     </property> 
    <bean> 
   </beans> 


而要改为non-singleton模式则把singleton属性改为false就行了


在Spring的配置文件中,我们完成了对类的属性的注入:看看下面的代码:
Java代码

   1. <?xml version="1.0" encoding="UTF-8"?> 
   2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN" 
   3. "http://www.springframework.org/dtd/spring-beans.dtd"> 
   4. <beans> 
   5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld"> 
   6.  <property name ="message"> 
   7.  <value>HelloWorld</value> 
   8.  </property> 
   9. <bean> 
  10. </beans> 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
<property name ="message">
<value>HelloWorld</value>
</property>
<bean>
</beans>


这里的propeity标签对应于类中的属性,但是如何对其注入null值呢:
看看下面的代码:
Java代码

   1. <?xml version="1.0" encoding="UTF-8"?> 
   2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN" 
   3. "http://www.springframework.org/dtd/spring-beans.dtd"> 
   4. <beans> 
   5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld"> 
   6.  <property name ="message"> 
   7.  <value>null</value> 
   8.  </property> 
   9. <bean> 
  10. </beans> 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
<property name ="message">
<value>null</value>
</property>
<bean>
</beans>


或者
Java代码

   1. <?xml version="1.0" encoding="UTF-8"?> 
   2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN" 
   3. "http://www.springframework.org/dtd/spring-beans.dtd"> 
   4. <beans> 
   5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld"> 
   6.  <property name ="message"> 
   7.    <null/> 
   8.  </property> 
   9. <bean> 
  10. </beans> 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld">
<property name ="message">
   <null/>
</property>
<bean>
</beans>


配置同样非常方便
下面我们来看看如何实现依赖 depends-on
先看一下代码
Java代码

   1. <?xml version="1.0" encoding="UTF-8"?> 
   2. <!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN" 
   3. "http://www.springframework.org/dtd/spring-beans.dtd"> 
   4. <beans> 
   5. <bean id ="HelloWorld" class="com.jnotnull.HelloWorld" depends="date"> 
   6.  <property name ="message"> 
   7.    <value>HelloWorld</value> 
   8.  </property> 
   9. <property name ="date"> 
  10.    <ref local="date"/> 
  11.  </property> 
  12. <bean> 
  13. <bean id="date" class="java.util.Date"> 
  14. </beans> 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans Public "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id ="HelloWorld" class="com.jnotnull.HelloWorld" depends="date">
<property name ="message">
   <value>HelloWorld</value>
</property>
<property name ="date">
   <ref local="date"/>
</property>
<bean>
<bean id="date" class="java.util.Date">
</beans>


在这里我们在调用HelloWorld之前我们就必须调用date,对date进行初始化。这就是depends-on的工作方式。
分享到:
评论
1 楼 wen5566 2011-07-31  
这不是高级,乱来用名 ,:twisted:

相关推荐

Global site tag (gtag.js) - Google Analytics