shr*_*000 15 java spring annotations static-factory
如果我正在编写一个静态工厂方法来创建对象,我如何使用该工厂类的'@Component'注释并指示(带有一些注释)静态工厂方法,应该调用该方法来创建该类的bean?以下是我的意思的伪代码:
@Component
class MyStaticFactory
{
@<some-annotation>
public static MyObject getObject()
{
// code to create/return the instance
}
}
Run Code Online (Sandbox Code Playgroud)
Tom*_*icz 16
恐怕你目前无法做到这一点.但是,Java配置非常简单:
@Configuration
public class Conf {
@Bean
public MyObject myObject() {
return MyStaticFactory.getObject()
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下MyStaticFactory
,不需要任何Spring注释.当然,您可以使用优秀的XML.
小智 7
您需要使用弹簧接口FactoryBean
.
由
BeanFactory
本身工厂内使用的对象实现的接口.如果bean实现了这个接口,它将被用作公开的对象的工厂,而不是直接作为将自己公开的bean实例.
实现接口并为它声明一个bean.例如 :
@Component
class MyStaticFactoryFactoryBean implements FactoryBean<MyStaticFactory>
{
public MyStaticFactory getObject()
MyStaticFactory.getObject();
}
public Class<?> getObjectType() {
return MyStaticFactory.class;
}
public boolean isSingleton() {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
通过@Component
和组件扫描,将发现此类.Spring将检测到它是一个FactoryBean
并将您getObject
作为bean 返回的对象公开(如果您指定了它,则为单例).
或者,您可以为此课程提供@Bean
或<bean>
声明FactoryBean
.
归档时间: |
|
查看次数: |
13387 次 |
最近记录: |