
在spring框架中,我们经常使用@configuration注解来定义配置类,并通过@bean方法来声明bean。当这些bean需要外部配置值时,@configurationproperties注解提供了一种强大且类型安全的方式来将外部属性(如application.properties或application.yml中的值)绑定到java对象上。
例如,考虑以下两个核心类:一个用于配置JMS连接的Spring配置类,以及一个用于承载JMS相关属性的POJO。
JmsMessageGatewayConnectionConfig.java 这是一个Spring配置类,定义了JMS连接相关的Bean,其中jmsMessageGatewayConnection依赖于JmsMessageGatewayProperties。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.jms.connection.CachingConnectionFactory;
import org.apache.activemq.artemis.jms.client.ActiveMQJMSConnectionFactory; // Assuming this is JmsConnectionFactory
import javax.jms.JMSException;
@Configuration
public class JmsMessageGatewayConnectionConfig {
@Bean
public JmsMessageGatewayConnection jmsMessageGatewayConnection (final JmsMessageGatewayProperties jmsConfig) throws JMSException {
// JmsMessageGatewayConnection is a custom class that uses jmsConfig and connectionFactory
return new JmsMessageGatewayConnection(jmsConfig, cachingConnectionFactory(jmsConfig));
}
private CachingConnectionFactory cachingConnectionFactory(final JmsMessageGatewayProperties jmsConfig) {
CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();
cachingConnectionFactory.setTargetConnectionFactory(jmsConnectionFactory(jmsConfig));
cachingConnectionFactory.resetConnection();
return cachingConnectionFactory;
}
// Assuming JmsConnectionFactory is ActiveMQJMSConnectionFactory
private ActiveMQJMSConnectionFactory jmsConnectionFactory(final JmsMessageGatewayProperties jmsConfig) {
ActiveMQJMSConnectionFactory jmsConnectionFactory =
new ActiveMQJMSConnectionFactory(jmsConfig.getUsername(), jmsConfig.getPassword(), jmsConfig.getRemoteUri());
jmsConnectionFactory.setReceiveLocalOnly(true);
return jmsConnectionFactory;
}
@Bean
@ConfigurationProperties(prefix = "jms")
public JmsMessageGatewayProperties messageGatewayProperties() {
return new JmsMessageGatewayProperties();
}
}JmsMessageGatewayProperties.java 这是一个简单的POJO,其字段将通过jms前缀的属性进行填充。
public class JmsMessageGatewayProperties {
private String remoteUri;
private String username;
private String password;
private boolean messagePersistent;
private Integer forceDetachedRetryLimit = 1;
// Getters and Setters
public String getRemoteUri() { return remoteUri; }
public void setRemoteUri(final String remoteUri) { this.remoteUri = remoteUri; }
public以上就是Spring配置类与属性的单元测试:深度解析与实践的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号