浅谈Spring装配Bean之组件扫描和自动装配
Spring装配Bean之组件扫描和自动装配 Spring框架提供了两种方式来实现自动化装配:组件扫描和自动装配。组件扫描是指Spring自动发现应用上下文中所创建的bean,而自动装配是指Spring自动满足bean之间的依赖。 组件扫描 组件扫描是Spring框架的一种功能,可以自动发现应用上下文中所创建的bean。组件扫描可以通过Java或XML配置启用。在Java配置中,可以使用@ComponentScan注解来启用组件扫描。例如: ```java @Configuration @ComponentScan public class CDPlayerConfig { } ``` 在上面的代码中,CDPlayerConfig类使用了@ComponentScan注解,这将启用组件扫描。Spring将会扫描与配置类相同的包,查找所有带有@Component注解的类,并将其创建为bean。 在XML配置中,可以使用<context:component-scan>元素来启用组件扫描。例如: ```xml <?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"> <context:component-scan base-package="soundsystem" /> </beans> ``` 在上面的代码中,<context:component-scan>元素将启用组件扫描,并将扫描soundsystem包及其子包,查找所有带有@Component注解的类,并将其创建为bean。 自动装配 自动装配是指Spring自动满足bean之间的依赖。例如,在音响系统中,CDPlayer类需要依赖CompactDisc类。可以使用@Autowired注解来实现自动装配。例如: ```java public class CDPlayer { @Autowired private CompactDisc compactDisc; public void play() { compactDisc.play(); } } ``` 在上面的代码中,CDPlayer类使用了@Autowired注解来注入CompactDisc类。Spring将会自动将CompactDisc实例注入CDPlayer类中。 案例 以下是一个完整的案例,演示了组件扫描和自动装配的使用: 创建CompactDisc接口: ```java public interface CompactDisc { void play(); } ``` 然后,创建SgtPeppers类,实现CompactDisc接口: ```java @Component public class SgtPeppers implements CompactDisc { private String title = "Sgt. Pepper's Lonely Hearts Club Band"; private String artist = "The Beatles"; public void play() { System.out.println("Playing " + title + " by " + artist); } } ``` 接下来,创建CDPlayer类,使用@Autowired注解来实现自动装配: ```java public class CDPlayer { @Autowired private CompactDisc compactDisc; public void play() { compactDisc.play(); } } ``` 创建CDPlayerConfig类,使用@ComponentScan注解来启用组件扫描: ```java @Configuration @ComponentScan public class CDPlayerConfig { } ``` 当我们运行这个例子时,Spring将会自动发现SgtPeppers类,并将其创建为bean。然后,CDPlayer类将会自动注入CompactDisc实例,并使用它来播放音乐。
- 粉丝: 6
- 资源: 914
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 两相步进电机FOC矢量控制Simulink仿真模型 1.采用针对两相步进电机的SVPWM控制算法,实现FOC矢量控制,DQ轴解耦控制~ 2.转速电流双闭环控制,电流环采用PI控制,转速环分别采用PI和
- VMware虚拟机USB驱动
- Halcon手眼标定简介(1)
- (175128050)c&c++课程设计-图书管理系统
- 视频美学多任务学习中PyTorch的多回归实现-含代码及解释
- 基于ssh员工管理系统
- 5G SRM815模组原理框图.jpg
- T型3电平逆变器,lcl滤波器滤波器参数计算,半导体损耗计算,逆变电感参数设计损耗计算 mathcad格式输出,方便修改 同时支持plecs损耗仿真,基于plecs的闭环仿真,电压外环,电流内环
- 毒舌(解锁版).apk
- 显示HEX、S19、Bin、VBF等其他汽车制造商特定的文件格式