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 动态加载资源