Spring

第一篇

最初创建对象 需要new,service和serviceimpl耦合度高。

我们解耦的做法:首先我们使用反射获取字节码文件 然后newInstance实例化对象,这样解耦。反射需要全限定类名,不能写死,此时引入bean配置所有的对象。然后需要加载这个文件,解析获取bean,放到一个map中。
这是针对一个对象,项目中有很多个对象,我们需要一个容器,将所有的对象都放在这个容器中。使用的时候从容器获取。

Spring的做法:项目启动 加载xml文件 解析bean 放到容器中 需要的时候去容器获取
ApplicationContext ac = new ClassPathXmlApplicationContext() 根据类路径吓加载xml文件
ac.getBean();

scope 对象的作用域 singleton(线程安全对象使用) prototype(struts2的动作类)

init-method 初始化方法 (例如对象创建成功 容器加载后就调用start方法线程启动 )

destory-method 容器关闭对象销毁(只有scope=singleton 开启的一些资源需要销毁) ac.close()方法关闭

创建对象的三种方式 反射调用构造方法 静态工厂 实例化工厂

DI 依赖注入
构造方法注入 constructor-arg 基本类型 list类型 map类型
set方法注入 property 基本都用这个

编写xml文件 每个bean文件就相当于new对象 new对象时默认无参构造 如果依赖注入使用的是有参构造 xml报错 需要在xml中配置初始化参数

第二篇:
Spring 默认不支持注解 需要导入相应坐标 开启注解们的支持 comcontent-scan
开启包扫描 <context:component-scan base-packing=""></context:component-scan> 根据包名扫描此包及包下所有注解
交给spring容器管理的注解
@component 工具类 @configuration声明配置类
@controller @service @Repository
依赖注入 @Autowired

图灵视频:
提问::Sping 如何解决循环依赖问题

之前配置一个bean 需要在xml 中定义 使用classpathxmlApplacationContext
后来使用注解 configuration 表明是一个配置类 类里面使用注解bean 使用AnnotationConfigApplicationContext加载

包扫描使用:componentScan

bean的作用域对象:scope:默认singleton 恶汉试加载 容器启动加载 配合Lazy注解 指定为懒加载
prototype:懒汉式 第一次请求时再加载
request
session
Conditional注解:进行条件判断 如果容器中有莫个组件 就执行

提问::向IOC容器添加组件的方式
1.@bean
2.Companscan +controller service + compent repository
3:@import 场景 导入第三方组件
4.factorybean

bean的初始化 销毁方法
bean上配置init-method 容器启动就会调用初始化方法

@value + PropertySource 给属性赋值 导入xml 配置文件

提问::依赖注入默认按照什么形式注入
2.9自动装配 @Autowired 默认
Spring容器时key value 形式 key 为自定义的名称 value 为实现类全路径
自动注入首先 会查找 实现了我们需要 注入接口的实现类 如果只有一个直接拿来 如果有多个 会按照名称匹配 匹配不到报错

bytype是默认的注入方式,Spring会到容器中寻找实现了interface的Bean
1.找不到任何一个bean => 报错
2.找到一个 => 直接注入
3.找到多个 => 并不一定会报错,按照字段名字推断选择哪个bean

3.1@profile 指定运行环境

第二篇
Spring 容器流程
spring bean的实例化过程
bean和bean定义 bean的定义只有bean的信息
Sring 如何解决循环依赖
首先什么是循环依赖
Person{
Car car
}
Car{
Person person
}
这两个对象相互依赖 创建Person 对象时需要 依赖Car chu
多例对象无法解决循环依赖 因为多例对象没有进行缓存

第三节:
生命周期:
getBean的时候发生了什么
单利缓冲池:
多利没有进行缓存 所以解决不了循环依赖

spring 会分别实例化 构造方法 工厂方法
没有初始化的对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值