Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Kotlin中的Spring服务初始流_Java_Spring_Spring Boot_Kotlin_Redis - Fatal编程技术网

Java Kotlin中的Spring服务初始流

Java Kotlin中的Spring服务初始流,java,spring,spring-boot,kotlin,redis,Java,Spring,Spring Boot,Kotlin,Redis,我试图在Spring/Kotlin中编写一个简单的Redis接口服务,但在理解属性初始化的方式时遇到了一些问题 application.properties文件指定redis的redis.host和redis.port值。然后我想设置一个RedisClient和StatefulRedisConnection对象,以便在内部与助手函数一起使用 我的问题是,尽管在我运行时会编译,但我得到: @Service class RedisService { @Value("\${redis.hos

我试图在Spring/Kotlin中编写一个简单的Redis接口服务,但在理解属性初始化的方式时遇到了一些问题

application.properties
文件指定redis的
redis.host
redis.port
值。然后我想设置一个
RedisClient
StatefulRedisConnection
对象,以便在内部与助手函数一起使用

我的问题是,尽管在我运行时会编译,但我得到:

@Service
class RedisService {

    @Value("\${redis.host}")
    private val host: String = "localhost"

    @Value("\${redis.port}")
    private val port: Int = 6379

    private val log = LoggerFactory.getLogger(this::class.java)

    private lateinit var client: RedisClient
    private lateinit var connection: StatefulRedisConnection<String, String>

    @PostConstruct
    private fun setupConnection() {

        log.info("Creating connection to: [redis://$host:$port]")
        client = RedisClient.create(
                RedisURI.create("redis://$host:$port")
        )
        connection = client.connect()
    }
}
@服务
类再服务{
@值(\${redis.host})
private val host:String=“localhost”
@值(\${redis.port})
专用val端口:Int=6379
private val log=LoggerFactory.getLogger(this::class.java)
私有lateinit var客户端:RedisClient
私有lateinit变量连接:StatefulRedisConnection
@施工后
私有连接(){
log.info(“创建到:[redis://$host:$port]的连接”)
client=RedisClient.create(
create(“redis://$host:$port”)
)
connection=client.connect()
}
}
kotlin.UninitializedPropertyAccessException:lateinit属性连接尚未初始化

设置需要“以编程方式”构建的属性的正确方法是什么。它们需要是带有
@Bean
注释或类似注释的函数吗

感谢您提供的任何帮助。

请查看


lateinit字段必须是
@Autowired
连接必须通过
@Bean
注释。然后,
redisClient.connect()
作为助手方法将在您的
@Service
类中使用,类似这样的方法更好:

@Configuration
class RedisConfig {
    @Bean
    fun getRedisConnection(
        @Value("\${redis.host}") host: String,
        @Value("\${redis.port}") port: String) = RedisClient.create(RedisURI.create("redis://$host:$port")).connect()
}

@Service
class RedisService(private val connection: StatefulRedisConnection<String?,String?>) {
    private val log = LoggerFactory.getLogger(this::class.java)

    fun useConnection() {
        // use connection here
    }
}
@配置
类RedisConfig{
@豆子
有趣的连接(
@值(“\${redis.host}”)主机:字符串,
@Value(“\${redis.port}”)port:String)=RedisClient.create(RedisURI.create(“redis://$host:$port”)).connect()
}
@服务
类RedisService(专用val连接:StatefulRedisConnection){
private val log=LoggerFactory.getLogger(this::class.java)
有趣的连接(){
//在这里使用连接
}
}