将属性中的值注入接口字段

问题描述 投票:0回答:3

是否可以选择在界面字段上插入属性?我尝试过类似的方法,但没有成功。

public interface ServicePathsConfig {
    @Value("${default-connection-timeout}")
    int DEFAULT_CONNECT_TIMEOUT = 1000;
}

我尝试使用 @PostConstruct 创建默认设置器,结果相同。有什么想法如何将属性注入接口字段吗?

java spring interface static code-injection
3个回答
1
投票

作为一种解决方法,在某些情况下,您可以将接口转换为抽象类,然后就可以了:

public abstract class ServicePathsConfig {
    @Value("${default-connection-timeout:1000}")
    protected int defaultConnectTimeout;

    public abstract void someMethod();
}

关于 C++ 的有趣事实:这就是 C++ 世界的一些人所说的“接口设计模式”,没有

interface
作为语言特性,但具有多重继承。


0
投票

您可以使用此代码打开配置java类。 @配置 @ComponentScan("com.??") @PropertySource("类路径:(??.properties"))

并将 default-connection-tiemout 放入另一个不带 int 的新属性文件中。 但是你不能将其注入到接口中,你需要注入一些java类。


0
投票
java class:

@Component
public class blabla implements blabla1 {

    @Value("${default-connection.timeout}")
   int default-connection;

--------------
interface
public interface blabla1 {
}

-------------
file:
Timeout.properties
default-connection.timeout=1000

------------------
java class:

@Configuration
@ComponentScan("com.(your package name)")
@PropertySource("classpath:connection.properties")
public class TimeoutConfig {


}
© www.soinside.com 2019 - 2024. All rights reserved.