Micronautアプリケーションでの使用のSpring Bean

ポール:

私はこのような何かを探しています。

このmicronautアプリのコードを有します

@Configuration
@SpringBootApplication(exclude = {org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration.class,
        org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration.class,
        org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration.class,
        org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration.class})
@ComponentScan(basePackageClasses = HelloController.class)
public class Application {

    public static void main(String[] args) throws Exception {

        System.setProperty("akka.config", "/Users/nb38tv/workspace/hello-micronaut/src/main/resources/config/");
        System.setProperty("akka.config.file", "application.conf");
        ConfigurableApplicationContext springContext = ReactiveConnectorBootable.loadReactiveConnector();

        ConfigurableApplicationContext context = new MicronautApplicationContext();
        context.setParent(springContext);
        context.start();

        Micronaut.run(Application.class);

    }

}

どのように私はMicronautのいずれかで春ののApplicationContextをマージすることができます。

私は春の使用のApplicationContextは、いくつかの豆を注入するというライブラリを持っているので、私はそれを必要とします。

その後、私のコントローラで、私はそれを使用する必要があります。

@Controller("/hello")
public class HelloController {

    @Inject
    private ReactorConnectorManager<RequestInfoDTO, String> reactorConnectorRestManagerExecutor;

    @Get(produces = MediaType.TEXT_PLAIN)
    public String index() {
        if(reactorConnectorRestManagerExecutor == null){
            return "boooo";
        }
        return "Hello World";
    }
}

どこReactorConnectorManagerBean内にロードされますSpring context

よろしく

lczapski:

あなたは確認することができ、これを統合する方法の例があり春にMicronautは、

私は上の簡単なアプリケーションベースに作成したこの、上記のコードを。そして、上の例のためにhttp://localhost:8080/hello/Worldそれを返しますHello World with Test : World and Test : Worldだから、のように見えるControllerの用途Bean

package greeting.example;

import io.micronaut.runtime.Micronaut;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import java.util.function.Function;

@SpringBootApplication
public class Application {

    public static void main(String... args) {
        Micronaut.run(Application.class);
    }

    @Bean
    Function<String, String> stringService(){
        return (value) -> "Test : "+ value;
    }
}

そして

package greeting.example;

import io.micronaut.http.MediaType;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
import io.reactivex.Single;

import javax.inject.Inject;
import java.util.function.Function;

@Controller("/")
public class HelloController {

    @Inject
    Function<String, String> stringService;

    @Autowired
    private ApplicationContext applicationContext;

    @Get(uri = "/hello/{name}", produces = MediaType.TEXT_PLAIN)
    public Single<String> hello(String name) {
        Function<String, String> service =  applicationContext.getBean(Function.class);
        return Single.just("Hello " + name + " with " + stringService.apply(name)
                + " and " + service.apply(name));
    }
}

更新

へのアクセスを取得することを可能にするハックConfigurableApplicationContext contextApplicationシングルトンのようなまたはあなたを保持する私の例の静的フィールドで何かを作成しますcontext

static ConfigurableApplicationContext springContext;

...

ConfigurableApplicationContext springContext = ReactiveConnectorBootable.loadReactiveConnector();

そして、あなたの中にHelloController

@Get(produces = MediaType.TEXT_PLAIN)
public String index() {
    ReactorConnectorManager<RequestInfoDTO, String> reactorConnectorRestManagerExecutor =
            Application.springContext.getBean(ReactorConnectorManager<RequestInfoDTO, String>.class);
    if(reactorConnectorRestManagerExecutor  == null){
        return "boooo";
    }
    return "Hello World";
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=330931&siteId=1