该FactoryBean的可用于以编程方式创建,这可能需要复杂的实例化逻辑的对象.
但是,似乎由它创建的bean FactoryBean不会成为弹簧管理.这种解释是否正确?如果是这样,有什么好的解决方法吗?包含一个简短的代码示例来说明我的问题.
ApplicationContext的:
<bean id="searcher" class="some.package.SearcherFactory" />
<bean id="service" class="some.package.Service" />
Run Code Online (Sandbox Code Playgroud)
工厂实施:
public class SearcherFactory implements FactoryBean<Searcher> {
@Override
public Searcher getObject() throws Exception {
return new Searcher(); // not so complex after all ;)
}
@Override
public Class<Searcher> getObjectType() {
return Searcher.class;
}
....
}
Run Code Online (Sandbox Code Playgroud)
工厂创建的类:
public class Searcher() {
private Service service;
@Autowired
public void setService(Service service) {
// never invoked
this.service=service;
}
}
Run Code Online (Sandbox Code Playgroud) 我是Spring的新手.
这是bean注册的代码:
<bean id="user" class="User_Imple"> </bean>
<bean id="userdeff" class="User"> </bean>
Run Code Online (Sandbox Code Playgroud)
这是我的bean类:
public class User_Imple implements Master_interface {
private int id;
private User user; // here user is another class
public User_Imple() {
super();
}
public User_Imple(int id, User user) {
super();
this.id = id;
this.user = user;
}
// some extra functions here....
}
Run Code Online (Sandbox Code Playgroud)
这是我执行操作的主要方法:
public static void main(String arg[]) {
ApplicationContext context = new ClassPathXmlApplicationContext("/bean.xml");
Master_interface master = (Master_interface)context.getBean("user");
// here is my some operations..
int id = ... …Run Code Online (Sandbox Code Playgroud) Lookup 方法注入Provider<T>、ObjectFactory和factoryBean. 如果我想要将原型的新实例(多次)转换为单例,那么哪一个是最佳解决方案?如果我想要将原型 bean 的新实例(多次)转换为原型?
我正在将 JDBI 与 Spring Boot 结合使用。我遵循了这个指南,这导致必须创建一个类:JdbiConfig其中,对于应用程序上下文中想要的每个 dao,您必须添加:
@Bean
public SomeDao someDao(Jdbi jdbi) {
return jdbi.onDemand(SomeDao.class);
}
Run Code Online (Sandbox Code Playgroud)
我想知道 Spring Boot 中是否有某种方法可以创建自定义处理器来创建 bean 并将它们放入应用程序上下文中。关于这如何工作,我有两个想法:
@JdbiDao并编写一些内容来获取它们。我曾尝试将这些手动注入到应用程序启动中,但问题是它们可能无法及时加载以进行注入,因为在类扫描期间无法识别它们。JdbiDao每个存储库接口都可以扩展的类。然后用标准注释接口@Repository并创建自定义处理器以通过以下方式加载它们Jdbi#onDemand这是我的两个想法,但我不知道有什么方法可以实现。我坚持手动创建一个 bean?以前解决过这个问题吗?