文章目录
1、背景
服务中使用到了redis,需要配置redis连接相关信息
redis.properties(在src.main路径下,和java包同等级的 resources包下)
spring.redis.host=127.0.0.1
spring.redis.password=123456
spring.redis.database=3
spring.redis.port=6379
spring.redis.jedis.pool.max-idle=10
spring.redis.jedis.pool.min-idle=0
spring.redis.timeout=1500
- 常规的方法可以使用Properties结合InputStream流,或
ResourceBundle resource = ResourceBundle.getBundle("redis");//不需要加.properties后缀
String key = resource.getString("host");
- 除此外,还可以使用注解的方式,读取配置信息
2、注解方式
2.1 @PropertySource 、 @ConfigurationProperties
2.2 读取properties中全部字段值@ConfigurationProperties
1、配置类
@Configuration
@PropertySource("classpath:redis.properties")
public class RedisConfig
@Bean
@ConfigurationProperties(prefix = "spring.redis")
public RedisClient redisClient(){
return new RedisClient( );
}
}
补充:
这里@Configuration + @Bean,则redisClientConfig()无论调用多少次,即使每次调用方法,内部都是new新的RedisClient,但是这里bean对象不是普通的对象,是cglib加强过的对象,是单例的。保证无论调用多少次redisClientConfig(),不论其内部是new RedisClient(),都是获取相同的RedisClient对象
@Service
public class RedisGateway
@Autowired
private RedisClient redisClient;
public void getXxx( ) {
redisClient.setNx();
}
}
2.3 读取properties中部分字段值:@value(“${自定义key}”)
如果只想获取redis.properties中spring.redis.host字段的值:127.0.0.1
@Component
@Configuration
@PropertySource("classpath:redis.properties")
public class RedisGateway {
@Value("${spring.redis.host}")
private String ipAdress;
public void getIpAddress() {
String result =ipAdress;
}
}