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

被折叠的 条评论
为什么被折叠?



