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

posted @ 2020-12-18 17:16  adam宋  阅读(715)  评论(0)    收藏  举报