spring 创建 bean 的 几种方式
Spring 创建 bean 有 多种方式: 自动创建,手动创建注入;
方式1: 使用 Spring XML 配置;
<bean id=''id class=''class / >
方式2: 使用 @Component, @Service, @Controler, @Repository 注解;
这几个 注解 都有 同样 的 功能,被注解的 类 将会 被 Spring 容器 创建 单例 对象。
@Component 侧重于 通用的Bean;
@Service 标识 该类 用于 业务逻辑
@Controler 标识 该类为 Spring MVC 控制器类。
@Repository 标识 该类 是一个 实体诶 。只有 属性 和 setter getter。
当用于Spring Boot 时,这些注解类 若不在根路径下 或 子路径下, 请 使用 @ComponentScan 扫描指定路径。
方式3: 使用 @Bean 注解, 这种方式 用在 Spring Boot 应用中。
@Cofiguration 标识 这个类 是 一个 Spring Boot 配置类, 其 将会 扫描 该类中 是否 存在 @Bean 的 注解 的方法。 有就创建一个 bean实例 放入容器中 名字默认就是方法名。
方法4: 使用注解@import,也会创建 对象并 注入容器中。
方式5: 使用 @ImportSelector 或者 ImportBeanDefinitionRegistar 接口, 配合 @Import 实现。
在使用 一些 Spring Boot 第三方 组件时,经常 会 看到 @Enablexxxxxxxx 来使用相关的服务。
方式6: 手动注入 Bean 容器,有些 场景下 需要代码动态注入, 以上方式都不适用。 这时就 需要 创建 手动注入。
通过 DefaultListableBeanFactory 注入。
这种方式 的应用场景 是 为 接口创建动态 代理 对象, 并 向 Spring 容器注册。
比如 Mybatis 中的 Mapper 接口 , Mapper 没有实现类, 启动时 创建 动态 代理对象, 将该对象 注册到 容器中, 使用时 只要 @Autowired 注入 即可使用, 调用接口方法 会被代理 拦截, 进而 调用 相关的 SqlSession 执行相关的 SQL 业务逻辑。
最新文章
- 从零开始山寨Caffe&#183;玖:BlobFlow
- Java中9种IO的读取方式
- JLINK通过JFLASH烧写bin文件报错处理方法
- 数据库防火墙如何防范SQL注入行为
- Android Material Design Ripple Effect在Android5.0(SDK=21)以下Android版本崩溃问题解决
- OnePlus One(一加1)刷机Kali Nethunter完整教程
- 马士兵SVN.
- Hystrix-request cache(请求缓存)
- Node.js:上传文件,服务端如何获取文件上传进度
- ACE入门——ACE构建
- FFMPEG结构体分析:AVIOContext
- Oracle数据库表分区
- spring boot2.0(一 ) 基础环境搭建
- 正则表达式判断QQ号格式是否正确
- ES - Index Templates 全局index模板
- Convert Adjacency matrix into edgelist
- [转]每天一个linux命令(44):top命令
- linux用户管理 用户和用户组信息
- Java 中的锁
- 【Leetcode】338. Bit位计数