重学SpringBoot. step1 全注解的SpringBoot
参考:《深入浅出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的更多相关文章
- 重学 Java 设计模式:实战外观模式「基于SpringBoot开发门面模式中间件,统一控制接口白名单场景」
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你感受到的容易,一定有人为你承担不容易 这句话更像是描述生活的,许许多多的磕磕绊绊总 ...
- 1-3. SpringBoot基础,Java配置(全注解配置)取代xml配置
最近突发奇想,整合一下以前一些学习笔记,分享自己这几年爬过的坑,逐步更新文章,谢谢大家的关注和支持. 这节讲一下SpringBoot的学习必须的一些基础,Java配置.其实在Spring2.0时代就已 ...
- SpringBoot | 1.2 全注解下的Spring IoC
前言 在学习SpringBoot之前,有几个Spring的重要的基础概念需要提一下,SpringBoot对这些基础概念做进一步的封装,完成自动配置.首先就是Spring的控制反转IOC,由于Sprin ...
- SpringBoot使用Mybatis注解进行一对多和多对多查询(2)
SpringBoot使用Mybatis注解进行一对多和多对多查询 GitHub的完整示例项目地址kingboy-springboot-data 一.模拟的业务查询 系统中的用户user都有唯一对应的地 ...
- springboot系列总结(二)---springboot的常用注解
上一篇文章我们简单讲了一下@SpringBootApplication这个注解,申明让spring boot自动给程序进行必要的配置,他是一个组合注解,包含了@ComponentScan.@Confi ...
- springboot的@ConditionalOnClass注解
大家好,我是"良工说技术". 今天给大家带来的是springboot中的@ConditionalOnClass注解的用法.上次的@ConditionalOnBean注解还记得吗? ...
- springboot整合mybaits注解开发
springboot整合mybaits注解开发时,返回json或者map对象时,如果一个字段的value为空,需要更改springboot的配置文件 mybatis: configuration: c ...
- SpringBoot 中常用注解
本篇博文将介绍几种SpringBoot 中常用注解 其中,各注解的作用为: @PathVaribale 获取url中的数据 @RequestParam 获取请求参数的值 @GetMapping 组合注 ...
- SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍
SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍 本篇博文将介绍几种如何处理url中的参数的注解@PathVaribale/@Requ ...
- springboot整合redis(注解形式)
springboot整合redis(注解形式) 准备工作 springboot通常整合redis,采用的是RedisTemplate的形式,除了这种形式以外,还有另外一种形式去整合,即采用spring ...
随机推荐
- 嵌入式-C语言基础:联合体和共用体的概念
有时候同一块内存空间存放类型不同,不同类型的变量共享一块空间. 结构体和共用体的区别: (1)结构体元素有各自单独空间,共用体元素共享空间,空间大小由最大类型确定. (2)结构体元素互不影响共用体赋值 ...
- mindxdl---common---db_handler.go
// Copyright (c) 2021. Huawei Technologies Co., Ltd. All rights reserved.// Package common this file ...
- Go语言核心36讲33
我们在前几次讲的互斥锁.条件变量和原子操作都是最基本重要的同步工具.在Go语言中,除了通道之外,它们也算是最为常用的并发安全工具了. 说到通道,不知道你想过没有,之前在一些场合下里,我们使用通道的方式 ...
- 28分钟学会Linux三剑客
把简单的技术学到极致就是高手. 前言 Linux三剑客指的是grep.sed以及awk命令的使用,这三个命令功能异常强大,大到没朋友.grep命令主打"查找",sed命令主打&qu ...
- <三>function函数对象类型的应用示例
std::function是一组函数对象包装类的模板,实现了一个泛型的回调机制.function与函数指针比较相似,优点在于它允许用户在目标的实现上拥有更大的弹性,即目标既可以是普通函数,也可以是函数 ...
- 【敏捷研发系列】前端DevOps流水线实践
作者:胡骏 一.背景现状 软件开发从传统的瀑布流方式到敏捷开发,将软件交付过程中开发和测试形成快速的迭代交付,但在软件交付客户之前或者使用过程中,还包括集成.部署.运维等环节需要进一步优化交付效率.因 ...
- 《HTTP权威指南》– 2.HTTP报文与URL资源
URL与资源: 大多数URL方案的URL语法都建立在这个由9部分构成的通用格式上. 方案: 访问服务器以获取资源要使用哪种协议 用户: 某些方案访问资源时需要的用户名 密码: 用户名后面可能包含的密码 ...
- <一>C++ STL
STL (standard template libaray - 标准模板库):是 C++ 标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架. 通俗来说:STL就 ...
- Python从入门到精通(第2版)——pyuic5: error: no such option: -m的问题解决
前言 在学习<Python从入门到精通(第2版)>的第15章 GUI界面编程--15.2.4 将.ui文件转换为.py文件时,按照书中步骤出错时的问题解决,希望对同样学习本书的同学有所帮助 ...
- ArcObjects SDK开发 022 开发框架搭建-FrameWorkUI包设计
1.CommandUIs部分 这部分主要是定义承载Command和Tool的具体UI.如下图所示. 以CommandUI结尾的这几个类都是继承了Framework.Engine里面的ICommandU ...