• SpringBoot中最常用的5个内置对象


    SpringBoot简介

    Spring Boot 是 Pivotal 团队推出的一款创新框架,旨在简化 Spring 应用的初始化搭建和开发流程。该框架采用了独特的配置方式,让开发者无需再编写繁琐的模板配置。借助这一优势,Spring Boot 力求在快速应用开发领域(Rapid Application Sevelopment)树立行业标杆。

    正如官方所描述,Spring Boot是所有基于 Spring 开发项目的理想起点。这一强大的框架集成了当前市场上绝大部分流行的开发框架,类似于 Maven 对各种 JAR 包的集成。Spring Boot 的出现,使得开发者能够迅速搭建并运行 Spring 项目,从而大大提高了开发效率和便利性。在这个技术日新月异的时代,Spring Boot 的优势愈发凸显,成为了众多开发者的首选框架。

    SpringBoot中最常用的5个内置对象

    在SpringBoot框架中,有很多内置对象可以帮助我们更方便地进行开发。本文将介绍SpringBoot中最常用的5个内置对象:ApplicationContext、BeanFactory、Environment、ResourceLoader、MessageSource。我们将分别介绍这些对象的作用、使用方法以及相关的API。

    一、ApplicationContext

    1.1 ApplicationContext简介

    ApplicationContext(应用上下文)是SpringBoot中的一个核心接口,它继承自BeanFactory接口。ApplicationContext主要负责管理Bean的生命周期、依赖注入、事件发布等功能。在SpringBoot应用中,我们通常会使用AnnotationConfigApplicationContext或者XmlWebApplicationContext作为ApplicationContext的实现类。

    1.2 ApplicationContext的使用

    在SpringBoot应用中,我们可以通过以下几种方式获取ApplicationContext对象:

    • 通过实现ApplicationContextAware接口
    • 通过@Autowired注解
    • 通过SpringApplication.run()方法返回的对象

    获取到ApplicationContext对象后,我们可以使用它的以下方法:

    • getBean():根据Bean的名称或者类型获取Bean实例
    • containsBean():判断容器中是否包含指定名称的Bean
    • isSingleton():判断指定名称的Bean是否为单例
    • getBeanDefinitionNames():获取容器中所有Bean的名称
    • getBeanDefinitionCount():获取容器中Bean的数量

    1.3 获取和使用ApplicationContext对象

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.ApplicationContext;
    import org.springframework.stereotype.Component;
    
    @Component
    public class ApplicationContextUtil {
    
        @Autowired
        private ApplicationContext applicationContext;
    
        // 其他方法
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    public class UserService {
    
        public void getUser() {
            // 获取UserDao Bean
            UserDao userDao = applicationContext.getBean(UserDao.class);
            userDao.getUser();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    二、BeanFactory

    2.1 BeanFactory简介

    BeanFactory(Bean工厂)是SpringBoot中的一个核心接口,它主要负责创建和管理Bean。BeanFactory提供了一种延迟加载的策略,即只有在需要使用Bean时才会创建Bean实例。这种策略可以有效地减少内存消耗和提高应用启动速度。

    2.2 BeanFactory的使用

    在SpringBoot应用中,我们可以通过以下几种方式获取BeanFactory对象:

    • 通过实现BeanFactoryAware接口
    • 通过@Autowired注解
    • 通过ApplicationContext对象的getAutowireCapableBeanFactory()方法

    获取到BeanFactory对象后,我们可以使用它的以下方法:

    • getBean():根据Bean的名称或者类型获取Bean实例
    • containsBean():判断容器中是否包含指定名称的Bean
    • isSingleton():判断指定名称的Bean是否为单例
    • getType():获取指定名称的Bean的类型
    • getAliases():获取指定名称的Bean的别名

    2.3 获取和使用BeanFactory对象

    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    @Component
    public class BeanFactoryUtil {
    
        @Autowired
        private BeanFactory beanFactory;
    
        // 其他方法
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    public class UserService {
    
        public void getUser() {
            // 获取UserDao Bean
            UserDao userDao = beanFactory.getBean(UserDao.class);
            userDao.getUser();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    三、Environment

    3.1 Environment简介

    Environment(环境)是SpringBoot中的一个接口,它主要负责管理应用的配置信息。Environment接口提供了一种统一的方式来访问应用的配置信息,包括系统属性、环境变量、配置文件等。在SpringBoot应用中,我们通常会使用StandardEnvironment或者ConfigurableEnvironment作为Environment的实现类。

    3.2 Environment的使用

    在SpringBoot应用中,我们可以通过以下几种方式获取Environment对象:

    • 通过实现EnvironmentAware接口
    • 通过@Autowired注解
    • 通过ApplicationContext对象的getEnvironment()方法

    获取到Environment对象后,我们可以使用它的以下方法:

    • getProperty():根据属性名称获取属性值
    • containsProperty():判断是否包含指定名称的属性
    • getRequiredProperty():根据属性名称获取属性值,如果不存在则抛出异常
    • getPropertySources():获取所有的属性源
    • getActiveProfiles():获取当前激活的Profile

    3.3 获取和使用Environment对象

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.core.env.Environment;
    import org.springframework.stereotype.Component;
    
    @Component
    public class EnvironmentUtil {
    
        @Autowired
        private Environment environment;
    
        // 其他方法
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    public class UserService {
    
        public void getUser() {
            // 获取配置文件中的属性值
            String userName = environment.getProperty("user.name");
            System.out.println("User name: " + userName);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    四、ResourceLoader

    4.1 ResourceLoader简介

    ResourceLoader(资源加载器)是SpringBoot中的一个接口,它主要负责加载外部资源。ResourceLoader提供了一种统一的方式来加载外部资源,包括文件、URL、类路径等。在SpringBoot应用中,我们通常会使用DefaultResourceLoader或者FileSystemResourceLoader作为ResourceLoader的实现类。

    4.2 ResourceLoader的使用

    在SpringBoot应用中,我们可以通过以下几种方式获取ResourceLoader对象:

    • 通过实现ResourceLoaderAware接口
    • 通过@Autowired注解
    • 通过ApplicationContext对象的getResource()方法

    获取到ResourceLoader对象后,我们可以使用它的以下方法:

    • getResource():根据资源路径获取资源对象
    • getClassLoader():获取资源加载器使用的类加载器

    4.3 获取和使用ResourceLoader对象

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.core.io.ResourceLoader;
    import org.springframework.stereotype.Component;
    
    @Component
    public class ResourceLoaderUtil {
    
        @Autowired
        private ResourceLoader resourceLoader;
    
        // 其他方法
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    import org.springframework.core.io.Resource;
    
    public class UserService {
    
        public void getUser() {
            // 加载资源文件
            Resource resource = resourceLoader.getResource("classpath:application.properties");
            System.out.println("Resource: " + resource);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    五、MessageSource

    5.1 MessageSource简介

    MessageSource(消息源)是SpringBoot中的一个接口,它主要负责管理国际化消息。MessageSource提供了一种统一的方式来管理国际化消息,包括消息的存储、检索、格式化等。在SpringBoot应用中,我们通常会使用ResourceBundleMessageSource或者ReloadableResourceBundleMessageSource作为MessageSource的实现类。

    5.2 MessageSource的使用

    在SpringBoot应用中,我们可以通过以下几种方式获取MessageSource对象:

    • 通过实现MessageSourceAware接口
    • 通过@Autowired注解
    • 通过ApplicationContext对象的getMessageSource()方法

    获取到MessageSource对象后,我们可以使用它的以下方法:

    • getMessage():根据消息代码获取消息内容
    • getMessage():根据消息代码、参数和默认值获取消息内容
    • getMessage():根据消息代码、参数和Locale获取消息内容

    5.3 获取和使用MessageSource对象

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.MessageSource;
    import org.springframework.stereotype.Component;
    
    @Component
    public class MessageSourceUtil {
    
        @Autowired
        private MessageSource messageSource;
    
        // 其他方法
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    import java.util.Locale;
    
    public class UserService {
    
        public void getUser() {
            // 获取国际化消息
            String message = messageSource.getMessage("user.name", null, Locale.getDefault());
            System.out.println("Message: " + message);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    总结

    本文介绍了SpringBoot中最常用的5个内置对象:ApplicationContext、BeanFactory、Environment、ResourceLoader、MessageSource。这些对象在SpringBoot应用中发挥着重要的作用,帮助我们更方便地进行开发。希望本文能帮助大家更好地理解和使用这些内置对象。

  • 相关阅读:
    Spring笔记(四)(黑马)(web层解决方案-SpringMVC)
    jsp的四大作用域
    锥形相位掩模的Talbot图像
    同步篇——事件等待与唤醒
    数据库Day004
    数据治理之数据质量管控流程(参考)
    【Java】面向对象:继承、组合和多态
    骑士CMS01 74cms v4.2.111 后台getshell漏洞复现
    【操作系统】线程、多线程模型
    企业办公安全隐患不容忽视,墨门云终端安全来解决...
  • 原文地址:https://blog.csdn.net/heihaozi/article/details/131378281