Spring IOC简介

Spring IOC

IOC简介

控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)

为什么要使用ioc

如果依赖的类修改了,比如修改了构造函数,如果没有依赖注入,则需要修改依赖对象调用着,如果依赖注入则不需要。
当我们有了一个管理对象的容器之后,类的产生过程也交给了容器,至于我们自己的app则可以不需要去关系这些对象的产生了。

spring编程的风格

schemal-based-------xml

annotation-based-----annotation

java-based----java Configuration

注入的两种方式

  • 构造方法
  • set方法

自动装配

@Autowired根据类型注入  

@Autowired@Qualifile("userService")两个结合起来可以根据名字注入

@Resource默认根据名字注入,其次按照类型搜索(java提供)
  1. 当使用@Autowired时,就会自动找到这个类型以及他的子类型。如果…ServiceImpl实现了…Service,那么就可以找到他。不过这样有一个缺点,就是当…Service实现类有两个以上的时候,就会产生冲突。

  2. @Resource默认情况下是按照名称进行匹配的,如果没有找到相同名称的Bean,则会按照类型进行匹配。在UserSeriveImpl上标注@Service,则其默认名字为userSeriveSerImpl;没有找到名字,再按类型搜索,进行了两次搜索,速度下降。

  3. @Autowired @Qualifie(“userService”) 是直接按照名字进行搜索,也就是说,对于UserServiceImpl 上面@Service注解必须写名字,不写就会报错,而且名字必须是@Autowired @Qualifie(“userService”) 保持一致。如果@Service上面写了名字,而@Autowired @Qualifie() ,一样会报错

Bean的作用域

  1. singleton(默认非懒加载)

使用该属性定义Bean时,IOC容器仅创建一个Bean实例,IOC容器每次返回的是同一个Bean实例。

  1. prototype(原型)(默认懒加载)

使用该属性定义Bean时,IOC容器可以创建多个Bean实例,每次返回的都是一个新的实例。

  1. request

该属性仅对HTTP请求产生作用,使用该属性定义Bean时,每次HTTP请求都会创建一个新的Bean,适用于WebApplicationContext环境。

  1. session

该属性仅用于HTTP Session,同一个Session共享一个Bean实例。不同Session使用不同的实例。

  1. application

ServletContextApplication 的作用范围在服务器一开始执行服务,到服务器关闭为止

  1. global-session

WebSocket该属性仅用于HTTP Session,同session作用域不同的是,所有的Session共享一个Bean实例。

Singleton Beans with Prototype-bean Dependencies

prototype将不会生效,Bean将会是singleton的

可以使用@Lookup解决这个问题

Bean的生命周期的回调

@PostConstruct
@PreDestory

另外两种方法是实现接口或者xml配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值