@EnableAutoConfiguration 这个注解的作用是:

从classpath中搜索所有META-INF/spring.factories配置文件然后,将其中org.springframework.boot.autoconfigure.EnableAutoConfiguration key对应的配置项加载到spring容器

下面介绍一下这个标签的用法,这个标签是 包含在 SpringBootApplication  这个注解中的。

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {

1.首先 我们定一个 Demo类。

package com.example.demo;

public class Demo {

    public String hello(){
return ("hello world");
}
}

2.定义一个配置类。

package com.example.demo;

import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnJava;
import org.springframework.boot.system.JavaVersion;
import org.springframework.context.annotation.Bean; //@ConditionalOnBean(name = "operaSinger1")
//@ConditionalOnJava(range = ConditionalOnJava.Range.EQUAL_OR_NEWER,value = JavaVersion.EIGHT)
public class DemoAutoConfigure1 { @Bean
private Demo demo(){
return new Demo();
}
}

这里我们产生一个Demo类的实例,并注入到容器中,一般这个类的名字使用AutoConfigure 结束,试验过其实也不一定。

3.配置到 spring.factories 文件中。

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.demo.DemoAutoConfigure1

4.在代码中使用Demo实例。

@RestController
public class DemoController { @Autowired
private Demo demo; @GetMapping("/demo")
public String demo(){
return demo.hello();
}
}

如果正常 这个实例是可用的。

我们也可以在这个配置类上增加一些条件注解比如:

@ConditionalOnJava(range = ConditionalOnJava.Range.EQUAL_OR_NEWER,value = JavaVersion.NINE)

比如比如使用java的版本,我当前使用的是java8 ,执行后抛出错误如下:

The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true) The following candidates were found but could not be injected:
- Bean method 'demo' in 'DemoAutoConfigure1' not loaded because @ConditionalOnJava (9 or newer) found 1.8

@EnableAutoConfiguration 标签使用的更多相关文章

  1. 【Spring Boot源码分析】@EnableAutoConfiguration注解(一)@AutoConfigurationImportSelector注解的处理

    Java及Spring Boot新手,首次尝试源码分析,欢迎指正! 一.概述 @EnableAutoConfiguration注解是Spring Boot中配置自动装载的总开关.本文将从@Enable ...

  2. a标签点击跳转失效--IE6、7的奇葩bug

    一般运用a标签包含img去实现点击图片跳转的功能,这是前端经常要用到的东西. 今天遇到个神奇的bug:如果在img上再包裹一层div,而且div设置了width和height,则图片区域点击时,无任何 ...

  3. IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法

    直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...

  4. 百度MIP页规范详解 —— canonical标签

    百度MIP的规范要求必须添加强制性标签canonical,不然MIP校验工具会报错: 强制性标签<link rel="/^(canonical)$/"> 缺失或错误 这 ...

  5. 【CSS进阶】伪元素的妙用--单标签之美

    最近在研读 <CSS SECRET>(CSS揭秘)这本大作,对 CSS 有了更深层次的理解,折腾了下面这个项目: CSS3奇思妙想 -- Demo (请用 Chrome 浏览器打开,非常值 ...

  6. TODO:Laravel 使用blade标签布局页面

    TODO:Laravel 使用blade标签布局页面 本文主要介绍Laravel的标签使用,统一布局页面.主要用到到标签有@yield,@ stack,@extends,@section,@stop, ...

  7. 最新 去掉 Chrome 新标签页的8个缩略图

    chrome的新标签页的8个缩略图实在让人不爽,网上找了一些去掉这个略缩图的方法,其中很多已经失效.不过其中一个插件虽然按照原来的方法已经不能用了,但是稍微变通一下仍然是可以用的(本方法于2017.1 ...

  8. css-父标签中的子标签默认位置

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  9. xpath提取多个标签下的text

    title: xpath提取多个标签下的text author: 青南 date: 2015-01-17 16:01:07 categories: [Python] tags: [xpath,Pyth ...

  10. 多个Img标签之间的间隙处理方法

    1.多个标签写在一行 <img src="/i/eg_tulip.jpg" alt="郁金香" height="100px"/> ...

随机推荐

  1. 工具 – VS Code Extensions

    前言 分享我用着的 Extensions. Angular Language Service 不用介绍,用 Angular 的必装. Better Comments 让注释有多点颜色 more col ...

  2. Angular 18+ 高级教程 – Component 组件 の Template Binding Syntax

    前言 这篇介绍一些基本的 Angular 模板语法. 参考 Docs – Understanding binding Render.Event Listening and DOM Manipulati ...

  3. Linux_动态库与静态库(其一)

    1.动态库和静态库的定义 动态库(.so):动态库是编译后不嵌入目标文件中的共享库,在程序运行的时候才去链接动态库的代码,可以被多个程序共享使用,通常以 .so 结尾. 静态库(.a):静态库是将一组 ...

  4. kubernetes拉取私有镜像仓库的镜像

    kubernetes拉取私有镜像仓库时需要使用镜像仓库的账号密码 方式: apiVersion: v1 kind: Pod metadata: name: private-reg spec: cont ...

  5. Spring 实现 3 种异步流式接口,干掉接口超时烦恼

    大家好,我是小富- 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable.WebAsyncTask 和 DeferredResult.CompletableFuture等均可实现 ...

  6. 云原生周刊:Argo CD v2.12 发布候选版本 | 2024.06.24

    开源项目推荐 kOps kOps - Kubernetes Operations,是一个用于创建.销毁.升级和维护生产级高可用 Kubernetes 集群的工具.它支持在 AWS.GCP.Digita ...

  7. Chirpy+Github

    相关网址 Chirpy 示例:网页上有官方教程,我写的肯定不全 Chirpy 示例仓库:这个就是包含官方教程的那个示例的仓库 Chirpy 模板仓库:直接 fork 这个仓库,快速搭建,没有多余的东西 ...

  8. Analysis I Chapter 2 - By Professor Terence Tao

    目录 2.1 The Peano Axioms 2.2 Addition - Exercises 2.2 - 2.3 Multiplication - Exercises 2.3 - Method o ...

  9. Machine Learning Week_7 Support Vector Machines

    目录 1 Large Margin Classification 1.1 Optimization Objective 1.1 Logistic Regresson 1.2 Cost 1.3 Supp ...

  10. SHA1withRSA签名Python版本

    from Crypto.PublicKey import RSA from Crypto.Signature import PKCS1_v1_5 from Crypto.Hash import SHA ...