参考:《深入浅出SpringBoot 2.x》

全注解的SpringBoot

用户可以通过注解将所需要的对象,存放到IOC容器中,然后SpringBoot可以根据这些需要使用的情况,自动注入到需要的Bean中。

Component 组件

如果你需要重复的使用一个类,而这个类又不属于业务,只是数据处理,那么就可以使用Component注解标记该类,然后使用ComponentScan即可将该类实例化到容器中。

ComponentScan就是一个扫描器,在SpringApplication中也带着一个这样的扫描器。有这种包含的扫描,那么又引出了ComponentScan注解中引出了excludeFilters属性,可以指定哪些类不被扫描器扫描到。

可以看下SpringBootApplication注解中,也使用了ComponentScan的注解,也就是SpringBoot应用的启动类同级的包,或者是类,默认会被扫描器扫描到。

在Configuration的类中,可以定义一些带@Bean注解的方法,这些方法的返回值,被加入到IOC容器中,如果不指定Bean的Name属性,那么将会使用该方法的方法名作为对象的名称存入到IOC容器中。

依赖注入

依赖注入,用的是多态来体现,一个对象,多种形态,然后用@Autowired给对象注入依赖,之后可以通过@Primary设置注入时候的容器中的实例的优先级和@Quelifier直接指定bean的名称。

这里我感觉还是很混乱,容器中的实例,一直没有个名称,一直说是用Bean装配到IOC容器中,这里其实已经理论混乱了。

Bean实例存放在容器之中,但Bean对应的实例有多种形态,也称之为Bean的依赖,Bean有多种依赖,所以需要进行选择,不然就会报错。所以注入的Bean的名称都是唯一的。

读取属性文件

@Value("${...}") 这样的占位符可以读取application.yml的的配置

还有一种读取的方法是用类来读取,

需要在类上加两个注解,Component,ConfgurationProperties("前缀名")

然后就可以读取指定的配置

例如: file.path = "/home/files"

@Component
@ConfigurationProperties("file")
@Data
public class Path(){
private String path;// = file.path
}

Bean的作用域

Bean可以直接设定其类型,不用的作用域会产生不同的Bean,或者相同的作用域,每次都会刷新。

所以可以使用@Scope注解给每个SpringBoot的组件指定在WEB中访问的范围。

@Profile

加载多套配置文件的注解。

一个很常见的例子,多个测试环境中有不同的数据库,在这里已经得到了答案。

可以通过Profile直接给指定的方法来指定。

本来我以为是用来同时加载不同的配置文件

书上讲的不是特别好,就是spring.profiles.active也可以指定其加载的文件

spring:
profiles:
active: dev

SpringEl

在@Value注解中使用El表达式,可以写一些简单的代码运算,或者代码的调用


@Value("${file.path}")
private String path; @Value("#{1+1}")
int a; @Value("#{T(System).currentTimeMillis()}")
private long time;
@Test
public void test(){
System.out.println(a);
System.out.println(time);
}

重学SpringBoot. step1 全注解的SpringBoot的更多相关文章

  1. 重学 Java 设计模式:实战外观模式「基于SpringBoot开发门面模式中间件,统一控制接口白名单场景」

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你感受到的容易,一定有人为你承担不容易 这句话更像是描述生活的,许许多多的磕磕绊绊总 ...

  2. 1-3. SpringBoot基础,Java配置(全注解配置)取代xml配置

    最近突发奇想,整合一下以前一些学习笔记,分享自己这几年爬过的坑,逐步更新文章,谢谢大家的关注和支持. 这节讲一下SpringBoot的学习必须的一些基础,Java配置.其实在Spring2.0时代就已 ...

  3. SpringBoot | 1.2 全注解下的Spring IoC

    前言 在学习SpringBoot之前,有几个Spring的重要的基础概念需要提一下,SpringBoot对这些基础概念做进一步的封装,完成自动配置.首先就是Spring的控制反转IOC,由于Sprin ...

  4. SpringBoot使用Mybatis注解进行一对多和多对多查询(2)

    SpringBoot使用Mybatis注解进行一对多和多对多查询 GitHub的完整示例项目地址kingboy-springboot-data 一.模拟的业务查询 系统中的用户user都有唯一对应的地 ...

  5. springboot系列总结(二)---springboot的常用注解

    上一篇文章我们简单讲了一下@SpringBootApplication这个注解,申明让spring boot自动给程序进行必要的配置,他是一个组合注解,包含了@ComponentScan.@Confi ...

  6. springboot的@ConditionalOnClass注解

    大家好,我是"良工说技术". 今天给大家带来的是springboot中的@ConditionalOnClass注解的用法.上次的@ConditionalOnBean注解还记得吗? ...

  7. springboot整合mybaits注解开发

    springboot整合mybaits注解开发时,返回json或者map对象时,如果一个字段的value为空,需要更改springboot的配置文件 mybatis: configuration: c ...

  8. SpringBoot 中常用注解

    本篇博文将介绍几种SpringBoot 中常用注解 其中,各注解的作用为: @PathVaribale 获取url中的数据 @RequestParam 获取请求参数的值 @GetMapping 组合注 ...

  9. SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍

    SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍 本篇博文将介绍几种如何处理url中的参数的注解@PathVaribale/@Requ ...

  10. springboot整合redis(注解形式)

    springboot整合redis(注解形式) 准备工作 springboot通常整合redis,采用的是RedisTemplate的形式,除了这种形式以外,还有另外一种形式去整合,即采用spring ...

随机推荐

  1. NC-UClient下载安装应用详解

    aliases: [] tags : " #NC " summary: [UClient下载安装NCC应用详解] product: [NCX] author : [yaenli] ...

  2. 当 xxl-job 遇上 docker → 它晕了,我也乱了!

    开心一刻 公交车上,一位老大爷睡着了,身体依靠在背后的一位年轻小伙子身上 小伙子一直保持站姿十几分钟,直到老人下车 这位在校大学生,接受采访时说:"当时就觉得背后这个人很轻盈,以为是个姑娘! ...

  3. 【Java集合框架001】为什么重写equals就要重写hashcode?

    一.前言 如果面试官问:你重写过 hashcode 和 equals 么,为什么重写equals时必须重写hashCode方法? 遇到这样的问题,应该怎样回答呢?其实,equals和hashCode都 ...

  4. golang面向对象

    一.方法 1.方法是作用在指定的数据类型上,和指定的数据类型绑定,因此自定义类型都可以有方法,而不仅仅是struct: 2.方法的申明和格式调用: package main import ( &quo ...

  5. 一文详解GaussDB(DWS) 的并发管控和内存管控

    摘要:DWS的负载管理分为两层,第一层为cn的全局并发控制,第二层为资源池级别的并发控制. 本文分享自华为云社区<GaussDB(DWS) 并发管控&内存管控>,作者: fight ...

  6. Linux配置ipv6脚本

    #!/bin/bash REMOTE_IP6="2001:da8:900c:eeee:0:5efe" REMOTE_IP4="" #填你自己学校的路由隧道的ip ...

  7. [Kogel.Subscribe.Mssql]SQL Server增量订阅,数据库变更监听

    此框架是SQL Server增量订阅,用来监听增删改数据库数据变更 目前仅支持SQL Server,Nuget上可以下载安装 或者使用Nuget命令添加包 dotnet add package Kog ...

  8. 比 JSON.stringify 快两倍的fast-json-stringify

    前言 相信大家对JSON.stringify并不陌生,通常在很多场景下都会用到这个API,最常见的就是HTTP请求中的数据传输, 因为HTTP 协议是一个文本协议,传输的格式都是字符串,但我们在代码中 ...

  9. dotnet new cli 以及Abp-cli命令的简单使用

    1:要求 首先dotnet new  需要 .NET Core 3.1 SDK 以及更高版本 dotnet new - 根据指定的模板,创建新的项目.配置文件或解决方案 2:变化 从 .NET 7 S ...

  10. Hadoop如何保证自己的江湖地位?Yarn功不可没

    前言 任何计算任务的运行都离不开计算资源,比如CPU.内存等,那么如何对于计算资源的管理调度就成为了一个重点.大数据领域中的Hadoop之所以一家独大,深受市场的欢迎,和他们设计了一个通用的资源管理调 ...