码迷,mamicode.com
首页 > 编程语言 > 详细

Spring注意事项

时间:2016-05-16 12:33:06      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

(1),每一个bean属性,就是一个普通的java类。
类有属性,有方法,如何交给容器管理。(注解的方式,xml方式配置)
(2),通过Bean来实例化对象的方式
1.通过构造器(一般是无参的默认构造器)
<bean id="exampleBean" class="examples.ExampleBean"/>
<bean name="anotherExample" class="examples.ExampleBeanTwo"/>
2.使用静态工厂方法实例化
下面的bean定义展示了如何通过工厂方法来创建bean实例。注意,此定义并 未指定返回对象的类型,仅指定该类包含的工厂方法。
在此例中, createInstance()必须是一个static方法。
<bean id="exampleBean"
class="examples.ExampleBean2"
factory-method="createInstance"/>
(3),使用实例工厂方法实例化
(4), 注入依赖
依赖注入(DI)背后的基本原理是对象之间的依赖关系(即一起工作的其它对象)只会通过以下几种方式来实现:
构造器的参数、工厂方法的参数,或给由构造函数或者工厂方法创建的对象设置属性。
因此,容器的工作就是创建bean时注入那些依赖关系。相对于由bean自己来控制其实例化、
直接在构造器中指定依赖关系或者类似服务定位器(Service Locator)模式这3种自主控制依赖关系注入
的方法来说,控制从根本上发生了倒转,这也正是控制反转(Inversion of Control, IoC) 名字的由来。

应用DI原则后,代码将更加清晰。而且当bean自己不再担心对象之间的依赖关系
(甚至不知道依赖的定义指定地方和依赖的实际类)之后,实现更高层次的松耦合将易如反掌。
DI主要有两种注入方式,即Setter注入和构造器注入
(5),在采用构造器注入的方式配置bean时,很有可能会产生循环依赖的情况。
比如说,一个类A,需要通过构造器注入类B,而类B又需要通过构造器注入类A。
如果为类A和B配置的bean被互相注入的话,那么Spring IoC容器将检测出循环引用,
并抛出 BeanCurrentlyInCreationException异常。
对于此问题,一个可能的解决方法就是修改源代码,将某些构造器注入改为setter注入。

(6),依赖配置详解
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

<!-- results in a setDriverClassName(String) call -->
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
<property name="username" value="root"/>
<property name="password" value="masterkaoli"/>
</bean>

(7),各类数据类型的依赖注入

<bean id="moreComplexObject" class="example.ComplexObject">
  <!-- results in a setAdminEmails(java.util.Properties) call -->
  <property name="adminEmails">
    <props>
        <prop key="administrator">administrator@example.org</prop>
        <prop key="support">support@example.org</prop>
        <prop key="development">development@example.org</prop>
    </props>
  </property>
  <!-- results in a setSomeList(java.util.List) call -->
  <property name="someList">
    <list>
        <value>a list element followed by a reference</value>
        <ref bean="myDataSource" />
    </list>
  </property>
  <!-- results in a setSomeMap(java.util.Map) call -->
  <property name="someMap">
    <map>
        <entry>
            <key>
                <value>an entry</value>
            </key>
            <value>just some string</value>
        </entry>
        <entry>
            <key>
                <value>a ref</value>
            </key>
            <ref bean="myDataSource" />
        </entry>
    </map>
  </property>
  <!-- results in a setSomeSet(java.util.Set) call -->
  <property name="someSet">
    <set>
        <value>just some string</value>
        <ref bean="myDataSource" />
    </set>
  </property>
</bean>

 

Spring注意事项

标签:

原文地址:http://www.cnblogs.com/lwy19998273333/p/5497614.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!