我正在使用Spring Boot,并有一个名为的外部配置文件application.yml
。
在此文件中,假设我有一个foo
将完全限定的类名作为值的属性。
使用Java配置,创建foo
属性指定类型的bean的典型方法是什么?
我想这foo
是在实现一些已知的接口。否则,创建未知类型的bean是毫无意义的。
就像是:
@Configuration
public class FooConfiguration {
@Value("foo.class-name") // ref to the key used in you application.yml
private String fooClassName;
@Bean
public FooInterface fooBean(){
FooInterface fooImpl = Class.forName(fooClassName).newInstance(); // concreet implemetation
return fooImpl;
}
}
这次真是万分感谢。不确定反射之外是否还有某些特定于Spring的方式。是的,
foo
正在实现一些已知的接口。如果已知实现的数量有限,则可以使用
@ConditionalOnProperty
并避免反射。谢谢德克。我来看一下。