BeanFactory与ApplicationContext区别

BeanFactory:

它是ApplicationContext的父接口,它才是 Spring 的核心容器, 主要的 ApplicationContext 实现都【组合】了它的功能

BeanFactory能干点啥:

  • 表面上只有 getBean
  • 实际上控制反转、基本的依赖注入、直至 Bean 的生命周期的各种功能, 都由它的实现类提供

结构关系

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

DefaultListableBeanFactory结构关系:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • **MessageSource:**处理国际化资源
  • ResourcePatternResolver: 通配符匹配资源
  • **EnvironmentCapable:**环境信息(环境变量)
  • ApplicationEventPublisher: 发布事件

MessageSource (I18n)

public class I18NTest {

    @Autowired
    private ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();

    @BeforeEach
    public void init() {
        messageSource.setBasename("i18n/message");
        messageSource.setDefaultEncoding("UTF-8");
    }

    @Test
    void test() {
        String key = "hi";
        String us = messageSource.getMessage(key, null, Locale.US);
        String japan = messageSource.getMessage(key, null, Locale.JAPAN);
        System.out.println(us);
        System.out.println(japan);
    }
}

ResourcePatternResolver和EnvironmentCapable

public class A01 {
    public static void main(String[] args) throws IOException {
        ConfigurableApplicationContext context = SpringApplication.run(A01.class, args);
        /*
            1. 到底什么是 BeanFactory
                - 它是 ApplicationContext 的父接口
                - 它才是 Spring 的核心容器, 主要的 ApplicationContext 实现都【组合】了它的功能
         */
        System.out.println(context);


        Resource[] resources = context.getResources("classpath*:META_INF/spring.factories");
        for (Resource resource : resources) {
            System.out.println(resource);
        }


        System.out.println(context.getEnvironment().getProperty("java_home"));
        System.out.println(context.getEnvironment().getProperty("server.port"));
    }
}

ApplicationEventPublisher(发布事件略过)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值