在以下代码中,MvcRequestMatcher.Builder bean 已注册到应用程序上下文。
@Bean
MvcRequestMatcher.Builder mvc(HandlerMappingIntrospector introspector) {
return new MvcRequestMatcher.Builder(introspector);
}
该方法采用一个内省器参数,该参数本身就是自动装配的 bean。我的问题是,既然它不是构造函数,也不是setter,也没有@Autowired注解,那么它是什么样的注入?
这称为方法注入。你可以在@Configuration类中配置bean时使用它,它提供了更大的灵活性,并清楚地表明特定方法需要哪些依赖项。当并不总是需要依赖项并且只应在某些条件下注入依赖项时,您也可以使用它,如下所示:
@Bean
public MyBean myBean(@Autowired(required = false) OptionalDependency optionalDependency) {
if (optionalDependency != null) {
// Use the optional dependency
} else {
// Handle the absence of the optional dependency
}
return new MyBean(optionalDependency);
}