1.9 基于注解的容器配置 #
1.9.1 @Required #
1.9.2 使用@Autowired
#
1.9.3 使用@Primary
微调基于注解的自动装配
#
1.9.4 使用限定符微调基于注解的自动装配 #
@Autowired
=== 使用@PostConstruct
和@PreDestroy
dependencies { annotationProcessor "org.springframework:spring-context-indexer:{spring-version}" }
== 使用JSR 330标准注解== 基于Java的容器配置本节介绍如何在Java代码中使用注解来配置Spring容器。它包括以下主题:
- [基本概念:
@Bean
和@Configuration
]- [使用
AnnotationConfigApplicationContext
实例化Spring容器]- [
@Bean
注解使用]- [
@Configuration
注解使用]- [组合基于Java的配置]
- [bean定义配置]
- [
PropertySource
抽象]- [使用
PropertySource
]- [语句中的占位符解析]
=== 基本概念:@Bean
和@Configuration
=== 使用AnnotationConfigApplicationContext
实例化Spring容器===@Bean
注解使用==== 接收生命周期回调===@Configuration
注解使用
=== 组合基于Java的配置
==== XML Bean定义概要文件
=== bean定义配置===PropertySource
抽象
最重要的是,
=== 使用@PropertySource
=== 语句中的占位符解析=== Web应用简单的ApplicationContext实例化==BeanFactory
BeanFactory
API为Spring的IoC功能提供了基础。它特定的约定主要用于与Spring的其他部分和相关第三方框架集成,其DefaultListableBeanFactory
实现是更高级别的GenericaApplicationContext
容器中的一个关键代表。
BeanFactory
和相关接口(如BeanFactoryAware
、InitializingBean
、DisposableBean
)是其他框架组件的重要集成点。通过不需要任何注解甚至反射,它们允许容器及其组件之间进行非常有效的交互。应用级的bean可以使用相同的回调接口,但通常更喜欢声明式地依赖项注入,要么通过注解,要么通过编程配置。请注意,核心
BeanFactory
API级别及其DefaultListableBeanFactory
实现不对要使用的配置格式或任何组件注释进行假设。所有这些风格都是通过扩展(如XmlBeanDefinitionReader
和AutowiredNotationBeanPostProcessor
)引入的,并作为核心元数据表示在共享BeanDefinition
对象上操作。这就是Spring容器如此灵活和可扩展的本质所在。===
BeanFactory
还是ApplicationContext
?本节讲解
BeanFactory
和ApplicationContext
容器级别之间的差异以及对引导的影响。除非有充分的理由,否则你应该使用
ApplicationContext
,将GenericaApplicationContext
及其子类AnnotationConfigApplicationContext
作为自定义引导的常见实现。这些是Spring核心容器的主要切入点,用于所有常见目的:加载配置文件、触发类路径扫描、以编程方式注册bean定义和注解类,以及(从5.0开始)注册函数bean定义。
= 资源== 应用上下文与资源路径
=== 使用AspectJ向Spring注入依赖域对象
Ant风格
===ConversionService
接口
除了标准的关系运算符,
==== 组合切入点表达式
== 代理机制
=== 理解AOP代理
=== 基础== XML Schemas