Jodd 框架是否提供为其他框架创建的对象注入 petitebeans 引用的机制?



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。老实说,我们可能会使这一点更加明显:)

(抱歉回复晚了)

最新更新