spring - 在同一上下文中通过 Spring Boot 创建的对象的两个不同哈希码
问题描述
我编写了一个简单的 Spring Boot 应用程序,稍后我将对其进行扩展以构建一个 Spring REST 客户端。我有一个工作代码;我正在玩耍以更好地理解这些概念。代码如下。
@SpringBootApplication
public class RestClientApplication {
public static void main(String[] args) {
SpringApplication.run(RestClientApplication.class, args);
try (AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(
RestClientApplication.class)) {
System.out.println(" Getting RestTemplate : " + ctx.getBean("restTemplate"));
}
}
@Bean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
return restTemplateBuilder.build();
}
@Bean
public CommandLineRunner run(RestTemplate template) {
return args -> {
System.out.println("Rest Template instance from CLR is : " + template);
};
}
}
观察
Rest Template instance from CLR is : org.springframework.web.client.RestTemplate@1e53135d
Getting RestTemplate : org.springframework.web.client.RestTemplate@5aa6202e
问题 我认为哈希码是相同的。这是预期的行为吗?是的,怎么样?
解决方案
您创建了两个不同的 Spring 上下文:
// first context
SpringApplication.run(RestClientApplication.class, args);
// second context
try (AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(
RestClientApplication.class)) {
System.out.println(" Getting RestTemplate : " + ctx.getBean("restTemplate"));
}
所以结果是意料之中的。
推荐阅读
- angular - 角度路由(链接)在 HTML 中不起作用
- c++ - MacOS EnableWindow 等效
- typescript - 打字稿错误 - 可以用不同的约束子类型实例化
- python - 使用python将多个图像连接到单个图像
- php - 是否可以重命名 Laravel 创建的 XSRF-TOKEN cookie?
- python - Python Selenium 中的错误仅用于加载页面
- power-automate - 如何使用 Power Automate 亲自向 MS Teams 中的多个用户发送欢迎消息
- css - Angular:css变量在组件中不可用
- reactjs - 将 apexcharts 的字体大小标签更改为响应式
- python-3.x - 如何使用列表理解或应用(而不是 iterrows)来迭代数据帧 pandas