[SPRING] Spring Redis - application.properties 파일에서 구성을 읽습니다.
SPRINGSpring Redis - application.properties 파일에서 구성을 읽습니다.
Spring Redis는 spring-data-redis를 사용하여 모든 기본 설정이 localhost 기본 포트를 좋아하는 방식으로 작업하고 있습니다.
이제 application.properties 파일에서 구성하여 동일한 구성을 만들려고합니다. 하지만 정확히 어떻게 내 속성 값을 읽을 콩을 만들어야 알아낼 수 없습니다.
Redis 구성 파일
@EnableRedisHttpSession
@Configuration
public class SpringSessionRedisConfiguration {
@Bean
JedisConnectionFactory connectionFactory() {
return new JedisConnectionFactory();
}
@Autowired
@Bean
RedisCacheManager redisCacheManager(final StringRedisTemplate stringRedisTemplate) {
return new RedisCacheManager(stringRedisTemplate);
}
@Autowired
@Bean
StringRedisTemplate template(final RedisConnectionFactory connectionFactory) {
return new StringRedisTemplate(connectionFactory);
}
}
application.properties의 표준 매개 변수
내가 뭘했는지,
해결법
-
==============================
1.@PropertySource를 사용하여 application.properties 또는 원하는 다른 등록 정보 파일에서 옵션을 읽을 수 있습니다. PropertySource 사용 예와 사용법 spring-redis-cache의 사용 예를 살펴보십시오. 또는이 작은 샘플을보십시오.
@PropertySource를 사용하여 application.properties 또는 원하는 다른 등록 정보 파일에서 옵션을 읽을 수 있습니다. PropertySource 사용 예와 사용법 spring-redis-cache의 사용 예를 살펴보십시오. 또는이 작은 샘플을보십시오.
@Configuration @PropertySource("application.properties") public class SpringSessionRedisConfiguration { @Value("${redis.hostname}") private String redisHostName; @Value("${redis.port}") private int redisPort; @Bean public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { return new PropertySourcesPlaceholderConfigurer(); } @Bean JedisConnectionFactory jedisConnectionFactory() { JedisConnectionFactory factory = new JedisConnectionFactory(); factory.setHostName(redisHostName); factory.setPort(redisPort); factory.setUsePool(true); return factory; } @Bean RedisTemplate<Object, Object> redisTemplate() { RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<Object, Object>(); redisTemplate.setConnectionFactory(jedisConnectionFactory()); return redisTemplate; } @Bean RedisCacheManager cacheManager() { RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate()); return redisCacheManager; } }
현재 (2015 년 12 월) application.properties의 spring.redis.sentinel 옵션에는 RedisSentinelConfiguration의 제한된 지원이 있습니다.
이에 대한 자세한 내용은 공식 문서를 참조하십시오.
-
==============================
2.더 깊게 보았을 때 나는 이것을 찾았습니다. 당신이 찾고있는 것이 될 수 있습니까?
더 깊게 보았을 때 나는 이것을 찾았습니다. 당신이 찾고있는 것이 될 수 있습니까?
# REDIS (RedisProperties) spring.redis.database=0 # Database index used by the connection factory. spring.redis.host=localhost # Redis server host. spring.redis.password= # Login password of the redis server. spring.redis.pool.max-active=8 # Max number of connections that can be allocated by the pool at a given time. Use a negative value for no limit. spring.redis.pool.max-idle=8 # Max number of "idle" connections in the pool. Use a negative value to indicate an unlimited number of idle connections. spring.redis.pool.max-wait=-1 # Maximum amount of time (in milliseconds) a connection allocation should block before throwing an exception when the pool is exhausted. Use a negative value to block indefinitely. spring.redis.pool.min-idle=0 # Target for the minimum number of idle connections to maintain in the pool. This setting only has an effect if it is positive. spring.redis.port=6379 # Redis server port. spring.redis.sentinel.master= # Name of Redis server. spring.redis.sentinel.nodes= # Comma-separated list of host:port pairs. spring.redis.timeout=0 # Connection timeout in milliseconds.
참조 : https : //docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html Searchterm Redis
내가 볼 수있는 것에서는 값이 이미 존재하며 다음과 같이 정의됩니다.
spring.redis.host=localhost # Redis server host. spring.redis.port=6379 # Redis server port.
자신의 속성을 만들려면이 스레드의 이전 게시물을 볼 수 있습니다.
-
==============================
3.나는 이것을 봄 부트 문서 섹션 24 단락 7에서 발견했다.
나는 이것을 봄 부트 문서 섹션 24 단락 7에서 발견했다.
@Component @ConfigurationProperties(prefix="connection") public class ConnectionSettings { private String username; private InetAddress remoteAddress; // ... getters and setters }
그런 다음 connection.property를 통해 속성을 수정할 수 있습니다.
참조 링크 : https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-typesafe-configuration-properties
-
==============================
4.다음은 문제를 해결할 수있는 우아한 해결책입니다.
다음은 문제를 해결할 수있는 우아한 해결책입니다.
@Configuration @PropertySource(name="application", value="classpath:application.properties") public class SpringSessionRedisConfiguration { @Resource ConfigurableEnvironment environment; @Bean public PropertiesPropertySource propertySource() { return (PropertiesPropertySource) environment.getPropertySources().get("application"); } @Bean public JedisConnectionFactory jedisConnectionFactory() { return new JedisConnectionFactory(sentinelConfiguration(), poolConfiguration()); } @Bean public RedisSentinelConfiguration sentinelConfiguration() { return new RedisSentinelConfiguration(propertySource()); } @Bean public JedisPoolConfig poolConfiguration() { JedisPoolConfiguration config = new JedisPoolConfiguration(); // add your customized configuration if needed return config; } @Bean RedisTemplate<Object, Object> redisTemplate() { RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<Object, Object>(); redisTemplate.setConnectionFactory(jedisConnectionFactory()); return redisTemplate; } @Bean RedisCacheManager cacheManager() { return new RedisCacheManager(redisTemplate()); } }
그래서, 다시 시작하려면 :
내 작업 공간에서 테스트되었습니다. 문안 인사
-
==============================
5.이 작품은 나를 위해 :
이 작품은 나를 위해 :
@Configuration @EnableRedisRepositories public class RedisConfig { @Bean public JedisConnectionFactory jedisConnectionFactory() { RedisProperties properties = redisProperties(); RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration(); configuration.setHostName(properties.getHost()); configuration.setPort(properties.getPort()); return new JedisConnectionFactory(configuration); } @Bean public RedisTemplate<String, Object> redisTemplate() { final RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(jedisConnectionFactory()); template.setValueSerializer(new GenericToStringSerializer<>(Object.class)); return template; } @Bean @Primary public RedisProperties redisProperties() { return new RedisProperties(); } }
및 특성 파일 :
spring.redis.host=localhost spring.redis.port=6379
-
==============================
6.나는 당신이 찾고있는이 것 같아요. http://docs.spring.io/spring-session/docs/current/reference/html5/guides/boot.html
나는 당신이 찾고있는이 것 같아요. http://docs.spring.io/spring-session/docs/current/reference/html5/guides/boot.html
-
==============================
7.ResourcePropertySource를 사용하여 PropertySource 객체를 생성 할 수 있습니다.
ResourcePropertySource를 사용하여 PropertySource 객체를 생성 할 수 있습니다.
PropertySource propertySource = new ResourcePropertySource("path/to/your/application.properties");
그런 다음 RedisSentinelConfiguration의 생성자로 전달합니다.
-
==============================
8.각 테스트 클래스에서 @DirtiesContext (classMode = classmode.AFTER_CLASS)를 사용하십시오. 이것은 분명히 당신을 위해 작동합니다.
각 테스트 클래스에서 @DirtiesContext (classMode = classmode.AFTER_CLASS)를 사용하십시오. 이것은 분명히 당신을 위해 작동합니다.
-
==============================
9.
@Autowired private JedisConnectionFactory connectionFactory; @Bean JedisConnectionFactory connectionFactory() { return connectionFactory }
from https://stackoverflow.com/questions/34201135/spring-redis-read-configuration-from-application-properties-file by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Weblogic 데이터 소스가 JNDI 트리에서 사라집니다. (0) | 2019.03.14 |
---|---|
[SPRING] Spring과 JsonTypeInfo 어노테이션을 사용하여 JSON을 다형성 객체 모델로 역 직렬화 (0) | 2019.03.14 |
[SPRING] 스프링 보안 : 클라이언트 유형별 (브라우저 / 비 브라우저) CSRF 활성화 / 비활성화 (0) | 2019.03.14 |
[SPRING] Spring이 자리 표시자를 해결할 수 없음 (0) | 2019.03.14 |
[SPRING] Spring Async Uncaught Exception 핸들러 (0) | 2019.03.14 |