@ConditionalOnClass等注解使用

这段时间在看Spring Security源码的时候,在UserDetailsServiceAutoConfiguration这个类上有这么几个注解

@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(AuthenticationManager.class)
@ConditionalOnBean(ObjectPostProcessor.class)
@ConditionalOnMissingBean(
		value = {
    
     AuthenticationManager.class, AuthenticationProvider.class, UserDetailsService.class },
		type = {
    
     "org.springframework.security.oauth2.jwt.JwtDecoder",
				"org.springframework.security.oauth2.server.resource.introspection.OpaqueTokenIntrospector" })
public class UserDetailsServiceAutoConfiguration {
    
    }

这样的类还有很多如下:

ConditionalOnBean
ConditionalOnClass
ConditionalOnCloudPlatform
ConditionalOnExpression
ConditionalOnJava
ConditionalOnJndi
ConditionalOnMissingBean
ConditionalOnMissingClass
ConditionalOnNotWebApplication
ConditionalOnProperty
ConditionalOnResource
ConditionalOnSingleCandidate
ConditionalOnWarDeployment
ConditionalOnWebApplication

这里我只列举出部分:

@ConditionalOnBean(仅仅在当前上下文中存在某个对象时,才会实例化一个Bean@ConditionalOnClass(某个class位于类路径上,才会实例化一个Bean@ConditionalOnExpression(当表达式为true的时候,才会实例化一个Bean@ConditionalOnMissingBean(仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean@ConditionalOnMissingClass(某个class类路径上不存在的时候,才会实例化一个Bean@ConditionalOnNotWebApplication(不是web应用)

猜你喜欢

转载自blog.csdn.net/qq_16733389/article/details/126749092