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 业务逻辑。

最新文章

  1. 从零开始山寨Caffe&#183;玖:BlobFlow
  2. Java中9种IO的读取方式
  3. JLINK通过JFLASH烧写bin文件报错处理方法
  4. 数据库防火墙如何防范SQL注入行为
  5. Android Material Design Ripple Effect在Android5.0(SDK=21)以下Android版本崩溃问题解决
  6. OnePlus One(一加1)刷机Kali Nethunter完整教程
  7. 马士兵SVN.
  8. Hystrix-request cache(请求缓存)
  9. Node.js:上传文件,服务端如何获取文件上传进度
  10. ACE入门——ACE构建
  11. FFMPEG结构体分析:AVIOContext
  12. Oracle数据库表分区
  13. spring boot2.0(一 ) 基础环境搭建
  14. 正则表达式判断QQ号格式是否正确
  15. ES - Index Templates 全局index模板
  16. Convert Adjacency matrix into edgelist
  17. [转]每天一个linux命令(44):top命令
  18. linux用户管理 用户和用户组信息
  19. Java 中的锁
  20. 【Leetcode】338. Bit位计数

热门文章

  1. React组件渲染触发的条件-归纳总结
  2. 新开一个系列,c++刷题集
  3. Vue31 消息订阅和发布
  4. vuluhub_jangow-01-1.0.1
  5. Windows下x86和x64平台的Inline Hook介绍
  6. 学习Java Day11
  7. Visual Studio 集成了.NET 升级助手插件
  8. G - 逆序对的数量
  9. java基础(非常简单)
  10. 大规模 IoT 边缘容器集群管理的几种架构-2-HashiCorp 解决方案 Nomad