1.自动装配组件@Autowired和@Resource
@Autowired

@Autowired 注解属于spring注解 默认为 @Autowired(required=true),
required为true表示注入bean的时候,该bean必须存在,否则就会注入失败报错。
为false表示如果有bean则注入,没有则跳过,不会报错。
自动装配类型:
默认为byType注入,当注入的bean有多个时。
可以使用@Qualifier指定需要注入的bean名称,也可以使用@Primary注解。
在默认只会采取其中一种的情况下, 使用@Primary 注解更好

@Resource

@Resource注解属于JDK中的注解
如果@Resource没有指定name属性,并且按照默认的名称仍然找不到依赖对象时,
它会回退到按类型装配。但是需要格外注意的是,一旦用name指定加载的组件名称,就只能按名称自动装配。

2.@ConfigurationProperties获取到配置文件数据
@ConfigurationProperties可以使用在类上面,也可以使用在方法上面。

使用在类上面
@Configuration
@ConfigurationProperties(prefix = "dw.user.admin")
@Data
public class UserConfig {
private String userName;
private String passWord;
private String url;
}
yml配置:
dw:
user:
admin:
userName: xxx
passWord: xxx
url: xxx
作用在方法上:
mysql数据源配置
@Bean(name = "source")
@ConfigurationProperties(prefix="db.source.sql")
public Source source(){
Source source = Source.create().build();
return Source;
}
yml配置:
db:
source:
sql:

3.@DependsOn(“xxx”)
表示一个bean实例化依赖另一个bean的实例化, 只有等另一个bean加载完成在加载这个bean。
@DependsOn可以用在类上面, 也可以用作方法上面

在类上面:标注在带有@Component注解的类上面。
@Component("userB")
@Data
public class UserB {
public UserB() {
System.out.println("加载UserB----------------------");
}
}
@Component("userA")
@Data
@DependsOn("userB")
public class UserA {
public UserA() {
System.out.println("加载UserA----------------------");
}
}
加载UserB----------------------
加载UserA----------------------
在方法上面:标注在带有@Bean 注解的方法上面。
@Data
public class Animal {
public Animal() {
System.out.println("动物+++++++++++++++++");
}
}
@Data
public class Dog {
public Dog() {
System.out.println("狗----------------");
}
}
@Configuration
public class AnimalConfig {
@Bean("AnimalA")
public Animal getAnimalA(){
return new Animal();
}
@Bean("Dog")
public Dog getAnimalB(){
return new Dog();
}
}
动物+++++++++++++++++
狗----------------
@Configuration
public class AnimalConfig {
@Bean("AnimalA")
@DependsOn("Dog")
public Animal getAnimalA(){
return new Animal();
}
@Bean("Dog")
public Dog getAnimalB(){
return new Dog();
}
}
狗----------------
动物+++++++++++++++++

4.@Import注解

参数value接收一个Class数组,将传入的类以全类名作为id加入IOC容器中

spring boot自动装配、@ConfigurationProperties、@DependsOn、@Import注解的更多相关文章

  1. Spring Boot 自动装配(二)

    目录 目录 前言 1.起源 2.Spring Boot 自动装配实现 2.1.@EnableAutoConfiguration 实现 2.1.1. 获取默认包扫描路径 2.1.2.获取自动装配的组件 ...

  2. Spring Boot自动装配

    前言 一些朋友问我怎么读源码,这篇文章结合我看源码时候一些思路给大家聊聊,我主要从这三个方向出发: 确定目标,这个目标要是一个具体,不要一上来我要看懂Spring,这是不可能的,目标要这么来定,比如看 ...

  3. Spring Boot自动装配原理源码分析

    1.环境准备 使用IDEA Spring Initializr快速创建一个Spring Boot项目 添加一个Controller类 @RestController public class Hell ...

  4. Spring Boot 自动装配流程

    Spring Boot 自动装配流程 本文以 mybatis-spring-boot-starter 为例简单分析 Spring Boot 的自动装配流程. Spring Boot 发现自动配置类 这 ...

  5. Spring Boot系列(二):Spring Boot自动装配原理解析

    一.Spring Boot整合第三方组件(Redis为例) 1.加依赖 <!--redis--> <dependency> <groupId>org.springf ...

  6. Spring Boot 自动装配原理

    Spring Boot 自动装配原理 Spring Boot 在启动之前还有一系列的准备工作,比如:推断 web 应用类型,设置初始化器,设置监听器,启动各种监听器,准备环境,创建 applicati ...

  7. Spring Boot 自动装配(一)

    目录 目录 前言 1.起源 2.Spring 模式注解 2.1.装配方式 2.2.派生性 3.Spring @Enable 模块驱动 3.1.Spring框架中@Enable实现方式 3.2.自定义@ ...

  8. 深度剖析Spring Boot自动装配机制实现原理

    在前面的分析中,Spring Framework一直在致力于解决一个问题,就是如何让bean的管理变得更简单,如何让开发者尽可能的少关注一些基础化的bean的配置,从而实现自动装配.所以,所谓的自动装 ...

  9. 从源码中理解Spring Boot自动装配原理

    个人博客:槿苏的知识铺 一.什么是自动装配 SpringBoot 定义了一套接口规范,这套规范规定:SpringBoot在启动时会扫描外部引用jar包中的META-INF/spring.factori ...

  10. spring boot 自动装配的原理

    参考: https://blog.csdn.net/Dongguabai/article/details/80865599.如有侵权,请联系本人删除! 入口: import org.springfra ...

随机推荐

  1. 剑指offer----1.二维数组查找

    题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...

  2. cerebro简单使用 , ES界面化工具 , 网页查看 , 操作索引

    下载安装 下载地址 https://github.com/lmenezes/cerebro/releases 解压即用 , 目录中不能有空格和中文 需要jdk11及以上(实际我本机只有jdk8也能用) ...

  3. 自动备份一个TXT文件里面的SVN库

    之前的项目都是使用SVN进行代码管理,万一SVN挂了,,,项目全部爆炸,,,所以定时备份还是有必要的,,,虽然现在都不用SVN了,,,记录一下自己的备份方法 --------------------- ...

  4. kubeadm部署单master Kuberntes集群

    本文参考kubernetes docs 使用kubeadm创建single master的Kuberntes集群 虚机两台Centos75 Kubernetes Yum Repo采用国内阿里源 版本 ...

  5. 《Unix/Linux系统编程》第八周学习笔记

    <Unix/Linux系统编程>第八周学习笔记 时钟服务函数 gettimeodfay() 获取系统时间 settimeofday() 设置系统时间 time() 以秒为单位返回当前时间 ...

  6. 实验五:开源控制器实践——POX

    基本要求 1.tcpdump 验证Hub模块 h1 ping h2的tcpdump抓包结果截图 h1 ping h3的tcpdump抓包结果截图 2.tcpdump 验证Switch模块 h1 pin ...

  7. 关于JDBC的学习

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...

  8. nios verify failed 问题解决。

    nios 调试时碰到上图所示问题.根据下载地址可以判断下载flash.sdram都成功,这里说明电路设计和焊接都没有问题. 但是在flash地址verify failed between adress ...

  9. redis学习(一)常用命令

    clear 清屏 info 获取当前redis的版本等信息 keys pattern 查找所有符合给定模式( pattern)的 key keys * 查找所有的key type key 查看某个ke ...

  10. React16下报错引发整个页面crash的解决方法

    如果报错没有没有被catch,将会引起整个React组件树的unmounting 解决方法:在生命周期中增加componentDidCatch https://reactjs.org/blog/201 ...