我有一个配置类,其中定义了一些bean。我可以直接从下面的服务中访问bean方法吗?
@Configuration
public class MyConfig{
@Bean
public Sample sample(int x){
return new Sample(x);
}
}
@Service
public class MyService{
@Autowired
MyConfig config;
public void test(){
Sample sample = config.sample(2);
}
}
答案 0 :(得分:0)
这可以通过使用BeanFactory
接口(ApplicationContext
实现)和所需bean的 prototype 范围来实现。
在MyConfig
类中,bean的范围应设置为“原型”:
// import org.springframework.context.annotation.Scope;
@Bean
@Scope("prototype")
public Sample sample(int x) {
return new Sample(x);
}
然后,应插入config
的实例,而不是在MyService
中自动装配BeanFactory
:
@Autowired
private BeanFactory beanFactory;
要获取Sample
bean的实例,应按以下方式调用它:
Sample sample = beanFactory.getBean(Sample.class, 1);