`

学习Spring教程记录

 
阅读更多

Spring是一个从实际项目开发经验中抽取的可高度重用的应用框架。

主要思想:控制反转IOC和依赖注入DI

控制反转:就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控,控制权有应用代码转到了外部容器,控制权的转移,即所谓的反转。

依赖注入的目标并非为软件系统带来更多的功能,而是为提升组件的重用概率,并为系统搭建一个灵活地、可扩展的平台。

 

<beans>
     <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
       <property name="jndiName">
               <value>java:comp/env/jdbc/sample</value>
       </property>
     </bean>

     <bean id="sampleDAO" class="com.hammer.dao.SpringDAO">
             <property name="dataSource"><ref local="dataSource"><property>
</bean>
<beans>

 其中sampleDAO中的dataSource将由容器在运行期动态注入,而DataSource的具体配置和初始化工作将由容器在运行期完成。

对比传统的方式(通过编码初始化DataSource实例),我们可以看到,基于依赖注入的系统实现是相当灵活简洁的,sampleDAO只需要利用容器注入的DataSource实例,完成自身的业务逻辑,而不用关心具体的资源来自何处、由谁实现。

 类似于 原来是部署在webLogic中,在运行期,通过JNDI从容器中获得DataSource实例。假设部署的环境发生了变化,系统需要脱离应用服务器独立运行,这样,由于失去了容器的支持,原本通过JNDI获取的DataSource的方式失效,我们只需要简单修改dataSource的配置:

<beans>
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
         <property name="name"><value>org.git.mm.mysql.Driver</value></property>
         <property name="url"><value>jdbc:mysql://localhost/sample</value></property>
         <property name="username"><value>root</value></property>
         <property name="password"><value>root</value></property>
    </bean>
    <bean id="sampleDAO" class="com.hammer.springDAO">
         <property name="dataSource" ref="dataSource"></property>
    </bean>
</beans>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics