Class ControllerAdviceBean
- java.lang.Object
- org.springframework.web.method.ControllerAdviceBean
- All Implemented Interfaces:
Ordered
public class ControllerAdviceBean extends Object implements Ordered
Encapsulates information about an@ControllerAdviceSpring-managed bean without necessarily requiring it to be instantiated.The
findAnnotatedBeans(ApplicationContext)method can be used to discover such beans. However, aControllerAdviceBeanmay be created from any object, including ones without an@ControllerAdviceannotation.- Since:
- 3.2
- Author:
- Rossen Stoyanchev, Brian Clozel, Juergen Hoeller, Sam Brannen
Field Summary
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
Constructor Summary
Constructors Constructor Description ControllerAdviceBean(Object bean)Create aControllerAdviceBeanusing the given bean instance.ControllerAdviceBean(String beanName, BeanFactory beanFactory)Create aControllerAdviceBeanusing the given bean name andBeanFactory.ControllerAdviceBean(String beanName, BeanFactory beanFactory, ControllerAdvice controllerAdvice)Create aControllerAdviceBeanusing the given bean name,BeanFactory, and@ControllerAdviceannotation.
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanequals(Object other)static List<ControllerAdviceBean>findAnnotatedBeans(ApplicationContext context)Find beans annotated with@ControllerAdvicein the givenApplicationContextand wrap them asControllerAdviceBeaninstances.Class<?>getBeanType()Return the type of the contained bean.intgetOrder()Get the order value for the contained bean.inthashCode()booleanisApplicableToBeanType(Class<?> beanType)Check whether the given bean type should be advised by thisControllerAdviceBean.ObjectresolveBean()Get the bean instance for thisControllerAdviceBean, if necessary resolving the bean name through theBeanFactory.StringtoString()
Constructor Detail
ControllerAdviceBean
public ControllerAdviceBean(Object bean)
Create aControllerAdviceBeanusing the given bean instance.- Parameters:
bean- the bean instance
ControllerAdviceBean
public ControllerAdviceBean(String beanName, BeanFactory beanFactory)
Create aControllerAdviceBeanusing the given bean name andBeanFactory.- Parameters:
beanName- the name of the beanbeanFactory- aBeanFactoryto retrieve the bean type initially and later to resolve the actual bean
ControllerAdviceBean
public ControllerAdviceBean(String beanName, BeanFactory beanFactory, @Nullable ControllerAdvice controllerAdvice)
Create aControllerAdviceBeanusing the given bean name,BeanFactory, and@ControllerAdviceannotation.- Parameters:
beanName- the name of the beanbeanFactory- aBeanFactoryto retrieve the bean type initially and later to resolve the actual beancontrollerAdvice- the@ControllerAdviceannotation for the bean, ornullif not yet retrieved- Since:
- 5.2
Method Detail
getOrder
public int getOrder()
Get the order value for the contained bean.As of Spring Framework 5.2, the order value is lazily retrieved using the following algorithm and cached. Note, however, that a
@ControllerAdvicebean that is configured as a scoped bean — for example, as a request-scoped or session-scoped bean — will not be eagerly resolved. Consequently,Orderedis not honored for scoped@ControllerAdvicebeans.- If the resolved bean implements
Ordered, use the value returned byOrdered.getOrder(). - If the bean type is known, use the value returned by
OrderUtils.getOrder(Class, int)withOrdered.LOWEST_PRECEDENCEused as the default order value. - Otherwise use
Ordered.LOWEST_PRECEDENCEas the default, fallback order value.
- Specified by:
getOrderin interfaceOrdered- Returns:
- the order value
- See Also:
resolveBean()
- If the resolved bean implements
getBeanType
@Nullable public Class<?> getBeanType()
Return the type of the contained bean.If the bean type is a CGLIB-generated class, the original user-defined class is returned.
resolveBean
public Object resolveBean()
Get the bean instance for thisControllerAdviceBean, if necessary resolving the bean name through theBeanFactory.As of Spring Framework 5.2, once the bean instance has been resolved it will be cached if it is a singleton, thereby avoiding repeated lookups in the
BeanFactory.
isApplicableToBeanType
public boolean isApplicableToBeanType(@Nullable Class<?> beanType)
Check whether the given bean type should be advised by thisControllerAdviceBean.- Parameters:
beanType- the type of the bean to check- Since:
- 4.0
- See Also:
ControllerAdvice
findAnnotatedBeans
public static List<ControllerAdviceBean> findAnnotatedBeans(ApplicationContext context)
Find beans annotated with@ControllerAdvicein the givenApplicationContextand wrap them asControllerAdviceBeaninstances.As of Spring Framework 5.2, the
ControllerAdviceBeaninstances in the returned list are sorted usingOrderComparator.sort(List).- See Also:
getOrder(),OrderComparator,Ordered