spring_ioc_demo(基于xml)与DI依赖注入

spring_ioc的demo

操作步骤
导入依赖坐标→创建bean→
创建xml文件并将bean配置到文件中→
创建applicationcontext对象来从容器中得到bean→
测试调用bean的方法,可调用成功即说明有bean
1.
pom文件导入spring-context的坐标
在这里插入图片描述

创建接口
在这里插入图片描述

创建接口实现类
在这里插入图片描述

创建xml文件并配置bean
在这里插入图片描述

在这里插入图片描述

创建测试类,获取bean,调用方法
在这里插入图片描述
运行结果
在这里插入图片描述
小结:这种方法可以替代原来new+类名的方法来创建对象,不用在一个包中导入另外一个包,从而达到解耦合的效果,但相应的代价是要求配置额外的xml文档,但xml属于文档类,修改起来只需要改动一个文件,较为方便。

————————————————————————

xml中的bean标签属性:
在这里插入图片描述

1、id——bean的唯一标识
2.、class——bean所在类的路径
3、scope:singleton; prototype; request; session; global session——默认是singleton
4、init-method——bean被创建时会被调用的方法,在无参构造之后执行
5、destroy-method——bean被销毁时会被调用的方法(singleton类型bean调试时要看到这个销毁方法被调用就要手动调用applicationcontext对象的close方法【需要强转为子类,或者一开始就用子类】)
在这里插入图片描述

!!!注:
singleton代表spring容器中只创建一次bean,即在读取xml文件时创建bean,并之后getbean取的bean都是同一个。bean的生命周期与容器的生命周期一致

prototype代表spring容器中可有多个这个bean,但其是在applicationcontext对象使用getbean的时候被创建,与singleton不同,每一次getbean获得的bean是不同的。bean的生命周期看gc判断其长时间未使用来回收

————————————————————————

bean实例化的三种方式:
1)无参构造——上述即为无参构造方式
2)工厂静态
首先编写一个简单的工厂类和静态方法
在这里插入图片描述然后修改xml配置
在这里插入图片描述
让spring知晓调用哪个地方的工厂方法来创建bean

同样用上面的测试,方法能调用即成功

3)工厂动态

先告知spring动态工厂的位置|——配置xml
在这里插入图片描述
再编写动态工厂类与方法
在这里插入图片描述
再告知spring用什么工厂,什么方法,创造什么id的bean
在这里插入图片描述
配置好后同样用上面的测试,调用方法即为成功

————————————————————————

set方法依赖注入:

业务模型分三层——dao,service,web
service会调用dao的方法
即service依赖于dao

spring可以靠配置来降低其依赖关系——依赖注入

1)编写service中的set方法
在这里插入图片描述
配置xml注入
在这里插入图片描述

ref指的是要注入的bean的id
name指的是set方法set的东西

(这里有个问题,即当dao包里面impl包与service包里的impl包不同名就会报错【比如dao.daoimpl与service.impl这种】,暂时不明原因)

测试controller成功
在这里插入图片描述

小结:这种注入可以部分解耦合,但还是要求有set方法

————————————————————————
p命名空间依赖注入
1)先给xml添加p命名空间
在这里插入图片描述

2)修改bean标签写法
在这里插入图片描述
————————————————————————

构造方法注入
1)修改serviceimpl类,即删除上面的set方法,改为有参构造
在这里插入图片描述
2)配置xml
在这里插入图片描述
————————————————————————
property注入还可以注入普通属性值
用value属性来注入

————————————————————————
xml的import

在这里插入图片描述
可分模块配置,然后导入总xml文件即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值