Spring视频教程——依赖注入

IOC(控制反转)也可以称之为DI(依赖注入):
控制反转:将创建对象、属性值的方式进行了翻转,从new、setXxx(),_翻转为了_从springIOC容器getBean()
依赖注入:将属性值注入给了属性,将属性注入给了bean,将bean注入给了ioc容器;

三种方式的依赖注入、给各种集合类型的属性注入

DI(依赖注入):举例说明:有两个类一个是Teacher、一个是Course,其中Course类中依赖于Teacher类,里面有教师的信息,这时候写配置文件xml的时候就可以写两个<>标签,其中Course类中含有Teacher类;

  • IOC容器赋值:
  1. 如果是简单的Java类(8个基本类型+String),value;
  2. 如果是对象类型,ref = "需要引用的id值" ,因此实现了对象与对象之间的依赖关系;
  • 依赖注入的3种方式:
  1. set注入:通过setXXX()赋值,依赖注入底层是通过反射完成的;使用标签的关键字是<property....>
  2. 构造器注入:通过构造方法赋值;使用标签的关键字是<constructor-arg.>,需要注意注入属性的顺序应该和构造方法属性的顺序一致,如果不一致要设置type、name或index进行指定;
  3. p 命名空间注入:首先要引入命名空间xmlns:p=....;然后直接在bean标签进行属性赋值;简单类型可以直接p:属性名="属性值",引用了类型(除了String)要通过p:...-ref="属性值";注意p之间有空格;

方式一:

方式二:

方式三:

注入各种集合数据类型:list set map properties  也是可以的;

set 、list、数组各自有各自的标签<set>、<list>、<array>,但是也可以混着用;

map使用<map> 搭配 <entry>标签

特殊值的注入问题和各种类型的自动装配:

  • value与<value>注入方式的区别:

                      

其中赋值"" 或者null的时候,"" 可以直接不在标签中写值,null 的时候没有value值,并且要写成 <null/> 的形式;

                                   

在 IOC 容器中定义 bean 的前提,该 bean 的类必须提供了无参构造;

自动装配(只适用于 ref 类型):可以不再使用<>标签给course类中的teacher进行赋值,而是直接在bean中添加一个 autowire = "byName" 进行自动装配;自动装配虽然可以降低代码量,但是会降低程序的可读性,使用时需要谨慎;

<bean ... class=" org.lanqiao.entity.Course" autowire="byname || bytype || constructor”> byName 本质是 byld

byName:自动寻找其他bean的id值 = 该Course类的属性名
byType:其他bean的类型(class)是否与该Course类的ref属性类型一致,但是如果有多个类型一致会出现问题;
constructor:其他bean的类型(class)是否与Course类旳构造方法参数的类型一致;

如果想以后给所有的bean标签自动装配,可以在头beans中写入:

使用注解定义bean:通过注解的形式,将bean以及相应的属性值放入IOC容器中;

范例:

首先扫描该包有没有注解,如果有注解就把它放到IOC里面去;注解使用  符号;

  • 如果不清楚要用哪一层时使用:@Component 细化:
  • 如果很清楚在哪一层时:dao层注解--@Repository;service层注解:@Service;控制器层注解:@Controller;

使用注解实现声明式事务:

  • 引入架包;

  • 配置:在xml文件中增加必要代码,<!--增加对事物的支持-->  <tx:annotation-driven transaction-manager="txManager" />

  • 使用:将需要成为事务的方法前面加上注解,@Transactional (readOnly=false,propagation=Propagation.REQUIRED) 要么都成功,要么都失败;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值