当前位置: 首页 > 知识库问答 >
问题:

在Micronaut应用程序中使用Spring Beans

谭修然
2023-03-14

我一直在找这样的东西。

拥有此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);

    }

}

如何将Spring的ApplicationContext与Micronaut的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";
    }
}

问候

共有1个答案

卜飞鸣
2023-03-14

您可以查看一下这里有一个如何将Micronaut与Spring集成的示例

我在上面的代码基础上创建了一个简单的应用程序。例如,在http://localhost:8080/hello/World上,它返回:hello World with Test:World和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));
    }
}
static ConfigurableApplicationContext springContext;

...

ConfigurableApplicationContext springContext = ReactiveConnectorBootable.loadReactiveConnector();
@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";
}
 类似资料:
  • 我有一个简单的Micronaut Lambda应用程序,很难成功地将Mocks注入到我的单元测试中。 build.gradle 具有以下基本控制器 以及以下测试类别: 上面的测试将失败,因为模拟从未与之交互。 调试时,我可以看到在测试类本身中被模拟,但在类中使用了一个实际的对象。 我注意到,当我不使用(例如)时,这是预期的,所以我认为这与Lambda运行时有关,我希望有人能够指出我在正确的方向上。

  • 我正在尝试使用micronaut创建内存开销较低的微服务。从使用micronaut开始,我遇到了一些问题,启动时内存开始变低,但加载时内存膨胀,无法恢复。 我正在用一个小应用程序测试它,该应用程序从Rest调用中获取一个项目,做一些工作,模拟内存峰值,并将结果存储在数据库中。如果我运行jar文件,应用程序从大约170mb的内存开始,在诱导的峰值位于大约700mb之后。本机映像具有类似的结果,尽管启

  • 我试图理解我们什么时候需要使用这个应用程序。在我们的node Express中使用 当我在网上搜索时,我在reddit上偶然发现了这个答案,它说明了应用程序之间的区别。获取和应用程序。使用 在此基础上,我总结了以下几点。 充当超级路由或中间件?这意味着它在? 此外,如果有人能添加更多关于app.use.的信息/练习,我将不胜感激

  • 在99%的情况下,当SQL server返回意外错误或文件系统中缺少文件时,我不能做任何合理的事情,我只想记录这种情况并将错误返回给用户。所以我看不出有什么理由应该返回“err”手动展开堆栈,实际上我会丢失stacktrace和上下文,并且更难找到错误的原因。 有没有什么我错过了,所以这种方法不会很好地工作?似乎大多数Go文章都建议不要使用panic/recover,但我不明白为什么。它看起来非常

  • 我尝试在JAVA代码中调用MessageBoxA函数。以下方法有什么问题,以至于我的程序抛出了很多错误? 1-st: run:线程“main”java.lang.ClassFormatError:java.lang.ClassLoader的类文件加载/库/MessageBox中的本机或抽象方法中的代码属性。java.lang.ClassLoader.defineClass(ClassLoader.

  • 我正在设置micronaut应用程序,但部署失败,出现以下异常: 我们有3个环境:开发,测试和生产。它在开发和测试中工作,但不在生产中。我们验证了环境变量和jdk版本。我们在云环境中,相同的映像正在部署在开发、测试和生产中。 NA