Class AbstractConfiguredSecurityBuilder<O,B extends SecurityBuilder<O>>
java.lang.Object
org.springframework.security.config.annotation.AbstractSecurityBuilder<O>
org.springframework.security.config.annotation.AbstractConfiguredSecurityBuilder<O,B>
- Type Parameters:
O- The object that this builder returnsB- The type of this builder (that is returned by the base class)
- All Implemented Interfaces:
SecurityBuilder<O>
- Direct Known Subclasses:
AuthenticationManagerBuilder,HttpSecurity,WebSecurity
public abstract class AbstractConfiguredSecurityBuilder<O,B extends SecurityBuilder<O>>
extends AbstractSecurityBuilder<O>
A base SecurityBuilder that allows SecurityConfigurer to be applied to
it. This makes modifying the SecurityBuilder a strategy that can be customized
and broken up into a number of SecurityConfigurer objects that have more
specific goals than that of the SecurityBuilder.
For example, a SecurityBuilder may build an DelegatingFilterProxy, but
a SecurityConfigurer might populate the SecurityBuilder with the
filters necessary for session management, form based login, authorization, etc.
- See Also:
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAbstractConfiguredSecurityBuilder(ObjectPostProcessor<Object> objectPostProcessor) Creates a new instance with the providedObjectPostProcessor.protectedAbstractConfiguredSecurityBuilder(ObjectPostProcessor<Object> objectPostProcessor, boolean allowConfigurersOfSameType) Creates a new instance with the providedObjectPostProcessor. -
Method Summary
Modifier and TypeMethodDescription<C extends SecurityConfigurerAdapter<O,B>>
Capply(C configurer) Applies aSecurityConfigurerAdapterto thisSecurityBuilderand invokesSecurityConfigurerAdapter.setBuilder(SecurityBuilder).protected voidInvoked prior to invoking eachSecurityConfigurer.configure(SecurityBuilder)method.protected voidInvoked prior to invoking eachSecurityConfigurer.init(SecurityBuilder)method.protected final OdoBuild()Executes the build using theSecurityConfigurer's that have been applied using the following steps: InvokesbeforeInit()for any subclass to hook into InvokesSecurityConfigurer.init(SecurityBuilder)for anySecurityConfigurerthat was applied to this builder. InvokesbeforeConfigure()for any subclass to hook into InvokesperformBuild()which actually builds the Object<C extends SecurityConfigurer<O,B>>
CgetConfigurer(Class<C> clazz) Gets theSecurityConfigurerby its class name ornullif not found.<C extends SecurityConfigurer<O,B>>
List<C>getConfigurers(Class<C> clazz) Gets all theSecurityConfigurerinstances by its class name or an empty List if not found.Similar toAbstractSecurityBuilder.build()andAbstractSecurityBuilder.getObject()but checks the state to determine ifAbstractSecurityBuilder.build()needs to be called first.<C> CgetSharedObject(Class<C> sharedType) Gets a shared Object.Gets the shared objectsobjectPostProcessor(ObjectPostProcessor<Object> objectPostProcessor) Specifies theObjectPostProcessorto use.protected abstract OSubclasses must implement this method to build the object that is being returned.protected <P> PpostProcess(P object) Performs post processing of an object.<C extends SecurityConfigurer<O,B>>
CremoveConfigurer(Class<C> clazz) Removes and returns theSecurityConfigurerby its class name ornullif not found.<C extends SecurityConfigurer<O,B>>
List<C>removeConfigurers(Class<C> clazz) Removes all theSecurityConfigurerinstances by its class name or an empty List if not found.<C> voidsetSharedObject(Class<C> sharedType, C object) Sets an object that is shared by multipleSecurityConfigurer.Methods inherited from class org.springframework.security.config.annotation.AbstractSecurityBuilder
build, getObject
-
Constructor Details
-
AbstractConfiguredSecurityBuilder
Creates a new instance with the providedObjectPostProcessor. This post processor must support Object since there are many types of objects that may be post processed.- Parameters:
objectPostProcessor- theObjectPostProcessorto use
-
AbstractConfiguredSecurityBuilder
protected AbstractConfiguredSecurityBuilder(ObjectPostProcessor<Object> objectPostProcessor, boolean allowConfigurersOfSameType) Creates a new instance with the providedObjectPostProcessor. This post processor must support Object since there are many types of objects that may be post processed.- Parameters:
objectPostProcessor- theObjectPostProcessorto useallowConfigurersOfSameType- if true, will not override otherSecurityConfigurer's when performing apply
-
-
Method Details
-
getOrBuild
Similar toAbstractSecurityBuilder.build()andAbstractSecurityBuilder.getObject()but checks the state to determine ifAbstractSecurityBuilder.build()needs to be called first.- Returns:
- the result of
AbstractSecurityBuilder.build()orAbstractSecurityBuilder.getObject(). If an error occurs while building, returns null.
-
apply
Applies aSecurityConfigurerAdapterto thisSecurityBuilderand invokesSecurityConfigurerAdapter.setBuilder(SecurityBuilder).- Parameters:
configurer-- Returns:
- the
SecurityConfigurerAdapterfor further customizations - Throws:
Exception
-
apply
Applies aSecurityConfigurerto thisSecurityBuilderoverriding anySecurityConfigurerof the exact same class. Note that object hierarchies are not considered.- Parameters:
configurer-- Returns:
- the
SecurityConfigurerAdapterfor further customizations - Throws:
Exception
-
getConfigurers
Gets all theSecurityConfigurerinstances by its class name or an empty List if not found. Note that object hierarchies are not considered.- Parameters:
clazz- theSecurityConfigurerclass to look for- Returns:
- a list of
SecurityConfigurers for further customization
-
removeConfigurers
Removes all theSecurityConfigurerinstances by its class name or an empty List if not found. Note that object hierarchies are not considered.- Parameters:
clazz- theSecurityConfigurerclass to look for- Returns:
- a list of
SecurityConfigurers for further customization
-
getConfigurer
Gets theSecurityConfigurerby its class name ornullif not found. Note that object hierarchies are not considered.- Parameters:
clazz-- Returns:
- the
SecurityConfigurerfor further customizations
-
removeConfigurer
Removes and returns theSecurityConfigurerby its class name ornullif not found. Note that object hierarchies are not considered.- Parameters:
clazz-- Returns:
-
objectPostProcessor
Specifies theObjectPostProcessorto use.- Parameters:
objectPostProcessor- theObjectPostProcessorto use. Cannot be null- Returns:
- the
SecurityBuilderfor further customizations
-
postProcess
protected <P> P postProcess(P object) Performs post processing of an object. The default is to delegate to theObjectPostProcessor.- Parameters:
object- the Object to post process- Returns:
- the possibly modified Object to use
-
doBuild
Executes the build using theSecurityConfigurer's that have been applied using the following steps:- Invokes
beforeInit()for any subclass to hook into - Invokes
SecurityConfigurer.init(SecurityBuilder)for anySecurityConfigurerthat was applied to this builder. - Invokes
beforeConfigure()for any subclass to hook into - Invokes
performBuild()which actually builds the Object
- Specified by:
doBuildin classAbstractSecurityBuilder<O>- Returns:
- the object that should be returned by
AbstractSecurityBuilder.build(). - Throws:
Exception- if an error occurs
- Invokes
-
beforeInit
Invoked prior to invoking eachSecurityConfigurer.init(SecurityBuilder)method. Subclasses may override this method to hook into the lifecycle without using aSecurityConfigurer.- Throws:
Exception
-
beforeConfigure
Invoked prior to invoking eachSecurityConfigurer.configure(SecurityBuilder)method. Subclasses may override this method to hook into the lifecycle without using aSecurityConfigurer.- Throws:
Exception
-
performBuild
Subclasses must implement this method to build the object that is being returned.- Returns:
- the Object to be buit or null if the implementation allows it
- Throws:
Exception
-