Java 如何在bean方法中注入字段?

Java 如何在bean方法中注入字段?,java,spring,spring-boot,Java,Spring,Spring Boot,声纳林特认为正确的注射方法是: @Bean public Example example(DataSource datasource) { return new Example(datasource) } 但是如果只有一种方法使用这个字段。我很好奇,为什么只有一种方法?也许最好是“自动连线” 引用声纳规则: 当使用@Autowired时,在实例化类时需要解析依赖关系,这可能会导致bean的早期初始化或导致上下文查找不应该找到bean的地方。为了避免这个棘手的问题并优化上下文加载的方式,应

声纳林特认为正确的注射方法是:

@Bean
public Example example(DataSource datasource) {
   return new Example(datasource)
}
但是如果只有一种方法使用这个字段。我很好奇,为什么只有一种方法?也许最好是“自动连线”

引用声纳规则:

当使用@Autowired时,在实例化类时需要解析依赖关系,这可能会导致bean的早期初始化或导致上下文查找不应该找到bean的地方。为了避免这个棘手的问题并优化上下文加载的方式,应该尽可能晚地请求依赖项。这意味着对仅在单个@Bean方法中使用的依赖项使用参数注入而不是字段注入


正如您引用的那样,@Autowired需要在初始化类时解决依赖关系。参数注入仅在需要时实例化bean。这将提高代码的有效性。 单一方法的原因是由Bean的生命周期引起的。默认情况下,bean是单例的,这意味着它们像静态对象一样共享。因此,如果多个对象将使用这个bean,那么使用autowired将更有效,因为使用它的可能性更高,因此您可以在启动时提供共享实例