spring 重读思考

本文介绍了Spring框架的核心概念及其依赖注入机制,并详细展示了Spring与MyBatis整合的具体配置过程,包括BeanFactory和BeanWrapper的作用及数据持久层的支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   用过spring很长一段时间了,中间有放掉了一段时间,现在重新阅读文档,寻找我所需要的。

首先说一下spring的DI或者IOC,先不要把它放到神坛上,它的通俗说法是:控制权从应用程序转移到了外部的容器中,这种控制权的转移就叫控制反转或者依赖注入。这个主要讲的就是应用程序和容器之间的关系。依赖注入的目的并不能为软件带来更多的功能,它主要是为了提升软件组件的重用概率,并未系统搭建一个灵活可扩展的平台。

    spring框架核心的核心是两个类,名称是BeanWrapper和BeanFactory,这两个类从技术上说并不复杂,如果想深入了解spring,那么就一定要阅读它的源码。BeanWrapper是提供了一套通用的属性设定机制,是spring依赖注入的基础。BeanFactory负责创建和维护Bean实例。BeanWrapper使用了反射的机制来实现获取注入bean的类型,属性和方法。BeanFactory是生成Bean的工厂模式。

下面是一个bean注入的全部配置情况的样例:

<beans>
<description>This is a bean-configuration xml file</description>
<bean id="TheAction"
      class="com.seacean.action.HelloAction"
   singleton="true"
   init-method="init"
   destroy-method="cleanup"
   depends-on="ActionManager">
   <property name="message">
       <value>Hello</value>
   </property> 
   <property name="desc">
       <null/>
   </property>
   <property name="dataSource">
       <ref local="dataSource"/>
   </property>
</bean>
<bean id="dataSource" class="DataSource">
      <property name="jndiName">
       <value>java/sample</value>
   </property>
</bean>  
</beans>

 

ApplicationContext

spring的引入就是在web.xml中引入spring的listerner就可以了。spring的ApplicationContext是用来保存配置信息的。

下面的语句是获取ApplicationContext的:

ApplicationContext ctx=new FileSystemXmlApplicationContext("bean.xml");

Bean bean=(Bean)ctx.getBean("Bean");

 

spring对数据持久层做出的贡献

这个可能是它最大的优点了。对J2EE程序来说,事务的处理一般有两种模式:

1.依赖特定事务资源的事务处理

     这是应用开发中最常见的开发模式,就是通过特定资源提供的事务管理机制来管理事务。例如:JDBC

2. 依赖容器的参数化事务管理

 

mybatis与spring的整合,主要看一下spring的applicationContext.xml文件中的配置:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
       
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
       
<property name="url" value="jdbc:mysql://localhost:3306/hlp?useUnicode=true&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull"></property>
       
<property name="username" value="root"></property>
       
<property name="password" value="1234"></property>
       
<property name="maxActive" value="100"></property>
       
<property name="maxIdle" value="30"></property>
       
<property name="maxWait" value="500"></property>
       
<property name="defaultAutoCommit" value="true"></property>
   
</bean>

   
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
       
<property name="configLocation" value="classpath:MyBatis-Configuration.xml"></property>
       
<property name="dataSource" ref="dataSource" />
   
</bean>

 Dao与Service接口如下所示:

 <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
       
<property name="mapperInterface" value="com.mybatis.UserDao"></property>
       
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
   
</bean>

   
<bean id="userService" class="com.mybatis.UserServiceImpl">
       
<property name="userDao" ref="userDao"></property>
   
</bean>

  

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值