我想在我的项目中使用typesafe config(HOCON
config文件),这有助于简单而有组织的应用程序配置。目前,我正在使用普通的Java属性文件(application.properties),并且在大型项目上很难处理。
我的项目是Spring MVC(不是Spring Boot项目)。有没有一种方法可以支持我的Spring
Environment(我将注入到我的服务中)由typesafe config支持。这不应该阻止我现有的环境用法@Value
,@Autowired Environment
例如注释等。
如何以最小的努力和对代码的更改来做到这一点。
这是我当前的解决方案:寻找其他更好的方法
@Configuration
public class PropertyLoader{
private static Logger logger = LoggerFactory.getLogger(PropertyLoader.class);
@Bean
@Autowired
public static PropertySourcesPlaceholderConfigurer properties(Environment env) {
PropertySourcesPlaceholderConfigurer pspc = new PropertySourcesPlaceholderConfigurer();
Config conf = ConfigFactory.load();
conf.resolve();
TypesafePropertySource propertySource = new TypesafePropertySource("hoconSource", conf);
ConfigurableEnvironment environment = (StandardEnvironment)env;
MutablePropertySources propertySources = environment.getPropertySources();
propertySources.addLast(propertySource);
pspc.setPropertySources(propertySources);
return pspc;
}
}
class TypesafePropertySource extends PropertySource<Config>{
public TypesafePropertySource(String name, Config source) {
super(name, source);
}
@Override
public Object getProperty(String name) {
return this.getSource().getAnyRef(name);
}
}
我想我想出了一种比手动添加PropertySource
到属性源更惯用的方法。创建一个PropertySourceFactory
并引用@PropertySource
首先,我们TypesafeConfigPropertySource
与您拥有的几乎相同:
public class TypesafeConfigPropertySource extends PropertySource<Config> {
public TypesafeConfigPropertySource(String name, Config source) {
super(name, source);
}
@Override
public Object getProperty(String path) {
if (source.hasPath(path)) {
return source.getAnyRef(path);
}
return null;
}
}
接下来,我们创建一个PropertySource 工厂 ,该 工厂 返回该属性源
public class TypesafePropertySourceFactory implements PropertySourceFactory {
@Override
public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {
Config config = ConfigFactory.load(resource.getResource().getFilename()).resolve();
String safeName = name == null ? "typeSafe" : name;
return new TypesafeConfigPropertySource(safeName, config);
}
}
最后,在我们的配置文件中,我们可以像其他任何属性一样引用属性源,PropertySource
而不必自己添加PropertySource:
@Configuration
@PropertySource(factory=TypesafePropertySourceFactory.class, value="someconfig.conf")
public class PropertyLoader {
// Nothing needed here
}
第一个twisted支持的诗歌服务器 尽管Twisted大多数情况下用来写服务器代码,但为了一开始尽量从简单处着手,我们首先从简单的客户端讲起。 让我们来试试使用Twisted的客户端。源码在twisted-client-1/get-poetry.py。首先像前面一样要开启三个服务器: python blocking-server/slowpoetry.py --port 10000 poetry
问题内容: 我有一个用ResultSet作为数据成员实现Iterator的类。本质上,该类如下所示: 我如何检查ResultSet是否有另一行,所以由于ResultSet本身未定义hasNext,因此可以创建有效的hasNext方法?我当时在想查询以获取计数并管理该数字以查看是否还有另一行,但我想避免这种情况。 问题答案: 这是一个坏主意。这种方法要求连接一直保持打开状态,直到读取最后一行为止,并
今天我重新开始做一个旧的rails项目。一个让我抓狂的问题是我无法运行javascript测试用例,尽管我记得在我离开项目时它们都通过了。我正在使用 selenium webdriver 2.25.0水豚1.1.2cucumber1.2.1 无法干净地启动Firefox,参数:[“-silent”](Selenium::WebDriver::Error::WebDriverError) 我想这是因
我一直在研究使用MVC:Annotation-Drived标记时有哪些额外的功能,我很难消化这些结果,尤其是关于@Controller注释。我知道这和这个问题很相似,但请听我说完。 根据Spring docs @Controller注释的基本目的是充当带注释类的原型,指示其角色。dispatcher将扫描这些带注释的类,寻找映射的方法,检测@RequestMapping注释(请参见下一节)。 这听
问题内容: 我想在我的项目中使用AngularJS UI Bootstrap Tabs,但是我需要它来支持路由。 例如: 据我从源代码可以看出,current 和指令不支持路由。 添加路由的最佳方法是什么? 问题答案: 要添加路由,通常使用ng- view指令。我不确定修改角度UI以支持您要查找的内容是否足够容易,但这是一个大致显示我认为您要查找的内容(这不一定是最好的方式- 希望有人可以提供为您
我正在从事一个项目,我们计划使用WLP(WebSphere自由)而不是传统的WAS。 代码为不同的组件提供了ejb模块(ejb 2和3)。一个组件的EJB客户端被其他一些组件用来与EJB服务器模块通信。 我知道自由有一些ejb功能。但是,自由对 EJB 的支持/功能是否与 WAS 9 中提供的支持/功能级别相同? 自由使用EJB有哪些限制/问题?
你能给我建议正确的方法来启动加密路线吗。
我决定回到我的想法,将Kafka指标与Spring Boot Actuator集成,我在这里已经提到: https://github.com/spring-projects/spring-boot/issues/6227 到目前为止,我有一个单独的“沙盒”项目和工作代码,我想将其合并到Spring Boot中。现在我有点困惑了。我的部分测试需要powermock来模拟Kafka的“超级安全”类: