eureka:
client:
enabled: false
[..] # No other configuration part that affects discovery/eureka client
@SpringBootTest
@AutoConfigureMockMvc(addFilters = false)
@Transactional
class FooAPITest {
@Test
void contextLoads() {
}
}
但是,我有一个组件,它注入了EurekaClient来从中获取服务实例
@Component
public class ServiceClient {
@Autowired
public ServiceClient(@Qualifier("eurekaClient") EurekaClient eurekaClient) {
URI serviceUri = URI.create(eurekaClient.getNextServerFromEureka("service", false).getHomePageUrl());
}
}
因此,从这个服务开始,我的应用程序无法加载ApplicationContext。
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.netflix.discovery.EurekaClient' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value="eurekaClient")}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1695)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1253)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:885)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789)
... 81 more
到目前为止我所尝试的
@Configuration
class Configuration {
@Autowired
EntityManager entityManager;
}
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'javax.persistence.EntityManager' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1695)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1253)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640)
... 81 more
@MockBean
ServiceClient serviceClient;
@BeforeEach
void setUp() {
MockitoAnnotations.initMocks(FooAPITest.class);
}
解决这个问题的恰当方法是什么?
您可以尝试在测试中模拟Eurekaclient
:
@SpringBootTest
@AutoConfigureMockMvc(addFilters = false)
@Transactional
class FooAPITest {
@MockBean
private EurekaClient eurekaClient;
@Test
void contextLoads() {
}
}
这将在applicationcontext
中创建Eurekaclient
作为模拟bean,并将其注入到服务中。
如果您有其他测试来初始化SpringApplicationContext
,则可以在要扫描的应用程序包中创建一个单独的配置类(使用@ConditionalOnMissingBean
注释来覆盖所有基础):
@Configuration
public class MockEurekaConfiguration {
@Bean
@ConditionalOnMissingBean
public EurekaClient eurekaClient() {
return Mockito.mock(EurekaClient.class);
}
}
我有一堆模块(比如3)。两个是基于Spring Boot的模块,另一个是基于Spring的模块。例如模块1-SpringBoot模块2-Spring Boot模块3-Common模块仅基于Spring 模块3@配置文件定义,只需要由模块2选择,而不是模块1。 除了放入一个不同的包之外,我知道如何在Spring Boot模块中禁用组件扫描非Spring Boot模块。我不想放不同的包裹。 任何帮助都
我正在处理一个Spring Boot应用程序,其中我使用该应用程序公开SOAP WebService。我在Spring boot应用程序中使用Apache CFX framework for SOAP impl。我正在使用基于注释的方法。 我在一个bean中的Spring Boot配置文件中设置应用程序上下文时遇到了问题。下面是我的代码。 配置文件如下所示。 现在我有了bean SOAPproce
我如何编辑我的函数以从我的用户状态中删除项目?在user.cart中,它是数组。 函数如下: 下面是按钮:
我多年来一直在使用Spring MVC,我试图理解与Spring Boot的一些关键区别。 你能帮我确认一下吗?或者让我明白我在这里遗漏了什么?
问题内容: 您可以在不使用元素的情况下在Spring application-context.xml文件中创建列表吗? 我有一个其构造函数带有对象的bean,并且我想通过“ value”属性传递整个列表。原因是此值来自.properties文件,您无法在.properties文件中定义列表。 我想做这样的事情…可能吗? MyClass.java: application-context.xml: