Spring浅析

本文深入探讨Spring框架中的控制反转和依赖注入机制,详细解释了接口注入、构造注入、设置注入等实现方式,并阐述了Spring Bean的封装机制及事物管理策略,包括声明式事务管理的实现步骤。

Spring 的两个核心概念控制反转和依赖注入,何为控制反转依赖注入,开起来貌似很牛逼,其实也就那么回事,我看来也就是说以前我如果想调用另外一个类的方法,我肯定要创建这个类的一个实例,再来调用他的方法。现在我反过来,我现在如果想用一个类的方法,我不用去创建一个实例,我通过Spring的配置文件来找到,注入到我这个类中的对象,也就是说靠那个XML文件,在本类中加入另外一个类的实例,在本类中get到这个属性,并且调用其方法即可。控制反转和依赖注入就是一个意思来个官方的解释:

在程序运行期间由容器将依赖关系注入到组件中

DI的几种实现:

1.接口注入,我感觉就是利用JAVA的反射机制来实现的,public class a {

private interfaceB interB;

public init(){

Object obj= class.forName("xx.xx.interBimpl").getInstance();//通过这个反射得到那个类的一个实例

interB=(interfaceB)obj;

}

}

2.构造注入 就是通过构造函数注入 感觉没啥用处啊

public class a {

private DataSource ds;

private String msg;

 

 a(DataSource ds ,String msg ){

this.ds=ds;

this.msg=msg;

}

}

3.设值注入 也就是通过get set方法注入

这个没啥讲的 比如你要往service注入DAO 那么你就把这个DAO的实例当做一个属性设置GET SET 方法即可 在后台的XML配置相应的注入就可以使用了

 

 

Spring Bean的封装机制

 

1.BeanWrapper 这个类的原理就是利用JAVA的反射机制,得到这个类的一个实例。

Object obj = Class.forName("com.xxx.user");

BeanWrapper bw =new BeanWrapper (obj);//

bw.setProperty("name","James");

2.BeanFactory

负责通过读取配置文件内容来管理Beans,这样的Beans被定义在配置文件中

1.配置属性值与依赖关系

2.配置创建模式 单例模式还是其他 单例模式只是创建对象的引用  其他模式创建新的Beans

3.配置初始化和销毁方法

4.配置依赖关系

<bean id="a" class=‘com.class.a’>

<property name="DataSource">

<ref local="datasource"></ref>

</property>

</bean>

 

<bean id="datasource" class="com.xxx.datasource"/>

 如上的配置就可以实现BeanFactory创建类a的时候就会动态创建datasource类,并且通过set方法注入到a中。

 

Spring的事物管理

1.Srping提供两种方式管理事物:第一种就是JDBCTemplate 或者与HibernateTemplate进行代码级别事物管理,利用这俩进行事物管理必然造成大量的代码重复,虽然把JDBC相关事务的一些方法进行了封装,但是还是不够简便。

2.声明式事务管理:这才是Spring的特点,如何进行声明式的事务管理呢,首先进行Application.xml配置,先介绍原理,通过配置一个DAO的代理,来管理这个DAO里面的增删改查的事务性,

< bean id='UserDAOPoxy' class="org.spring.xx.xx.TransactionPoxyFactoryBean">//定义一个DAO代理

<property name="TransactionManager">

<ref bean="TransactionManager"></ref>//注入Spring的事务管理类

</property>

<property name="target">//设置代理的目标

<ref local="UserDAO"></ref>

</property>

<property name="transactionAttribute">//设置事务传播特性

<props>

<prop key="insert">PROPAGATION_REQUIAED</prop>//这个大写字母是说明事务传播特性如果调用insert则创建一个新的事务

<prop key="*">PROPAGATION_REQUIAED,READ-ONLY</prop>

</props>

</property>

<bean id="UserDAO" class=‘com.class.userdao>

<property name="DataSource">

<ref local="datasource"></ref>

</property>

</bean>

如果Spring加入Hibernate则只需要加入相应的SessionFactory即可,事务管理还是这样。

 

 

 

 

</bean>

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值