spring Framework 框架

Spring Framework
1.ioc 控制反转依赖注入
2.aop 面向切面编程
3. dao 数据源(连接池),事务封装
4. mvc 接请求,返响应

Spring ioc

inversion of control 控制反转
dependency injection 依赖注入

ioc全权管理项目中所使用到的对象,管理对象的生命周期(构建,装配,销毁)

控制反转:从主动获取对象的实例(new),变成被动等待,等待ioc容器的注入
依赖注入:首先通知ioc要为对象中属性建立依赖,Ioc执行注入的操作。

ioc的优点:

1.项目中所有使用的实例,通过ioc管理,可以实现对于资源的可配置与管理。
2.所有由Ioc容器管理的实例。默认实例化为单例模式。无需程序员书写单例内容。
3.在Ioc容器完成对于对象的实例化阶段后,把对象之间的依赖关系全部执行注入。
缺点:耗费更多的时间。

装配:我用什么你给我调用什么。
ioc容器来销毁。
IOC管理的容器为been,由ioc管理

依赖注入:

1 setter注入:property 属性 名称对应的方法 对应set方法。
属性iocDao setIocDao

public void setIocDao (IocDao iocDao) {
this.iocDao = iocDao;
2.构造器注入:constructor-arg ref="" 传参的构造方法。建议不要使用大量的参数

public IocServiceImpl(IocDao iocDao) {
this. iocDao = iocDao ;}
3.lookup注入(不推荐使用)

been标签的属性:(谁先实例化,bean标签在上的先实例化)

id:唯一标示符(在ioc容器中,id必须是唯一的,从ioc容器中获取指定对象)
命名规范:1.如果实现类实现了接口id=“首字母小写” id=“本身多个接口”
2.如果实现类没有实现接口:id则使用该类本身的名字
name:标示符,也可以像id一样去用,建议写id。
3.class:可以被实例化的对象(接口与抽象类不可以)
4. init-method=“init” 该对象已经全部实例化(依赖注入)完成 ,才会执行的方法 ,类实例化完毕后调用的方法。
destroy-method=“destroy” 在ioc容器中准备销毁该对象时,执行的方法。类实例销毁前调用的方法。
不用这个单例对象时不会销毁的,服务器启动到服务器关闭这个对象实例化一次,
依赖注入后,ioc容器会实例化一次,不管你用不用都会实例化,怎么做到用哪个实例化哪个呢?
5. lazy-init : 延迟实例化,bean(不会随着ioc容器启动而实例化)而是调用的时候实例化。lazy-init=“true”
6. default-lazy-init–> beans 适用于全局配置延迟实例化装配。
7. depends-on 依赖于谁。优先实例化的对象。不能死循环。
先实例化逻辑层–>数据层–>逻辑层完成
8. parent=“父类的名称” 父类数据共享。
9. scope 作用域 scope=“singleton” 默认单例模式 (内存一样) 中间只有一个类实例,随着容器去创建
prototype” 选项 原型模式(内存不同) 在ioc容器创建时没有必要实例化。创建一次全新的类实例
request” 请求范围 创建一次
session” 会话范围 sessionId 创建一次
globalSession” 全局会话范围 创建一次
10.Autowire:自动装配–>手动装配(主动完成注入)
byname:根据实现类中set方法的名称匹配ioc中bean的id(速度快)setter注入,如多个参数,设置他们的属性,提供set方法
byType:根据实现类中set方法的参数的类型自动匹配(更加强大,更高的容错率,速度慢)setter注入。
constructor:根据构造方法中参数的名称匹配bean的id完成自动装配。构造器中参数的类型自动匹配。(优先按名称装配,没有的话,优先类型装配,如出现primary优先装配)
Primary:(true/false)优先装配。
reousrce: 按名称装配。java包
Autowired:依赖注入(推荐使用)按类型装配
qualifier(value=“iocDao”):按名称,使用Autowired配合

ioc管理对象的方式:

方案1:主动注册(主动把bean注入ioc容器中,用谁调谁,快)

方案2:被动扫描(扫描的路径-第三方的包-慢)
<context:component-scan base-package=“com.javakc.spring”/>
context 指的是ioc容器的上下文对象
scan:扫描,由ioc容器管理的实例
base-package:扫描包l路径位置。

use-default-filters:“true/false”是否使用ioc提供默认的

ioc扫描时只认识这4个注解:
@Controller 表现层实现类
@Service 逻辑层实现类
@Repository 数据层实现类
@Component 其他实现类

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值