尝试使用RestTemplateBuilder在Spring Boot 2.1.4中@Autow的RestTemboard。当我运行jUnit测试时,我在尝试自动装配RestTemboard时收到错误。
我在这里看到了:如何使用注释自动连接RestTemplate似乎RestTemplateBuilder更好,所以我想使用它。
这是配置文件:
@Configuration
public class Beans {
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}
}
这是测试课程:
@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = Beans.class)
public class AppTest extends TestCase {
@Autowired
private RestTemplate restTemplate;
}
错误是:
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of method restTemplate in beanDeclerations.Beans required a bean of type 'org.springframework.boot.web.client.RestTemplateBuilder' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'org.springframework.boot.web.client.RestTemplateBuilder' in your configuration.
我编辑了其他自动装配的工作。我在这里错过了什么?在网上搜索后,我发现Spring自动连接RestTemplateBuilder,为什么这里没有这样做?
编辑:我最终使用了@RestClientTest(),现在不得不将RestTemplateBuilder Bean移动到主类中,稍后我会将其移动到另一个地方。谢谢你的帮助。
我有同样的问题(在Spring Boot 2.5.5应用程序中)。
为了解决这个问题,我必须在我的测试类上添加@AutoConfigreWebClient。
所以我的测试是这样的:
@AutoConfigureWebClient
@WebMvcTest(controllers = TeamController.class)
public class TeamControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private FooService fooService;
@Test
public void findAllFoos() throws Exception {
mockMvc.perform(get("/foos"))
.andExpect(status().isOk());
}
}
但我在某个地方读到,它可能被认为是一个应该由Spring团队修复的bug(也许这个注释会直接添加到@WebMvcTest?)。
我这样认为:测试的启动和停止速度比使用@SpringBootTest时快(因为最后一个测试会使应用程序完全启动)。
欲了解更多信息:https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureWebClient.html
RestTemplateBuilder应通过自动配置提供(请参阅:https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/client/RestTemplateAutoConfiguration.java).我认为由于@ContextConfiguration,这个配置丢失了。你有一些可能性。尝试将RestTemplateBuilder的自动配置添加到ContextConfiguration中。第二种方法是进行测试配置,创建自己的RestTemplateBuilder或直接创建RestTemplate。第三个问题是不要注入RestTemplate——在测试中手工构建它。您还可以删除@ContextConfiguration注释,但这将导致一个测试,该测试将加载您在项目中定义的每个配置。
还有一个RestTestTemplate(https://www.baeldung.com/spring-boot-testresttemplate)它是为测试而设计的。
@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = {TestConfig.class, RestTemplateAutoConfiguration.class})
public class SandboxApplicationTests {
@Autowired
RestTemplate restTemplate;
@Test
public void contextLoads() {
}
}
上面的片段对我很有用。如果没有ContextConfiguration中的RestTemplateAutoConfiguration,则无法创建RestTemplate,因为缺少RestTemplateBuilder Bean
我在启动spring boot应用程序时遇到以下错误。这是我的第一个spring boot项目。因此,我不确定错误以及如何修复它。 申请启动失败 描述: 配置为侦听端口8080的Tomcat连接器无法启动。端口可能已在使用中,或者连接器可能配置错误。 行动: 验证连接器的配置,识别并停止在端口8080上侦听的任何进程,或者将此应用程序配置为在另一个端口上侦听。
项目Spring引导1..5.7版本。我正在使用Intellij IDEA 2017.2.4和gradle进行依赖性管理。当我构建项目时,它成功构建,没有错误。当我用bootRun gradle任务运行应用程序时,它显示以下错误。
以下错误显示在Eclipse中 原因:org。springframework。邮政MailSendException:邮件服务器连接失败;嵌套的异常是javax。邮政MessaginException:无法连接到SMTP主机:SMTP。gmail。com,端口:25; 应用程序属性: 我尝试了一切:停用防病毒,启用不太安全的端口更改为465或25,但没有结果。
我正在构建一个spring boot应用程序,在从eclipse运行项目的同时,它可以完美地工作,页面加载正常。但当我构建maven并生成JAR文件并尝试执行时,JSP页面没有加载,它显示了白标签错误。 应用属性 文件夹结构 波姆。xml 这个项目pom xml与所有的depeden Spring启动类文件
我使用spring初始化工具来生成一些工作骨架,我使用MAVEN项目的默认值 https://start.spring.io/ 当我运行(在项目中没有做任何更改)时,我得到了以下错误,知道如何克服它吗? 使现代化 这是pom。xml文件,我没有更改任何内容。。。 更新2
我有一个基本的SpringBoot应用程序。使用Spring初始值设定项、嵌入式Tomcat、Thymeleaf模板引擎和作为可执行JAR文件的包 我想将所有应用程序错误重定向到一个公共页面。我已经创建了这个控制器: 我的配置文件: 以及错误模板 但结果是: 这就是提出的解决方案的结果: 检查属性,这些是属性,消息就在那里:
2020-05-09 17:28:38.521信息21308---[restartedMain]O.A.C.C.C.[Tomcat].[localhost].[/]:初始化Spring embedded WebApplicationContext 2020-05-09 17:28:38.527信息21308--[restartedMain]O.s.Web.context.ContextLoader
我编译我的项目与,并失败与。 “详细信息”命令: 获取jar文件通过在源项目中运行 这里是源代码项目 这是目标项目pom。xml