@Bean注解方法的参数

问题描述 投票:0回答:1

在以下代码中,MvcRequestMatcher.Builder bean 已注册到应用程序上下文。

@Bean
MvcRequestMatcher.Builder mvc(HandlerMappingIntrospector introspector) {                        
    return new MvcRequestMatcher.Builder(introspector);
}

该方法采用一个内省器参数,该参数本身就是自动装配的 bean。我的问题是,既然它不是构造函数,也不是setter,也没有@Autowired注解,那么它是什么样的注入?

spring spring-boot spring-mvc spring-security
1个回答
0
投票

这称为方法注入。你可以在@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);
}
© www.soinside.com 2019 - 2024. All rights reserved.