自动装配之@Enablexxx
介绍
@Enablexxx之类注解在springboot中非常常见,而实现这个自动装配功能有两种方式。
- 注解的方式
- 接口的方式
注解的方式
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、编写代码进行验证,复用注解方式的测试代码即可。
总结
- 使用注解的方式和接口的方式都能把对应的类注入到spring容器当中。
- 接口的方式更加灵活,可以根据逻辑判断把那些bean注入到spring容器当中。
自动装配之@Enablexxx相关推荐
- 原理解析_SpringBoot自动装配原理解析
自动装配是Spring Boot的核心部分,也是Spring Boot功能的基础,正是由于自动装配,才将我们从Bean的繁复配置中解脱出来.那么Spring Boot中的自动装配指的是什么?我们继 续 ...
- SpringBoot 自动装配原理解析
自动装配是 Spring Boot 的核心部分,也是 Spring Boot 功能的基础,正是由于自动装配,才 将我们从 Bean 的繁复配置中解脱出来.那么 Spring Boot 中的自动装配指的 ...
- spring Bean自动装配
spring Bean自动装配 自动装配是使用spring满足bean依赖的一种方式. spring会在应用上下文中为某个bean寻找其依赖的bean. spring自动装配需要从两个角度来实现,或者 ...
- 详解Spring中Bean的自动装配~
目录 1. 环境搭建 2. byName.byType 3. 使用注解实现自动装配 @Autowired @Resource 小结 自动装配是Spring满足bean依赖的一种方式 Spring会在上 ...
- 【spring】自动装配
山顶洞人方法:aotowire UserDao.java 代码实现: public class UserDao {private DBUtil dbu;public DBUtil getDbu() { ...
- springboot自动装配原理笔记一
思维导图 太长放不了截图,就看大纲吧. 从启动类的@SpringBootApplication注解开始,探究其自动装配的原理 结论 整合javaEE,解决方案和自动装配的东西都在spring-boot ...
- java 装配_java – 无法自动装配方法
我收到了这个错误 org.springframework.beans.factory.BeanCreationException: Could not autowire method: 这是我的spr ...
- Autofac 组件、服务、自动装配 《第二篇》
一.组件 创建出来的对象需要从组件中来获取,组件的创建有如下4种(延续第一篇的Demo,仅仅变动所贴出的代码)方式: 1.类型创建RegisterType AutoFac能够通过反射检查一个类型,选择 ...
- Spring 自动装配及其注解
一.属性自动装配 首先,准备三个类,分别是User,Cat,Dog.其中User属性拥有Cat和Dog对象. 1 package com.hdu.autowire; 2 3 public class ...
最新文章
- 浪潮小机装oracle数据库,浪潮ERP系统oracle双机热备安装文档 | 浪潮888博客
- CCF CSP 201403-1 相反数(C++)
- Div+CSS布局入门教程(四) 页面顶部制作之二
- neostrack服务器无响应,捷安特GPS码表NeosTrack试用评测
- linux nginx 配置优化,nginx 配置优化指令
- 为什么博客园安卓端无法登陆,真服了
- 2020蓝桥杯校内模拟赛1-5(详细版本,看完就会)
- 基于Matlab使用激光雷达从点云到跟踪列表跟踪车辆仿真(附源码)
- JPG/PNG转真SVG,非base64
- android adb shell chmod,adb shell 修改用户权限 删除App
- 如何理解实时频谱分析仪的几个“带宽”参数(1)——实时带宽(RTBW)
- 基于麒麟座继续串口--DMA可以顺手开启-它是ADD不影响
- 如何去掉CSDN中图片水印
- scanf函数、冒泡排序和不定长度数组的使用 —— malloc
- 全面解读量化中性策略
- 第一章 回归模型分析
- TMS320F280049C 学习笔记20 可配置逻辑块 (CLB) 例程
- java po vo bo是什么以及_JAVA中(PO,VO,TO,BO,DAO,POJO)分别是指什么
- 动态太极图html代码,用一个div加一段css代码画一个太极图
- 基于PHP+MySQL实现(Web)英语学习与测试平台【100010284】
热门文章
- 西安10万条业主信息被贩卖
- php smtp服务器553,Qmail电子邮件服务器简单架设[一]
- 边缘设备、系统及计算杂谈(17)——Ansible学习
- 边缘设备、系统及计算杂谈(13)——k8s学习之三
- C/C++ 控制台高级操作(非常详细)
- 高通Camera 软件工程师的成长之路
- import和form ... import
- 跳跳虎回家(国庆10.1模拟赛T2)
- 机器学习实战---PM2.5预测
- 如何高效做好今日舆情信息监测与搜集的方法