【SpringBoot 基础系列】实现一个自定义配置加载器(应用篇) (3)

上面完成基本功能,接下来进入测试环节,自定义一个配置加载

@Component public class MetaPropertyHolder extends AbstractMetaValHolder { public Map<String, String> metas = new HashMap<>(8); { metas.put("name", "一灰灰"); metas.put("blog", "http://blog.hhui.top"); metas.put("age", "18"); } @Override public String getProperty(String key) { return metas.getOrDefault(key, ""); } @Override public String doUpdateProperty(String key, String value) { return metas.put(key, value); } }

一个使用MetaVal的 demoBean

@Component public class DemoBean { @MetaVal("name") private String name; @MetaVal("blog") private String blog; @MetaVal(value = "age", parser = MetaParser.INT_PARSER) private Integer age; public String sayHello() { return "欢迎关注 [" + name + "] 博客:" + blog + " | " + age; } }

一个简单的 REST 服务,用于查看/更新配置

@RestController public class DemoAction { @Autowired private DemoBean demoBean; @Autowired private MetaPropertyHolder metaPropertyHolder; @GetMapping(path = "hello") public String hello() { return demoBean.sayHello(); } @GetMapping(path = "update") public String updateBlog(@RequestParam(name = "key") String key, @RequestParam(name = "val") String val, HttpServletResponse response) throws IOException { metaPropertyHolder.updateProperty(key, val); response.sendRedirect("/hello"); return "over!"; } }

启动类

@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class); } }

动图演示配置获取和刷新过程

【SpringBoot 基础系列】实现一个自定义配置加载器(应用篇)

配置刷新时,会有日志输出,如下

II. 其他 0. 项目

工程源码

工程:https://github.com/liuyueyi/spring-boot-demo

源码: - https://github.com/liuyueyi/spring-boot-demo/tree/master/spring-case/002-dynamic-config - https://github.com/liuyueyi/spring-boot-demo/tree/master/spring-case/002-dynamic-config-demo

推荐博文

【DB 系列】借助 Redis 实现排行榜功能(应用篇)

【DB 系列】借助 Redis 搭建一个简单站点统计服务(应用篇)

【WEB 系列】实现后端的接口版本支持(应用篇)

【WEB 系列】徒手撸一个扫码登录示例工程(应用篇)

【基础系列】AOP 实现一个日志插件(应用篇)

【基础系列】Bean 之注销与动态注册实现服务 mock(应用篇)

【基础系列】从0到1实现一个自定义Bean注册器(应用篇)

【基础系列】FactoryBean及代理实现SPI机制的实例(应用篇)

【基础系列-实战】如何指定bean最先加载(应用篇)

【基础系列】实现一个简单的分布式定时任务(应用篇)

1. 一灰灰 Blog

尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现 bug 或者有更好的建议,欢迎批评指正,不吝感激

下面一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

一灰灰 Blog 个人博客 https://blog.hhui.top

一灰灰 Blog-Spring 专题博客

一灰灰blog

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyypzw.html