6

spring | ApplicationContext 功能介绍

 1 year ago
source link: https://benpaodewoniu.github.io/2022/12/15/spring21/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

ApplicationContext 究竟有哪些功能。

applicationContext

20_0.png

可以看出 applicationContext 继承了下面 4 个接口

  • MessageSource
    • 国际化服务
  • ResourcePatternResolver
    • 匹配资源服务
  • ApplicationEventPublisher
    • 发布事件对象
  • EnvironmentCapable
    • 处理环境信息

MessageSource 国际化服务

src/main/resource 中,创建一个 application.yaml 文件内容如下

spring:
messages:
basename: g11n/message
encoding: UTF-8

这是告诉翻译文件在哪里。在 src/main/resource 创建 g11n 文件夹,然后创建两个文件,目录结构如下

-src/main/resource
- application.yaml
- g11n
- message.properties
- message_en.properties
- message_zh.properties

message_zh.properties 加上 hi = 你好

然后 run 下面的代码

package com.lou.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

import java.util.Locale;

/**
* Hello shiyanlou!
*/
@SpringBootApplication
public class Application {

public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
ConfigurableApplicationContext configurableApplicationContext = SpringApplication.run(Application.class, args);

System.out.println(configurableApplicationContext.getMessage("hi", null, Locale.CHINA));
}
}

输出正常。

获取资源文件

@SpringBootApplication
public class Application {

public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException, IOException {
ConfigurableApplicationContext configurableApplicationContext = SpringApplication.run(Application.class, args);

Resource[] resources = configurableApplicationContext.getResources("classpath:application.properties");
for (Resource resource : resources) {
System.out.println(resource);
}
}
}

获取环境变量

@SpringBootApplication
public class Application {

public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException, IOException {
ConfigurableApplicationContext configurableApplicationContext = SpringApplication.run(Application.class, args);

System.out.println(configurableApplicationContext.getEnvironment().getProperty("java_home")); // 不区分大小写,可以获取环境变量
System.out.println(configurableApplicationContext.getEnvironment().getProperty("spring.datasource.username")); // 获取配置文件的内容
}
}

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK