如何从外部配置中指定的完全限定 class 名称创建 bean? (Spring)
How to create a bean from a fully-qualified class name specified in external configuration? (Spring)
我正在使用 Spring 引导并有一个名为 application.yml
的外部配置文件。
在这个文件中,假设我有一个 属性 foo
将一个完全限定的 class 名称作为值。
使用 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 引导并有一个名为 application.yml
的外部配置文件。
在这个文件中,假设我有一个 属性 foo
将一个完全限定的 class 名称作为值。
使用 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;
}
}