Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 291ea34

Browse files
committed
add application context initializer code
1 parent d5cc691 commit 291ea34

File tree

6 files changed

+131
-1
lines changed

6 files changed

+131
-1
lines changed

‎springboot-source-code-analysis/pom.xml‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@
2626
<artifactId>spring-boot-starter-test</artifactId>
2727
<scope>test</scope>
2828
</dependency>
29+
<dependency>
30+
<groupId>org.springframework.boot</groupId>
31+
<artifactId>spring-boot-starter-web</artifactId>
32+
</dependency>
2933
</dependencies>
3034

3135
<build>

‎springboot-source-code-analysis/src/main/java/com/example/springboot/source/code/analysis/SpringbootSourceCodeAnalysisApplication.java‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,4 @@ public class SpringbootSourceCodeAnalysisApplication {
99
public static void main(String[] args) {
1010
SpringApplication.run(SpringbootSourceCodeAnalysisApplication.class, args);
1111
}
12-
1312
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.example.springboot.source.code.analysis.controller;
2+
3+
import com.example.springboot.source.code.analysis.service.TestFirstInitializerService;
4+
import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.web.bind.annotation.*;
7+
8+
/**
9+
* InitializerController 测试框架初始化器 ApplicationContextInitializer
10+
*
11+
* @author ipipman
12+
* @version V1.0
13+
* @date 2021年6月5日
14+
* @date 2021年6月5日 8:45 下午
15+
*/
16+
@RequestMapping("/initializer")
17+
@RestController
18+
public class InitializerController {
19+
/**
20+
* 测试框架初始化器 ApplicationContextInitializer
21+
*/
22+
@Autowired
23+
private TestFirstInitializerService firstInitializerService;
24+
25+
/**
26+
* 测试框架初始化器 ApplicationContextInitializer
27+
*/
28+
@RequestMapping(value = "first", method = RequestMethod.GET)
29+
@ResponseBody
30+
public String testFirstInitializer(){
31+
return firstInitializerService.getCustomEnvironmentProperty();
32+
}
33+
34+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.example.springboot.source.code.analysis.initializer;
2+
3+
import org.slf4j.Logger;
4+
import org.slf4j.LoggerFactory;
5+
import org.springframework.context.ApplicationContextInitializer;
6+
import org.springframework.context.ConfigurableApplicationContext;
7+
import org.springframework.core.annotation.Order;
8+
import org.springframework.core.env.ConfigurableEnvironment;
9+
import org.springframework.core.env.MapPropertySource;
10+
11+
import java.util.HashMap;
12+
import java.util.Map;
13+
14+
/**
15+
* FirstInitializer 系统初始化器
16+
*
17+
* @author ipipman
18+
* @version V1.0
19+
* @date 2021年6月5日
20+
* @date 2021年6月5日 8:20 下午
21+
*/
22+
@Order(1) // 设置执行顺序
23+
public class FirstInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
24+
25+
private static final Logger logger = LoggerFactory.getLogger(FirstInitializer.class);
26+
27+
@Override
28+
public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
29+
// 获取系统属性
30+
ConfigurableEnvironment environment =
31+
configurableApplicationContext.getEnvironment();
32+
33+
// 设置自定义属性
34+
Map<String, Object> attributeMap = new HashMap<>();
35+
attributeMap.put("key1", "value1");
36+
37+
// 添加自定义属性
38+
MapPropertySource mapPropertySource = new MapPropertySource("firstInitializer", attributeMap);
39+
environment.getPropertySources().addLast(mapPropertySource);
40+
logger.info("设置框架初始化器【ApplicationContextInitializer】成功 : run firstInitializer");
41+
}
42+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.example.springboot.source.code.analysis.service;
2+
3+
import com.sun.istack.internal.NotNull;
4+
import org.slf4j.Logger;
5+
import org.slf4j.LoggerFactory;
6+
import org.springframework.beans.BeansException;
7+
import org.springframework.context.ApplicationContext;
8+
import org.springframework.context.ApplicationContextAware;
9+
import org.springframework.lang.NonNull;
10+
import org.springframework.lang.Nullable;
11+
import org.springframework.stereotype.Component;
12+
13+
import java.util.Optional;
14+
15+
/**
16+
* 测试框架初始化器,获取自定义的环境属性
17+
*
18+
* @author ipipman
19+
* @version V1.0
20+
* @date 2021年6月5日
21+
* @date 2021年6月5日 8:35 下午
22+
*/
23+
@Component
24+
public class TestFirstInitializerService implements ApplicationContextAware {
25+
26+
private static final Logger logger = LoggerFactory.getLogger(TestFirstInitializerService.class);
27+
28+
/**
29+
* 框架应用上下文
30+
*/
31+
private ApplicationContext applicationContext;
32+
33+
/**
34+
* 获取当前框架上下文
35+
*/
36+
@Override
37+
public void setApplicationContext(@Nullable ApplicationContext applicationContext) throws BeansException {
38+
this.applicationContext = applicationContext;
39+
}
40+
41+
/**
42+
* 获取在框架初始化器阶段设置的配置信息
43+
*/
44+
public String getCustomEnvironmentProperty() {
45+
return Optional.ofNullable(applicationContext.getEnvironment().getProperty("key1")).orElse(null);
46+
}
47+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#通过系统初始化器,设置自定义环境配置
2+
org.springframework.context.ApplicationContextInitializer=\
3+
com.example.springboot.source.code.analysis.initializer.FirstInitializer
4+

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /