spring IOC

spring IOC:即控制反转

上层建筑依赖下层建筑,如果要修改下层建筑,那么依赖其所有的上层建筑都需要修改,这种模式是不可维护的

依赖注入:含义:把底层类作为参数传递给上层类,实现上层对下层的"控制"

依赖注入的方式

1.Setter

2.Interface

3.Constructor

4.Annotation

IOC容器的优势 

1.避免在各处使用new来创建类,并且可以做到统一维护

2.创建实例的时候不需要了解其中的细节

Spring IOC的应用 

 

 Spring IOC支持的功能

依赖注入

依赖检查

自动装配

支持集合

指定初始化方法和销毁方法

支持回调方法

Spring IOC核心接口

1.BeanFactory

2.AapplicationContext

BeanFactory : Spring框架最核心的接口

提供IOC的配置机制

包含Bean的各种定义,便于实例化Bean

建立Bean之间的依赖关系

Bean生命周期的控制

BeanFactory与ApplicationContext比较

BeanFactory是Spring框架的基础设施,面向Spring

ApplicationContext面向使用Spring框架的开发者 (比BeanFactory功能更多)

 ApplicationContext的功能(继承多个接口)

BeanFactory :能够管理、装配Bean

ResourcePatternResolver :能够加载资源文件

MessageSource:能够实现国际化等功能

ApplicationEventPublisher :能够注册监听器,实现监听机制制

 实战演练

1.通过@Bean注册Bean,通过ApplicationContext 获取该Bean实例

@Configuration
public class Config {
    @Bean(name = "person")
    public Person initPerson(){
        Person user = new Person();
        user.setAge("11");
        user.setName("fr");
        return  user;
    }
}
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        ApplicationContext cx = SpringApplication.run(DemoApplication.class, args);
        Person user = cx.getBean(Person.class);
        System.out.printf("Name  is:"+ user.getName());

    }
}

2.通过SpringBoot注解@Component来装载Bean

@Component("person")
public class Person {
    @Value("fr")
    private String name;
    @Value("11")
    private  String age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}

 两种方式输出结果都一样,都能获取到IOC容器中的Bean实例,第二种更简单

getBean方法的代码逻辑

转换beanName

从缓存中加载实例

实例化Bean

检测parentBeanFactory

初始化依赖的Bean 

创建Bean

spring Bean的相关面试题

1.spring Bean的作用域:

singleton : Spring的默认作用域,容器里拥有唯一的Bean实例

prototype :针对每个getBean请求,容器都会创建一个Bean实例

request :会为每个Http请求创建一个Bean实例

session :会为每个session创建一个Bean实例

globalSession :会为每个全局Http Session创建一个Bean实例,该作用域仅对Portleta有效

2.spring Bean的生命周期

(1)创建过程

(2)销毁过程

若实现了DisposableBean接口,则会调用destroy方法

若配置了destry-method属性,则会调用其配置的销毁方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值