0
点赞
收藏
分享

微信扫一扫

SpringIOC

Resin_Wu 2024-10-05 阅读 16

什么是IOC?

控制反转,依赖注入

控制什么

控制对象的创建和销毁

反转什么

将对象的控制权交给Ioc容器

Bean的实例化

1.通过默认构造方法实例化Bean

2.通过静态工厂方法实例化Bean

3.通过实例工厂方法实例化Bean

4.Bean的别名

Bean的注入方式(DI)

 构造方法

简写:

set方法

ref指向BeanID,value赋予简单值

简写

集合类型

注入null值

 注入内部Bean

Bean作用域

Singleton作用域(单例模式)

只有一个实例Bean对象,会被多个线程反复修改,所以它线程不安全

Prototype作用域(多例模式)

每个线程都会new一个实例,线程之间不影响,所以线程安全

Bean依赖

Web环境作用域

request作用域:每个request请求都会创建一个单独的实例。

session作用域:每个session都会创建一个单独的实例

Bean的懒加载 

默认情况下,Spring容器会在创建容器时提前初始化Singleton作用域的bean。如果开启了懒加载,Bean被标注了lazy-init="true",则该Bean只有在其被需要的时候才会被初始化。

注意:只对Singleton单例作用域的Bean有效

1.为某个Bean设定懒加载

2.为所有的Bean设定懒加载(配置文件最外层的beans标签中)

适用场景:如果某个Bean在程序整个运行周期都可能不会被使用,那么可以考虑设定该Bean为懒加载。

优点:尽可能的节省了资源

缺点:可能会导致某个操作响应的时间增加

Bean的初始化和销毁

Bean初始化

如果需要在Bean实例化之后执行一些逻辑,有两种方法:

1.使用init-method

2.让Bean实现InitializingBean接口

Bean销毁

如果需要在Bean销毁之前执行一些逻辑,有两种方法:

1.使用destory-method

2.让Bean实现DisposableBean接口

SpringIoC注解 

通过注解取代xml配置

@Component 通用型注解   只能指向一个BeanId

@Component("bean","bean2")  设置Bean别名   

通过构造方法和Set方法注入Bean

在方法上加@Autowired注解,注意保证在方法中的每一个参数都在Spring的上下文中存在响应的实例,否则会进行报错

通过属性直接注入Bean

实例化和注入式指定Bean的id

将多个泛型实例注入到List/Set

String、Integer等类型直接赋值

SpringIoC容器内置接口实例注入

通过注解设定Bean的作用域  @Scope

通过注解开启Bean的懒加载 @Lazy

通过注解编写Bean初始化及销毁

举报

相关推荐

0 条评论