【发布时间】:2016-04-22 21:43:22
【问题描述】:
Jodd 框架是否提供机制来为其他框架创建的对象注入 petitebeans 引用。
以下是场景
- 域/服务对象由 Spring 框架创建
- 创建的域对象由 ORM 框架
- 这些对象需要注入 Repository/DAO 对象(通过 AutomagicPetiteConfigurator 注册为 PetiteBean 的单例对象)
下面是示例代码,在小型容器关闭后,调用 pc.getBean(Greetings.class).message(null) 时调用 initMethod() 而未调用 destroyMethod(),请指点我做错了吗?
@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));
}
}
【问题讨论】:
-
你为什么用
getBean调用pc.shutdown();之前? -
@игор, Intent to call pc.shutdown() 是为了检查以下内容 - 是否会调用带有 PetiteDestroyMethod 注释标记的 destroyMethod() 并且在 Petite Container 关闭后无法访问 Beans
-
请标记正确答案。
标签: jodd