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

时间:2016-04-22 21:43:23

标签: jodd

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));
    }
}

1 个答案:

答案 0 :(得分:0)

由于Petite的 lazy 方面,尚未调用Destroy方法 - 如果未使用bean,则不会调用destroy方法。这同样适用于init方法。如果没有使用bean,Petite simple会忽略它。

现在回到问题:

  

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

技术上,是的 - 如果你覆盖它:)请参阅PetiteProxettaContainer。您可以覆盖getBean并使用第三方容器来获取bean。实际上,您可以覆盖createBeanDefinitionForRegistration方法以在不同的容器中注册bean。说实话,我们可能会更明显:)

(抱歉迟到的回复)

相关问题