Jodd框架是否提供了为其他框架创建的对象注入petitebeans引用的机制。
以下是情景
- 域/服务对象由Spring Framework创建
- 由ORM框架创建的域对象
- 需要使用Repository / DAO对象注入这些对象(通过AutomagicPetiteConfigurator将Singleton对象注册为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));
}
}
答案 0 :(得分:0)
由于Petite的 lazy 方面,尚未调用Destroy方法 - 如果未使用bean,则不会调用destroy方法。这同样适用于init方法。如果没有使用bean,Petite simple会忽略它。
现在回到问题:
Jodd框架是否提供了为其他框架创建的对象注入petitebeans引用的机制。
技术上,是的 - 如果你覆盖它:)请参阅PetiteProxettaContainer
。您可以覆盖getBean
并使用第三方容器来获取bean。实际上,您可以覆盖createBeanDefinitionForRegistration
方法以在不同的容器中注册bean。说实话,我们可能会更明显:)
(抱歉迟到的回复)