Jodd 框架是否提供了为其他框架创建的对象注入 petitebeans 引用的机制?
以下是场景
- 域/服务对象由 Spring 框架
创建- 由ORM框架
创建的域对象- 这些对象需要注入 Repository/DAO 对象(通过 AutomagicPetiteConfigurator 注册为 PetiteBean 的单例对象)
下面是示例代码,在 petite 容器关闭后,当 pc.getBean(Greetings.class).message(null) 被调用并且 destroyMethod() 未被调用时,initMethod() 被调用,你能指出我做错了什么吗?
@PetiteBean("greetings")
public class EnglishGreetings implements Greetings {
@Override
public String message(String message) {
if (message == null) {
return "defaultMessage";
}
return message;
}
@PetiteInitMethod
public void initMethod() {
System.out.println("Entered initMethod");
}
@PetiteDestroyMethod
public void destroyMethod() {
System.out.println("Entered destroyMethod");
}
}
public class GreetingRunner {
final static Logger logger = LoggerFactory.getLogger(GreetingRunner.class);
@PetiteInject
public Greetings greetings;
public static void main(String s[]) {
jodd.log.LoggerFactory.setLoggerFactory(new Slf4jLoggerFactory());
PetiteContainer pc = new PetiteContainer();
AutomagicPetiteConfigurator configurator = new AutomagicPetiteConfigurator();
configurator.setIncludedEntries("com.rans.*");
configurator.configure(pc);
pc.shutdown();
System.out.println(pc.getBean(Greetings.class).message(null));
}
}
由于 Petite 的懒惰方面,尚未调用 Destroy 方法 - 如果未使用 bean,则不会调用 destroy 方法。这同样适用于 init 方法。如果不使用豆子,娇小简单会忽略它。
现在回到问题:
Jodd 框架是否提供了为其他框架创建的对象注入 petitebeans 引用的机制?
从技术上讲,是的 - 如果您覆盖它:)请参阅PetiteProxettaContainer
。您可以覆盖getBean
并使用第三方容器来获取 bean。实际上,您可以覆盖createBeanDefinitionForRegistration
方法在不同的容器中注册 bean。老实说,我们可能会使这一点更加明显:)
(抱歉回复晚了)