介绍

@Enablexxx之类注解在springboot中非常常见,而实现这个自动装配功能有两种方式。

  1. 注解的方式
  2. 接口的方式

注解的方式

1、创建HelloWorldConfig配置类,来验证自动装配是否生效

public class HelloWorldConfig {@Beanpublic String beanName(){return "spring-boot-2.0";}
}

2、创建EnableHelloWorld自定义注解,代码如下:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
@Import(value = {HelloWorldConfig.class}) // 注解的方式来实现
public @interface EnableHelloWorld {String value() default "";
}

3、编写测试类来进行测试

@EnableHelloWorld
public class InterfaceApplication {public static void main(String[] args) {ConfigurableApplicationContext applicationContext=new SpringApplicationBuilder(InterfaceApplication.class).web(WebApplicationType.NONE).run(args);// 验证HelloWorldConfig是否注入成功HelloWorldConfig helloWorldConfig =applicationContext.getBean(HelloWorldConfig.class);System.out.println("HelloWorldConfig:"+ helloWorldConfig);// 进行查找对应的beanString beanName = applicationContext.getBean("beanName", String.class);System.out.println("bean:"+beanName);// 关闭上下文applicationContext.close();}
}

4、输出结果

HelloWorldConfig:com.bulingfeng.springboot.config.HelloWorldConfig@19ae6bb
bean:spring-boot-2.0

根据以上的结果,我们发现HelloWorldConfig类已经注入到spring容器中,并且名为beanName的对象也注入到容器中。

接口的方式

1、复用注解方式中的HelloWorldConfig类内容

2、创建HelloWorldSelector类,并实现ImportSelector接口。

public class HelloWorldSelector implements ImportSelector {@Overridepublic String[] selectImports(AnnotationMetadata importingClassMetadata) {// 数组中的内容为你想要注入到容器中的beanreturn new String[]{HelloWorldConfig.class.getName()};}
}

3、编写EnableHelloWorld注解

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
@Import(value = {HelloWorldSelector.class}) // 接口的方式实现
public @interface EnableHelloWorld {String value() default "";
}

4、编写代码进行验证,复用注解方式的测试代码即可。

总结

  1. 使用注解的方式和接口的方式都能把对应的类注入到spring容器当中。
  2. 接口的方式更加灵活,可以根据逻辑判断把那些bean注入到spring容器当中。

自动装配之@Enablexxx相关推荐

  1. 原理解析_SpringBoot自动装配原理解析

    自动装配是Spring Boot的核心部分,也是Spring Boot功能的基础,正是由于自动装配,才将我们从Bean的繁复配置中解脱出来.那么Spring Boot中的自动装配指的是什么?我们继 续 ...

  2. SpringBoot 自动装配原理解析

    自动装配是 Spring Boot 的核心部分,也是 Spring Boot 功能的基础,正是由于自动装配,才 将我们从 Bean 的繁复配置中解脱出来.那么 Spring Boot 中的自动装配指的 ...

  3. spring Bean自动装配

    spring Bean自动装配 自动装配是使用spring满足bean依赖的一种方式. spring会在应用上下文中为某个bean寻找其依赖的bean. spring自动装配需要从两个角度来实现,或者 ...

  4. 详解Spring中Bean的自动装配~

    目录 1. 环境搭建 2. byName.byType 3. 使用注解实现自动装配 @Autowired @Resource 小结 自动装配是Spring满足bean依赖的一种方式 Spring会在上 ...

  5. 【spring】自动装配

    山顶洞人方法:aotowire UserDao.java 代码实现: public class UserDao {private DBUtil dbu;public DBUtil getDbu() { ...

  6. springboot自动装配原理笔记一

    思维导图 太长放不了截图,就看大纲吧. 从启动类的@SpringBootApplication注解开始,探究其自动装配的原理 结论 整合javaEE,解决方案和自动装配的东西都在spring-boot ...

  7. java 装配_java – 无法自动装配方法

    我收到了这个错误 org.springframework.beans.factory.BeanCreationException: Could not autowire method: 这是我的spr ...

  8. Autofac 组件、服务、自动装配 《第二篇》

    一.组件 创建出来的对象需要从组件中来获取,组件的创建有如下4种(延续第一篇的Demo,仅仅变动所贴出的代码)方式: 1.类型创建RegisterType AutoFac能够通过反射检查一个类型,选择 ...

  9. Spring 自动装配及其注解

    一.属性自动装配 首先,准备三个类,分别是User,Cat,Dog.其中User属性拥有Cat和Dog对象. 1 package com.hdu.autowire; 2 3 public class ...

最新文章

  1. 浪潮小机装oracle数据库,浪潮ERP系统oracle双机热备安装文档 | 浪潮888博客
  2. CCF CSP 201403-1 相反数(C++)
  3. Div+CSS布局入门教程(四) 页面顶部制作之二
  4. neostrack服务器无响应,捷安特GPS码表NeosTrack试用评测
  5. linux nginx 配置优化,nginx 配置优化指令
  6. 为什么博客园安卓端无法登陆,真服了
  7. 2020蓝桥杯校内模拟赛1-5(详细版本,看完就会)
  8. 基于Matlab使用激光雷达从点云到跟踪列表跟踪车辆仿真(附源码)
  9. JPG/PNG转真SVG,非base64
  10. android adb shell chmod,adb shell 修改用户权限 删除App
  11. 如何理解实时频谱分析仪的几个“带宽”参数(1)——实时带宽(RTBW)
  12. 基于麒麟座继续串口--DMA可以顺手开启-它是ADD不影响
  13. 如何去掉CSDN中图片水印
  14. scanf函数、冒泡排序和不定长度数组的使用 —— malloc
  15. 全面解读量化中性策略
  16. 第一章 回归模型分析
  17. TMS320F280049C 学习笔记20 可配置逻辑块 (CLB) 例程
  18. java po vo bo是什么以及_JAVA中(PO,VO,TO,BO,DAO,POJO)分别是指什么
  19. 动态太极图html代码,用一个div加一段css代码画一个太极图
  20. 基于PHP+MySQL实现(Web)英语学习与测试平台【100010284】

热门文章

  1. 西安10万条业主信息被贩卖
  2. php smtp服务器553,Qmail电子邮件服务器简单架设[一]
  3. 边缘设备、系统及计算杂谈(17)——Ansible学习
  4. 边缘设备、系统及计算杂谈(13)——k8s学习之三
  5. C/C++ 控制台高级操作(非常详细)
  6. 高通Camera 软件工程师的成长之路
  7. import和form ... import
  8. 跳跳虎回家(国庆10.1模拟赛T2)
  9. 机器学习实战---PM2.5预测
  10. 如何高效做好今日舆情信息监测与搜集的方法