我有一个使用Java配置的Spring(@Configuration
等)的Maven项目.引用的属性@Value
存储在不同的位置,例如Tomcat的context.xml.
For testing I've created a .properties file to provide some values for the components and services. In my JUnit test (which uses a spring test context) this .properties file is added via @PropertySource
. The problem is that the values will not be loaded from the file, instead the value identifier is set as value, e.g. ${someFlag:false}
(so I get ClassCastExceptions for any other than String). Also the default value will not be set, so …
我有一个rich:tabPanel
用switchType="client"
,其中一个标签设置了它switchType
,ajax
因为加载它的数据是一个昂贵的操作.当我单击此Ajax选项卡时,我希望将其标题更改为正在加载...以指示已识别出单击.加载完成后,标题应切换回Ajax Tab.
[Client Tab] [Ajax Tab]
<click on 'Ajax Tab'>
[Client Tab] [Loading...]
<wait...>
[Client Tab] [Ajax Tab]
<click on 'Client Tab'>
[Client Tab] [Ajax Tab]
Run Code Online (Sandbox Code Playgroud)
其实,大多数的上述预期作品所描述的,我唯一的问题是,当我从导航阿贾克斯选项卡到任何其他选项卡,将标题阿贾克斯Tab键切换回载入中...:
[Client Tab] [Ajax Tab]
<click on 'Ajax Tab'>
[Client Tab] [Loading...]
<wait...>
[Client Tab] [Ajax Tab]
<click on 'Client Tab'>
[Client Tab] [Loading...]
Run Code Online (Sandbox Code Playgroud)
我在RichFaces的JIRA中发现了一个问题,但是从版本3.2.1开始修复了这个问题.此外,我用谷歌搜索了几个小时,但未能找到任何类似的问题.
我有一个Spring Boot应用程序,带有带@Configuration
注释的Spring配置类,其中包含一些带@Value
注释的字段.对于测试,我想用自定义测试值替换这些字段值.
不幸的是,这些测试值不能使用简单的属性文件,(String)常量或类似方法覆盖,而是必须使用一些自定义编写的属性来解析Java类(例如TargetProperties.getProperty("some.username")
).
我的问题是,当我添加自定义PropertySource
到ConfigurableEnvironment
我的测试配置中,它已经为时已晚,因为这PropertySource
将被添加之后的如RestTemplate
已创建.
我如何可以覆盖@Value
注解领域内一个@Configuration
与获得性类编程通过自定义的Java代码之前,什么都被初始化?
@Configuration
public class SomeConfiguration {
@Value("${some.username}")
private String someUsername;
@Value("${some.password}")
private String somePassword;
@Bean
public RestTemplate someRestTemplate() {
RestTemplate restTemplate = new RestTemplate();
restTemplate.getInterceptors().add(
new BasicAuthorizationInterceptor(someUsername, somePassword));
return restTemplate;
}
}
Run Code Online (Sandbox Code Playgroud)
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
public class SomeTest {
@SpringBootConfiguration
@Import({MySpringBootApp.class, SomeConfiguration.class}) …
Run Code Online (Sandbox Code Playgroud) 我有一个JavaEE环境(在我的特定情况下它是一个Glassfish Web配置文件),我想要一种独立于容器的方式来配置我的应用程序,具有以下功能:
我希望尽可能少的前置条件(现在唯一一个是JNDI数据源)来部署和运行我的应用程序(设置JNDI数据源,部署WAR文件,在某些配置文件夹中有一个可选的.properties文件,并且 - 完成).
这引出了我的第一个问题:这是一个常见的/好的/有用的设置还是不必要的复杂和/或非常奇特?
默认配置将位于属性文件中:
src/main/resources/config/default.properties
应用范围的描述豆读取初始化这个特性在这里:
@Named
@ApplicationScoped
public class Configuration implements Serializable {
...
@PostConstruct
public void initConfiguration() {
loadDefaultConfiguration();
}
private void loadDefaultConfiguration() {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
try (InputStream input = classLoader.getResourceAsStream("/config/default.properties")) {
properties.load(input);
} catch(IOException ex) {
LOGGER.error(...);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这些设置将存储在具有键和值列的数据库表中.它们将始终通过EntityManager访问,希望JPA实现的缓存将是聪明的:).这里的优点是,在应用程序运行时可以轻松更改这些设置.
@Named
@ApplicationScoped
public class Configuration implements Serializable {
...
public T getProperty(final PropertyKeyEnum key, final Class<T> type) {
if (key.getSource() == …
Run Code Online (Sandbox Code Playgroud) 给定以下剧本 ( deployment.yml
):
---
- name: Debug
hosts: applicationservers
tasks:
- debug: msg="{{add_host_entries | default('false')}}"
- debug: msg="{{add_host_entries | default('false') == 'true'}}"
- debug: msg="Add host entries = {{add_host_entries | default('false') == 'true'}}"
- include: add_host_entries.yml
when: add_host_entries | default('false') == 'true'
Run Code Online (Sandbox Code Playgroud)
add_host_entries.yml
即使上述所有调试消息都打印某种类型的内容,要包含的条件总是失败true
(我知道在第一个调试消息中它是字符串,而其他两个结果是布尔值)。
当我省略默认值部分时,add_host_entries.yml
将执行:
when: add_host_entries
Run Code Online (Sandbox Code Playgroud)
不过,我需要这个默认值行为,因为它是一个可选值,仅在某些阶段设置。
when: (add_host_entries | default('false')) == 'true'
Run Code Online (Sandbox Code Playgroud)
when: add_host_entries|default('false')|bool
Run Code Online (Sandbox Code Playgroud)
以下是重现问题所需的所有资源。
add_host_entries.yml
---
- name: add_host_entries
hosts: applicationservers
gather_facts: false
tasks:
- debug: msg="Add Host …
Run Code Online (Sandbox Code Playgroud) 给定一个将消息发布到两个不同主题的 Kafka 流拓扑,是否可以保证在这两个分支中执行各个步骤的顺序,或者这些分支是否完全分离并并行执行?
KStream<..., ...> filteredStream = builder.stream("input-topic", ...).filter(...)...;
filteredStream.mapValues(this::mapOne).to("output-topic-one", ...);
filteredStream.flatMap(this::mapTwo).to("output-topic-two", ...);
Run Code Online (Sandbox Code Playgroud)
在此示例中,是否会在调用或消息mapOne
发布到输出主题二之前 执行并mapTwo
发布到输出主题一?换句话说,是否能保证在消息发布到output-topic- 2之前mapOne
完成?
当查看拓扑描述的可视化时(参见底部;使用https://zz85.github.io/kafka-streams-viz/制作),您可以看到两个分支。但您还可以在每个气泡中看到这些数字,这也可能表明存在执行顺序(1-4,然后 5-6-7,然后 8-9)。
Topologies:
Sub-topology: 0
Source: KSTREAM-SOURCE-0000000000 (topics: [input-topic])
--> KSTREAM-FILTER-0000000001
Processor: KSTREAM-FILTER-0000000001 (stores: [])
--> KSTREAM-FILTER-0000000002
<-- KSTREAM-SOURCE-0000000000
Processor: KSTREAM-FILTER-0000000002 (stores: [])
--> KSTREAM-MAP-0000000003
<-- KSTREAM-FILTER-0000000001
Processor: KSTREAM-MAP-0000000003 (stores: [])
--> KSTREAM-FILTER-0000000004
<-- KSTREAM-FILTER-0000000002
Processor: KSTREAM-FILTER-0000000004 (stores: [])
--> KSTREAM-MAPVALUES-0000000005, KSTREAM-FLATMAP-0000000008
<-- KSTREAM-MAP-0000000003 …
Run Code Online (Sandbox Code Playgroud) 如何在不引起递归循环的情况下在Ansible(2.1.x)中的其他变量中重用变量?
考虑以下roles/<role>/defaults/main.yml
文件:
---
liquibase:
version: "3.5.3"
download_file: "liquibase-{{liquibase.version}}-bin.tar.gz"
# I also tried this alternative with a similar result:
# download_file: "liquibase-{{liquibase[version]}}-bin.tar.gz
...
Run Code Online (Sandbox Code Playgroud)
和这个roles/<role>/tasks/main.yml
文件:
---
- name: Liquibase | Download
debug:
msg: "download_file: {{liquibase.download_file}}"
...
Run Code Online (Sandbox Code Playgroud)
我希望变量liquibase.download_file
具有值,liquibase-3.5.3-bin.tar.gz
但是当我使用此角色运行剧本时,出现以下错误:
...
TASK [liquibase : Liquibase | Download] *******************************************
fatal: [localhost]: FAILED! => {"failed": true, "msg": "...: recursive loop detected in template string: liquibase-{{liquibase.version}}-bin.tar.gz"}
...
Run Code Online (Sandbox Code Playgroud)
显然,我要下载Liquibase,并且要让角色的用户决定要使用哪个版本。我还想提供完全覆盖下载位置(文件,URL等)的可能性,例如,使用公司的FTP服务器或类似服务器。
ansible ×2
java ×2
properties ×2
testing ×2
ajax4jsf ×1
ansible-2.x ×1
apache-kafka ×1
glassfish-3 ×1
java-ee-6 ×1
jsf-2 ×1
junit ×1
richfaces ×1
spring ×1
spring-boot ×1
variables ×1