Solon2 开发之IoC,一、注入或手动获取配置
约定
resources/app.yml( 或 app.properties ) #为应用配置文件
配置样例
track:
name: xxx
url: http://a.a.a
db1:
jdbcUrl: "jdbc:mysql://..."
username: "xxx"
password: "xxx"
1、如何通过注入获得配置?
- 注入到字段
@Service
public class DemoService{
//注入值(带默认值:demoApi),并开启自动更新(注意:如果不是单例,请不要开启自动刷新)
@Inject(value="${track.name:demoApi}", autoRefreshed=true)
String trackName;
//注入值(没有时,不覆盖字段初始值)
@Inject("${track.url}")
String trackUrl = "http://x.x.x/track";
//注入配置集合
@Inject("${track.db1}")
Properties trackDbCfg;
//注入Bean(根据对应的配置集合自动生成并注入)
@Inject("${track.db1}")
HikariDataSource trackDs;
public DemoService(){
//注入的配置,不能在构造函数里使用。在生命周期时,构建先于注入
}
@Init
public void init(){
//注入的配置,需要进一步做初始化,请在处理
}
}
- 注入到配置器的构建参数(与注入字段的方式差不多)
@Configuration
public class DemoConfig{
//提示:@Bean 只能与 @Configuration 配合
@Bean
public DataSource db1(@Inject("${track.db1}") HikariDataSource ds) {
return ds;
}
@Bean
public DataSourceWrap db1w(@Inject DataSource ds, @Inject("${wrap}") WrapConfig wc) {
return new DataSourceWrap(ds, wc);
}
//也可以带条件处理
@Bean
public CacheService cache(@Inject("${cache.enable}") boolean enable,
@Inject("${cache.config}") CacheServiceSupplier supper){
if(enable){
return supper.get();
}else{
return null;
}
}
}
注意一下,配置名是通过${...}模式去表示的。
2、如何手动获得配置?
- 给字段赋值
public class DemoService{
//获取值(带默认值:demoApi)
static String trackName = Solon.cfg().get("track.name", "demoApi");
//获取值
static String trackUrl = Solon.cfg().get("track.url");
//获取配置集合
Properties trackDbCfg = Solon.cfg().getProp("track.db1");
//获取bean(根据配置集合自动生成)
HikariDataSource trackDs = Solon.cfg().getBean("track.db1", HikariDataSource.class);
}
- 构建Bean给配置器用
@Configuration
public class DemoConfig{
@Bean
public DataSource db1() {
return Solon.cfg().getBean("track.db1", HikariDataSource.class);
}
@Bean
public DataSourceWrap db1w(@Inject DataSource ds) {
WrapConfig wc = Solon.cfg().getBean("wrap", WrapConfig.class);
return new DataSourceWrap(ds, wc);
}
}
Solon2 开发之IoC,一、注入或手动获取配置的更多相关文章
- Solon 开发,一、注入或手动获取配置
Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...
- Solon Aop 特色开发(1)注入或手动获取配置
常规操作,先启动 Solon public class App{ public void main(String[] args){ Solon.start(App.class, args); } } ...
- Solon 开发,二、注入或手动获取Bean
Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...
- Linux内核驱动开发之KGDB原理介绍及kgdboe方式配置
接博文<Linux内核驱动开发之KGDB单步调试内核(kgdboc方式)>.上篇博文中,仅简单介绍使用串口的Kgbd的流程(kgdboc方式),本文将重点介绍KGDB调试Linux内核的原 ...
- Spring注解驱动开发之Ioc容器篇
前言:现今SpringBoot.SpringCloud技术非常火热,作为Spring之上的框架,他们大量使用到了Spring的一些底层注解.原理,比如@Conditional.@Import.@Ena ...
- Java Web开发之Spring | SpringMvc | Mybatis | Hibernate整合、配置、使用
1.Spring与Mybatis整合 web.xml: <?xml version="1.0" encoding="UTF-8"?> <web ...
- 【sql注入】浅谈JSP安全开发之SQL注入
[sql注入]浅谈JSP安全开发之SQL注入 本文转自:i春秋社区 前言不管是用什么语言编写WEB应用程序,他们都或多或少有一些地方存在漏洞.如果你想知道漏洞的运行原理,和防御方案,那么请看完本篇文章 ...
- UWP开发之Template10实践二:拍照功能你合理使用了吗?(TempState临时目录问题)
最近在忙Asp.Net MVC开发一直没空更新UWP这块,不过有时间的话还是需要将自己的经验和大家分享下,以求共同进步. 在上章[UWP开发之Template10实践:本地文件与照相机文件操作的MVV ...
- DarkStone - 跨平台移动应用开发之 Flex 的崛起
我的好友Ds 发布一个flex的消息.我帮忙转发 DarkStone - 跨平台移动应用开发之 Flex 的崛起 (2013-08-20 22:28:32) 此文章由 周戈 (DarkSton ...
- Asp.net Mvc模块化开发之“开启模块开发、调试的简单愉快之旅”
整个世界林林种种,把所有的事情都划分为对立的两个面. 每个人都渴望的财富划分为富有和贫穷,身高被划分为高和矮,身材被划分为胖和瘦,等等. 我们总是感叹,有钱人的生活我不懂;有钱人又何尝能懂我们每天起早 ...
随机推荐
- Thread类 常用方法
3.6 start 与 run 调用 run public static void main(String[] args) { Thread t1 = new Thread("t1" ...
- 持续集成(CI)、自动化构建和自动化测试--初探
转自:http://blog.csdn.net/adparking/article/details/5796532 此文章是为了总结前一段时间由于Maven2的学习而引起的一个持续集成的学习. 一.什 ...
- 从零实现的浏览器Web脚本
从零实现的浏览器Web脚本 在之前我们介绍了从零实现Chrome扩展,而实际上浏览器级别的扩展整体架构非常复杂,尽管当前有统一规范但不同浏览器的具体实现不尽相同,并且成为开发者并上架Chrome应用商 ...
- 【随手记】python免api调用谷歌翻译
pip3 install googletrans==4.0.0-rc1 from googletrans import Translator translator = Translator() tra ...
- 【luogu题解】P9749 [CSP-J 2023] 公路
\(Meaning\) \(Solution\) 这道题我来讲一个不一样的解法:\(dp\) 在写 \(dp\) 之前,我们需要明确以下几个东西:状态的表示,状态转移方程,边界条件和答案的表示. 状态 ...
- 探索 Web API:SpeechSynthesis 与文本语言转换技术
一.引言 随着科技的不断发展,人机交互的方式也在不断演变.语音识别和合成技术在人工智能领域中具有重要地位,它们为残障人士和日常生活中的各种场景提供了便利.Web API 是 Web 应用程序接口的一种 ...
- VM离线安装Centos 8以及配置
一.安装 1.预装准备 1.1. 硬件准备 物理内存:2G以上(这里指系统搭建所需占用空间) 物理外存:20G(这里指系统搭建所需占用空间) 1.2. 环境搭建准备 Window10系统电脑一台.Vm ...
- Android Studio 学习-第三章 Activity 第一组
事先申明:所有android 类型的学习记录全部基于<第一行代码 Android>第三版,在此感谢郭霖老师的书籍帮助. 1.手动创建Activity 在Project类型目录中寻找到 项目 ...
- bash shell笔记整理——file命令
file命令的作用 查看一个给定参数的文件类型 file命令语法 file [FILE...] file命令还有选项,但是基本用的不太多,这个命令也基本用得不是很多. 示例 [root@nginx-p ...
- 华企盾DSC服务器状态显示“服务未安装”
在cmd中先删除原服务:sc delete DSEServer 然后重新创建DSEServer所在位置:sc create "DSEServer" binpath= "C ...