Как получить Eclipse Sisu создан Боб из экземпляра, который был создан с новым ()

Я пытаюсь интегрировать своего рода » DI » в моем Eclipse 3.x like project.

Поэтому я определил некоторые «бизнес» бобы, как это:

@Named
class A{...}

@Named class B{ @Inject private A a;
public void doSmtg() { //use a
}

И, наконец, у меня есть класс Eclipse AbstractHandler (зарегистрирован плагином.xml extension point), где я хочу ввести бин.

public class UIHandler extends AbstractHandler implements IHandler {

    @Override
    public Object execute(ExecutionEvent event) throws ExecutionException {
// I want to get my B bean where A is injected
}}

Возможно ли это? Как я могу это сделать?

1 ответ

  1. Глядя На активатор Sisu, я использовал код SisuTracker и теперь использую этот фрагмент для получения Боба:

    this.resourceToAssetFinder = (ILocator<R, Asset>) Activator.getPlugin().findLocator(Activator.getPlugin().getBundle().getBundleContext()).locate(Key.get(IResourceToAssetLocator.class)).iterator().next().getValue();
    

    Таким образом, все бобы загружаются в classpath моего пакета.

    Side info, необходимые зависимости для загрузки Sisu:

     <artifact>
        <id>com.google.guava:guava:${com.google.guava_guava.version}</id>
    </artifact>
    <artifact>
        <id>com.google.inject:guice:${com.google.inject_guice.version}</id>
        <transitive>false</transitive>
    </artifact>
    <artifact>
            <id>com.google.inject.extensions:guice-multibindings:${com.google.inject.extensions_guice-multibindings.version}</id>
            <transitive>false</transitive>
    </artifact>
    <artifact>      <id>org.eclipse.sisu:org.eclipse.sisu.inject:${org.eclipse.sisu.version}</id>
    </artifact>