Spring中配置方式
2018-10-31·Spring, Java Web, IoC, DI, AOP
Spring 常用注解
| 注解 | 用途 | | --- | --- | | @Component | 标注普通的 Spring Bean | | @Repository | 标注 DAO 组件 | | @Service | 标注业务逻辑组件 | | @Controller | 标注控制器组件 | | @Autowired | 自动注入(属性、构造器、方法) |
Spring 核心技术
依赖注入(DI)
控制反转(IoC)的具体实现。注入方式:
- 构造器注入:依赖更强,通过构造函数传参
- Setter 注入:解耦性更高
面向切面编程(AOP)
将横切关注点(日志、事务、安全、缓存)从业务逻辑中分离。
配置方式
XML 方式
<bean id="helloWorld" class="com.example.HelloWorld"
init-method="init" destroy-method="destroy">
<property name="message" value="Hello World!"/>
</bean>
注解方式
- @Required:应用于 setter 方法
- @Autowired:应用于 setter、构造器、属性
- @Qualifier:指定确切的 bean(配合 @Autowired)
Java Config 方式
@Configuration
public class AppConfig {
@Bean(initMethod = "init", destroyMethod = "destroy")
public HelloWorld helloWorld() {
return new HelloWorld();
}
}
Bean 作用域
| 作用域 | 说明 | | --- | --- | | singleton | 单例(默认),每个容器一个实例 | | prototype | 原型,每次请求创建新实例 | | request | HTTP 请求级别 | | session | HTTP 会话级别 |
Bean 生命周期
- 初始化:实现 InitializingBean 的 afterPropertiesSet() 或配置 init-method
- 使用:Bean 可用
- 销毁:实现 DisposableBean 的 destroy() 或配置 destroy-method
BeanPostProcessor
后置处理器,可在 Bean 初始化前后执行自定义逻辑:
public class InitHelloWorld implements BeanPostProcessor {
public Object postProcessBeforeInitialization(Object bean, String beanName) {
// 初始化前处理
return bean;
}
public Object postProcessAfterInitialization(Object bean, String beanName) {
// 初始化后处理
return bean;
}
}
#Spring#Java Web#IoC#DI#AOP