【SpringBoot学习笔记(三)】之IoC容器,BeanFactory接口,ApplicationContext接口

本文章由公号【开发小鸽】发布!欢迎关注!!!


老规矩–妹妹镇楼:

一. Spring IoC

       Ioc容器是Spring的核心,可以说Spring是一种基于IOC容器编程的框架。它通过描述来生成或者获取对象,之前是通过XML来描述,这里使用全注解的方式来描述。一个系统可以生成各种对象,这些对象都需要管理,并且它们之间存在着依赖关系,通过描述就能够管理它们之间的关系。

二. IOC容器

       在Spring中我们把每一个需要管理的对象成为Spring Bean,而Spring 管理这些Bean的容器,称为Spring IoC容器,IOC容器有两个功能,一个是负责发布和获取Bean,一个是负责管理Bean之间的依赖管理。

三. BeanFactory接口

       Spring中所有的IoC容器都要实现接口BeanFactory,它是一个顶级容器接口。翻看源码,可以看到接口中的方法有如下的方法:

1. getBean方法

       它的意义是从IOC容器中获取Bean,可以按Bean类型,名称来获取。

2. containsBean方法

       判断是否包含某个Bean。

3. isSingleton方法

       判断Bean是否在Spring IoC中为单例,默认情况下,Bean都是以单例的形式存在的,即调用getBean方法返回的都是同一个Bean对象。

4. isPrototype方法

       判断Bean是否在Spring IoC是原型,即不是单例。如果为true,则Spring IoC容器会创建一个新的Bean返回给调用者。

四. ApplicationContext接口

       为了扩展BeanFactory接口,还设计了一个更加高级的接口ApplicationContext,它是BeanFactory接口的子接口之一。在BeanFactory的基础上,扩展了消息国际化接口(MessageSource),环境可配置接口(EnvironmentCapable),应用事件发布接口(ApplicationEventPublisher)和资源模式解析接口(ResourcePatternResolver)。在开发中我们使用过的大部分Spring IoC容器都是ApplicationContext接口的实现类。

五. AnnotationConfigApplicationContext

       Spring Boot中使用全注解来开发,因此使用一个基于注解的IOC容器,它就是AnnotaionConfigApplicationContext。下面用个小Demo说明:

1. POJO

       定义一个POJO,User类。

package com.springboot.chap3.pojo;

public class User {
    private String id;
    private String userName;
    private String note;

    public User() {
    }

    public User(String id, String userName, String note) {
        this.id = id;
        this.userName = userName;
        this.note = note;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }
}

2. 定义一个Java配置类

       我们的目的是要将POJO类生成Bean丢到Spring IoC容器中,那么就要创建一个配置类,在类中创建一个Bean配置到Spring Ioc容器中。@Bean注解表示这是一个Bean,@Configuration注解表示这是一个Java配置文件,Spring容器会根据它来生成IOC容器去装配Bean。

package com.springboot.chap3.config;

import com.springboot.chap3.pojo.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig {

    @Bean(name = "user")
    public User initUser(){
        User user = new User();
        user.setId("aaa");
        user.setUserName("username1");
        user.setNote("note1");
        return user;
    }
}

3. 测试类构建IOC容器

       使用AnnotationConfigApplicationContext来新建一个IOC容器,将配置类传进去,让IOC容器的构造方法读取配置类,然后将配置里面的Bean装配到IOC容器中。接下来就可以调用IOC容器中的方法了。

package com.springboot.chap3.test;

import com.springboot.chap3.config.AppConfig;
import com.springboot.chap3.pojo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import java.util.logging.Logger;

public class IocTest {

    private static Logger log = Logger.getLogger(String.valueOf(IocTest.class));

    public static void main(String[] args) {
        ApplicationContext atx = new AnnotationConfigApplicationContext(AppConfig.class);
        User bean = atx.getBean(User.class);
        log.info(bean.getId());
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值