For the latest stable version, please use Spring Framework 6.2.0! |
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:
|