是否可以选择在界面字段上插入属性?我尝试过类似的方法,但没有成功。
public interface ServicePathsConfig {
@Value("${default-connection-timeout}")
int DEFAULT_CONNECT_TIMEOUT = 1000;
}
我尝试使用 @PostConstruct 创建默认设置器,结果相同。有什么想法如何将属性注入接口字段吗?
作为一种解决方法,在某些情况下,您可以将接口转换为抽象类,然后就可以了:
public abstract class ServicePathsConfig {
@Value("${default-connection-timeout:1000}")
protected int defaultConnectTimeout;
public abstract void someMethod();
}
关于 C++ 的有趣事实:这就是 C++ 世界的一些人所说的“接口设计模式”,没有
interface
作为语言特性,但具有多重继承。
您可以使用此代码打开配置java类。 @配置 @ComponentScan("com.??") @PropertySource("类路径:(??.properties"))
并将 default-connection-tiemout 放入另一个不带 int 的新属性文件中。 但是你不能将其注入到接口中,你需要注入一些java类。
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 {
}