- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在服务中访问 ApplicationContext 的每次尝试都失败,ApplicationContext 返回为 null。在 Spring 中,我能够使用 ApplicationContextAware,根据( https://micronaut-projects.github.io/micronaut-spring/latest/guide/index.html )应将其替换为 micronaut 中的 @Autowired 。我已经尝试过
@Autowired ApplicationContext context
但是没有运气。它始终为空。任何帮助将不胜感激!
最佳答案
该项目位于https://github.com/jeffbrown/injectcontext显示了注入(inject) ApplicationContext
的 2 种方法。
package injectcontext;
import io.micronaut.context.ApplicationContext;
import javax.inject.Singleton;
@Singleton
public class FirstService {
private final ApplicationContext applicationContext;
public FirstService(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
public boolean isContextNull() {
return applicationContext == null;
}
}
package injectcontext;
import io.micronaut.context.ApplicationContext;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public class SecondService {
@Inject
ApplicationContext applicationContext;
public boolean isContextNull() {
return applicationContext == null;
}
}
package injectcontext;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
@Controller("/")
public class DemoController {
FirstService firstService;
SecondService secondService;
public DemoController(FirstService firstService, SecondService secondService) {
this.firstService = firstService;
this.secondService = secondService;
}
@Get("/first")
public String first() {
boolean isNull = firstService.isContextNull();
return "firstService.isContextNull() == " + isNull;
}
@Get("/second")
public String second() {
boolean isNull = secondService.isContextNull();
return "secondService.isContextNull() == " + isNull;
}
}
一切正常:
$ curl http://localhost:8080/first
firstService.isContextNull() == false
$
$ curl http://localhost:8080/second
secondService.isContextNull() == false
编辑
如果您真正想要的只是检索服务 ID,您可以执行以下操作:
package injectcontext;
import io.micronaut.discovery.DiscoveryClient;
import org.reactivestreams.Publisher;
import javax.inject.Singleton;
import java.util.List;
@Singleton
public class DiscoveryHelper {
private final DiscoveryClient consulClient;
public DiscoveryHelper(DiscoveryClient consulClient) {
this.consulClient = consulClient;
}
public Publisher<List<String>> getIds() {
// do whatever you want with the ids...
return consulClient.getServiceIds();
}
}
如果您在启用了 consul 的服务中拥有该功能,那么这将起作用。
consul:
client:
registration:
enabled: false # set to true if you want this service to register itself
defaultZone: "${CONSUL_HOST:localhost}:${CONSUL_PORT:8500}"
关于java - 如何从 micronaut 框架内的服务访问 ApplicationContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57278213/
我想在遗留应用程序中使用 Spring。 核心部分是一个类,我们称之为LegacyPlugin,它代表应用程序中的一种可插入部分。问题是这个类也是数据库连接器,并且用于创建许多其他对象,通常通过构造函
我有 3 个应用上下文: 负责启动 Jetty servlet 容器的全局上下文,从 main() 启动 jetty 中每个 webapp 的 applicationContext 父级(由 Spri
我通过以下代码在应用程序上下文中设置 applicationContext-dao.xml 和 applicationContext-service.xml。 proj
我正在尝试使用 Spring 运行 JUnit 测试,但控制台显示: 无法加载 ApplicationContext 错误。我正在使用 Maven 结构,并且在 src/main/resources
我的applicationContext.xml,webmvc-config.xml在WEB-INF/spring/applicationContext.xml 当我尝试以下操作时,它没有加载,我得到
我正在尝试从 WCSession 获取最新数据我不明白为什么即使我刚刚收到 didReceiveApplicationContext称呼。 更多细节可以直接在代码中获得: //Watch Code o
我正在尝试运行 mvn integration-test阶段,我得到 Failed to load ApplicationContext执行集成测试时出错(单元测试正确执行)。我正在使用 Spring
我在创建测试类时遇到问题。基本上我想测试执行网络调用的 View 模型类。使用 dagger 注入(inject)类网络组件需要上下文参数来检查连接,这是我的 View 模型: class MyVie
我有一个带有 Spring 插件的 struts2 Web 项目。 applicationContext.xml 位于 /WEB-INF/applicationContext.xml 我如何在我的类(
我在一个名为 Controller 的全局类中声明的全局变量有一个小问题,该全局类是从应用程序扩展的。 当我启动 Activity A 时,我在 Controller 中有一个包含 0 个项目的数组列
当我运行我的 spring 集成 junit 类时,我遇到了异常。 这是我的类(class) @RunWith(SpringJUnit4ClassRunner.class) @ContextConfi
我是 java EE spring boot 的新手,我想我会开始一个小项目来掌握一些东西,我目前遇到如上所述的错误 failed to load ApplicationContext 我是不知道为什
我只能在 Spring (3.0.5) jdbc 应用程序(在 Oracle 11.2 上运行)中获取 Activity 的编程事务,当txAdvice指向从应用程序上下文调用的实际方法(mainTe
在servet类中,可以通过这种方式获取spring ApplicationContext ApplicationContext ctx = WebApplicationContextUtils.ge
抱歉,如果我的术语不正确,我是 C# 的新手。我正在尝试使用 ApplicationContext 文件来存储 mysql conn 值,如 dbname、用户名、密码。带有 mysql conn 字
我正在尝试在所有 ContextXXXEvent 上使用 ContextEventListener我为每种事件类型创建了一个监听器,如下所示(ContextRefreshedEvent 是一个示例):
我的应用程序有一个 application-context.xml。现在我将 ApplicationContext 实例化为: ApplicationContext context = new Cla
我正在开发一个 spring 3 web 服务应用程序,我正在尝试从我的 servlett.xml 文件加载 ApplicationContext 以用于一个简单的测试用例,但它不起作用。 Appli
在我的应用程序完成后,我想关闭 spring 上下文。 相关代码有一个 ApplicationContext 引用,但我找不到 close 方法。 最佳答案 贬低你的ApplicationContex
我在尝试为 kotlin 多平台自定义上下文时遇到了这个问题 Actual typealias 'ApplicationContext' has no corresponding expected d
我是一名优秀的程序员,十分优秀!