我想实现FactoryBean
接口来初始化我的bean。但我想将代理对象注入到我的服务中。
@Configuration
public class SomeContextFactory implements FactoryBean<SomeClass>
{
//implementation
}
我应该如何为代理对象更改此代码?(Spring boot,无xml)
我需要通过getObject()
动态生成对象,并将这些对象注入到某个单例服务中。
附加:使用我的自定义范围(或原型范围)
发布于 2020-07-06 21:42:53
假设你有SomeClass
和SomeContextFactory
public class SomeClass {
private int id;
// Setter
// Getter
// All args contructor
}
public class SomeContextFactory implements FactoryBean<SomeClass>
{
private int someClassId;
@Override
public SomeClass getObject() throws Exception {
return new SomeClass(someClassId);
}
@Override
public Class<?> getObjectType() {
return SomeClass.class;
}
@Override
public boolean isSingleton() {
return true; // for singleton scope
}
// @Override
// public boolean isPrototype() {
// return true; // for prototype scope
// }
// Setter
// Getter
}
现在,你必须告诉spring-boot
关于FactoryBean
的事情
@Configuration
public class FactoryBeanAppConfig {
@Bean
public SomeContextFactory someContextFactory() {
SomeContextFactory factory = new SomeContextFactory();
factory.someClassId(5);
return factory;
}
@Bean
public SomeClass someClass() throws Exception {
return someContextFactory().getObject();
}
}
最后,您的Bean SomeClass
已准备好注入:
@Service
public class SomeService implements ISomeService{
@Autowired
private SomeClass someClass;
public void useSomeClassAndPerformAction(){
// implementation...
}
}
https://stackoverflow.com/questions/62755685
复制相似问题