需要注意以下几点:
- 在新建的配置类上添加注解
@Configuration
; - 将
@Bean
方法移动到新的配置类中,并注意方法上方是否有依赖注入的注解,如@Autowired
等; - 如果
@Bean
方法上方有注入的注解,那么需要确保所注入的 bean 已经被创建并注入,否则可能会出现NullPointerException
等错误; - 如果原来的
@Bean
方法中使用了一些配置项,例如@Value
和@ConfigurationProperties
,需要将这些配置项同样加到配置类中,并在方法上通过@Value
或者@ConfigurationProperties
注解进行注入; - 如果原启动类中使用了
@ComponentScan
配置来指明要扫描的包,需要将这个配置同样加到配置类中,以确保所有的组件都能够被扫描到。
根据上面的规则,如果你想把启动类中的 RestTemplate
类转移到配置类中,可以按照以下步骤进行:
- 创建一个新的配置类,例如
MyConfig
; - 在
MyConfig
类上添加@Configuration
注解,标明这个类是一个配置类; - 在
MyConfig
类中定义一个名为restTemplate()
的方法,并添加@Bean
注解; - 在
restTemplate()
方法中返回一个RestTemplate
类型的对象,例如:
@Configuration
public class MyConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
上面的代码中,我们将原来的 RestTemplate
对象转移到了一个名为 MyConfig
的配置类中,并仍然使用 @Bean
注解将其注入到 Spring 容器中,同时添加了 @LoadBalanced
注解实现负载均衡。
最后,需要保证 MyConfig
配置类被扫描到。为此,可以在启动类中添加 @Import
注解来导入 MyConfig
配置类,如下所示:
@SpringBootApplication
@Import(MyConfig.class)
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
这样就完成了将启动类中的 RestTemplate
类转移到配置类中的操作。