Spring学习笔记

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

IoC(Inversion of Control)中文译为控制反转又称为"依赖注入"(DI =Dependence Injection)IOC的基本概念是:不创建对象,但是描述创建它们的方式.在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务.容器负责

 

Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

 

<?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="dateBean" class="java.util.Date"/>
         <bean id="helloBean" class="onlyfun.caterpillar.HelloBean">
             <property name="helloWord">
                 <value>Hello!</value>
             </property>
             <property name="date">
                 <ref bean="dateBean"/>
             </property>
         </bean>
</beans>
在Spring的配置文件中,如果类中的属性是基本类型,那么在配置文件中就以
<property name="helloWord">
<value>Hello!</value>
</property>
这种方式定义。如果属性是某一个类就用
<property name="date">
<ref bean="dateBean"/>
</property>
这种方式定义。


<?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="date" class="java.util.Date"/>
         <bean id="helloBean"
               class="onlyfun.caterpillar.HelloBean"
          
autowite="byType".>
             <property name="helloWord">
                 <value>Hello!</value>
             </property>
         </bean>
</beans>
autowite表示自动绑定,不用再定义档中声明,Spring会自动寻找xml与类中匹配的类型,还可以使用autowite="byName".autowire="constructor"表示在构造方法上实施绑定

集合物件注入:
      
      
對於像陣列、java.util.List、java.util.Set、java.util.Map等集合物件,在注入前必須填充入一些物件至集合中,然後再將集合物件注入至所需的Bean中,例如若有個Bean如下:

public class SomeBean {
         private String[] someStrArray;
         private SomeObj[] someObjArray;
         private List someList;
         private Map someMap;
}
對於這個需求,Spring也可以幫您維護,直接來看Bean定義檔如何設定:
<beans>
         <bean id="someBean" class="onlyfun.caterpillar.SomeBean">
             <property name="someArray">
                 <list>
                     <value>Hello!Justin!</value>
                     <value>Hello!Momor!</value>
                     <value>Hello!Bush!</value>
                 </list>
             </property>
             <property name="someObjArray">
                 <list>
                     <ref bean="someObj1"/>
                     <ref bean="someObj2"/>
                 </list>
             </property>
             <property name="someList">
                 <list>
                      <value>Hello!Justin!</value>
                      <ref bean="someObj1"/>
                      <ref bean="someObj2"/>
                 </list>
             </property>
             <property name="someMap">
                 <map>
                      <entry key="somekey1">
                          <ref bean="someObj1"/>
                      </entry>
                      <entry key="somekey2">
                          <value>Hello!Justin!</value>
                      </entry>
                 </map>
             </property>
         </bean>
</beans>
           上面的Bean定義檔是個綜合示範,陣列與List物件都是用<list>標籤來設定,而Map物件使用<map>標籤設定,並需要一個key值設定

你可能感兴趣的:(spring,AOP,bean,配置管理,IOC)