|
For the latest stable version, please use Spring Framework 6.2.12! |
Annotation-based Container Configuration
An alternative to XML setup is provided by annotation-based configuration, which relies
on bytecode metadata for wiring up components instead of XML declarations. Instead of
using XML to describe a bean wiring, the developer moves the configuration into the
component class itself by using annotations on the relevant class, method, or field
declaration. As mentioned in Example: The AutowiredAnnotationBeanPostProcessor, using a
BeanPostProcessor in conjunction with annotations is a common means of extending the
Spring IoC container. For example, the @Autowired
annotation provides the same capabilities as described in Autowiring Collaborators but
with more fine-grained control and wider applicability. In addition, Spring provides
support for JSR-250 annotations, such as @PostConstruct and @PreDestroy, as well as
support for JSR-330 (Dependency Injection for Java) annotations contained in the
jakarta.inject package such as @Inject and @Named. Details about those annotations
can be found in the relevant section.
|
Annotation injection is performed before XML injection. Thus, the XML configuration overrides the annotations for properties wired through both approaches. |
As always, you can register the post-processors as individual bean definitions, but they
can also be implicitly registered by including the following tag in an XML-based Spring
configuration (notice the inclusion of the context namespace):
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
</beans>
The <context:annotation-config/> element implicitly registers the following post-processors:
|
|