盘古BPM体验地址    盘古BPM交流群盘古BPM交流群号:963222735

spring boot 动态加载资源

分享牛 2446℃

spring boot Environment源码分析文章中,我们详细讲解了spring boot Environment源码分析,了解原理的目的是为了更好的实战,享受框架为我们提供一系列的便利,那接下来我们看一下如何将自定义的资源交给environment进行管理。

自定义属性类

public class ShareniuMapPropertySource extends MapPropertySource {
private static  Map<String, Object> map=new ConcurrentHashMap<>();
public ShareniuMapPropertySource(String name, Map<String, Object> source) {
super(name, source);
}
public ShareniuMapPropertySource(String name) {
super(name, map);
}
static{
initShareniuMapPropertySource();
}
private static void initShareniuMapPropertySource() {
map.put("shareniu1", "shareniu1");
map.put("shareniu2", "shareniu2");
map.put("shareniu3", "shareniu3");
}
}

上面类中,ShareniuMapPropertySource类继承MapPropertySource 类,并在静态代码块中初始化了自定义的map集合,接下来,我们看下如何获取map中的数据。

测试

@RestController
@SpringBootApplication()
public class Application {
	
	
	
	@PostConstruct
public void init() {
		environment.getPropertySources().addFirst(new ShareniuMapPropertySource("shareniuMapPropertySource"));
	}
	@Autowired
	AbstractEnvironment environment;
	@RequestMapping("/")
	String index() {
			System.out.println(environment);
			String property = environment.getProperty("shareniu1");
			System.out.println("##########################"+property);
		return "xxxxxxxxxxxxx";
	}
	public static void main(String[] args) {
		SpringApplication springApplication = new SpringApplication(Application.class);
		springApplication.addListeners(new ShareniuApplicationStartedEventListener());
		springApplication.run(args);
	}
}

启动程序,并访问http://127.0.0.1:8080/,控制台的输出信息如下:

##########################shareniu1

欢迎关注微信公众号,您的肯定是对我最大的支持


转载请注明:分享牛 » spring boot 动态加载资源