如何在同一个捆绑包(模块)中的其他服务中使用服务?

时间:2016-03-09 04:49:23

标签: java osgi osgi-bundle blueprint-osgi

我在项目中有2个芽。当第一个bundle开始时,第二个bundle使用它的服务。但是如何在捆绑服务中使用服务?

<service ref="EMUtilService" interface="domain.access.EMUtil"/>

    <bean id="EMUtilService" class="domain.access.impl.EMUtilImpl" scope="singleton">
        <jpa:context unitname="access" property="entityManager"/>
        <tx:transaction method="*" value="RequiresNew"/>
    </bean>

    <service ref="userService" interface="domain.access.UserService"/>

    <bean id="userService" class="domain.access.impl.UserServiceImpl" scope="singleton">
    </bean>

我希望在EMUtilService或其他简单类中使用userService

我的EMUtilService

public class EMUtilImpl implements EMUtil {
    private EntityManager entityManager;

    public void setEntityManager(EntityManager entityManager) {
        this.entityManager = entityManager;
    }

    @Override
    public EntityManager getEntityManager() {
        return entityManager;
    }
}

我要在此服务中初始化EntityManager并在其他课程中使用它。

1 个答案:

答案 0 :(得分:0)

蓝图很大程度上受到Spring(它是Spring DM的继承者)的启发,因此,它支持将bean /服务注入其他bean的相同语法。您可以在bean定义上放置一个id,并将此bean注入另一个bean的属性:

<bean id="mybean" class="my.package.MyClass"/>

<bean id="myService" class="my.package.MyService">
   <property name="myProperty" ref="mybean"/>
</bean>