1.注解开发定义bean
- 使用@Component定义bean
- @Controller:用于表现层bean定义
- @Service:用于业务层bean定义
- @Repository:用于数据层bean定义
- 核心配置文件中通过组件扫描加载bean
2.纯注解开发
- Java类代替Spring核心配置文件
<?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 http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.itheima"/> </beans>
@Configuration
@ComponentScan("com.itheima")
public class SpringConfig
- 相同颜色的就是注解所替代的部分。
- @Configuration注解用于设定当前类为配置类
- @ComponentScan注解用于设定扫描路径,此注解只能添加一次,多个数据使用数组格式
@ComponentScan({"com.itheima.service","com.itheima.dao"})
- 读取Spring核心配置文件初始化容器对象切换成读取Java配置类初始化容器对象
//加载配置文件初始化容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//加载配置类初始化容器
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
3.bean管理
- 使用@Scope定义bean作用范围
@Repository
@Scope("singleton"/"prototype")(单例/多例)
- 使用@PostConstruct、@PreDestroy定义bean生命周期
@PostConstruct
public void init(){
System.out.println(".....")
}
@PreDestroy
public void destroy(){
System.out.println(".....")
}
4.依赖注入
- @Autowired(按类型)
注意:
- 自动装配基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据,因此无需提供setter方法
- 自动装配建议使用无参构造方法创建对象(默认),如果不提供,请提供唯一构造方法
- 使用@Qualifier注解开启指定名称装配bean
- 注意:@Qualifier注解无法单独使用,必须配合@Autowired注解使用
- @value(“ ”)注解实现简单类型注入
- 加载properties文件
- 使用@propertySource注解加载properties文件
- 路径仅支持单一文件配置,多文件请使用数组格式配置,不支持*通配符
5.管理第三方bean
- @Bean配置第三方bean,创建方法获取第三方对象
- 使用独立的配置类管理第三方bean
- 将独立的配置类加入核心配置
- 导入式:使用@Import注解手动加入配置类到核心配置,此注解只能添加一次,多个数据请用数组格式。
- 扫描式(不推荐,隐藏性太强)
- 第三方bean依赖注入
- 引用类型:方法形参
- 简单类型:成员变量