springboot系列springboot初级应用及配置文件(代码片段)

一宿君 一宿君     2022-12-16     691

关键词:

二、Spring Boot初级应用

2.1 Spring Boot项目目录结构

  • src/main/java:文件目录(启动类和java代码编写)

  • src/main/resource:存放静态资源文件的目录、配置文件、mybatis映射文件、属性文件等;

  • src/test/java:测试代码目录;

2.2 Spring Boot核心注解

核心注解作用
@SpringBootApplication代表是SpringBoot的启动类
@SpringBootConfiguration通过bean对象来获取配置信息
@Configuration通过对bean对象的操作代替对spring中的xml文件
@EnableAutoConfiguration完成一些初始化环境的配置
@ComponentScan来完成Spring组件的扫描,替代之前我们在xml文件中配置组件扫描的配置<context:component-scan pacage=" ">
@RestController表示一个Controller,表示当前这个Controller类下的所有方法都会以JSON格式的数据返回

1、@SpringBootApplication

申明SpringBoot自动给程序进行必要的配置,这个配置等同于:@Configuration、@EnableAutoConfiguration、@ComponentScan三个配置。

(1)@Configuration:的注解类标识这个类可以使用Spring IoC容器作为Bean定义的来源。;
(2)@EnableAutoConfiguration:能够自动配置Spring的上下文,视图猜测和配置你想要的Bean类,通常会自动根据你的类路径和你的Bean定义自动配置;
(3)@ComponentScan:会自动扫描指定包下的玩不标有@Component的类,并注册成Bean,当然包括@Component下的子注解@service、@Respository、@Controller。

2、@ResponseBody

该注解修改的函数方法,会将结果直接填充到HTTP的响应体中,一般用于构建Restful的api,该注解一般会配合@RequestMapping一起使用。

3、@Controller

用于定义控制器类,在Spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(Service层),一般这个注解在类中,通常该方法需要配合注解@ResquestMapping注解使用。

4、@RestController

@ResponseBody和@Controller的结合体。

5、@EnableAutoConfiguration

Spring Boot自动配置(auto-configuration):尝试根据你添加的jar依赖自动配置你的Spring应用。例如,如果你的classpath下存在HSQLDB,并且你没有手动配置任何数据库连接Beans,那么我们将自动配置一个内存型(in-memeory)数据库。你可以将@EnableAutoConfiguration或者@SpringBootApplication注解添加到一个@Configuration类上来选择自动配置。如果发现应用了你不想要的特定自动配置类,你可以使用@EnableAutoConfiguration注解的排除属性来禁用它们。

6、@ComponentScan

表示将该类自动发现(扫描)并注册为Bean,可以自动收集所有的Spring组件,包括@Configuration,我们经常使用@ComponentScan注解搜索Beans,并结合@Autowired注解导入。如果没有配置的话,SpringBoot会扫描启动类所在包下以及子包下所有使用@Service、@Respository等注解的类。

7、@Configuration

相当于传统的xml配置文件,代替Spring的配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。

	@Configuration
    public class RedisConfig 
        @Bean(name="jedisPoolConfig")
        @ConfigurationProperties(prefix="spring.redis")
        public JedisPoolConfig getRedisConfig()
            return new JedisPoolConfig();
        
    

8、@PropertySource

如果需要有自定义的属性文件需要加载,可以使用该注解进行注入,并用@Value注解配合使用。

	@Component
    @PropertySource(value = "classpath:config.properties")
    public class ConfigUtil 
        @Value("$hos.id")
        private String hosId;
        @Value("$hos.name")
        private String hosName;
    

9、@ImportResource
Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,不能自动识别;
想让Spring的配置文件生效,必须加载进来;@ImportResource标注在一个配置类上,导入Spring的配置文件,让配置文件里面的内容生效

//beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="helloService" class="com.wbs.springboot.service.HelloService"></bean>
</beans>
//导入Spring的配置文件让其生效
@ImportResource(locations = "classpath:beans.xml")

10、@Bean

用@Bean标注方法等价于XML中配置的bean。

11、@Value

注入Spring Boot application.properties配置的属性的值。

  • application.properties
    message:消息
    
    @Value(value = "#message")
    private String message;
    

12、Environment

org.springframework.core.env.Environment,环境类,spring3.1以后开始引入。比如JDK环境,Servlet环境,Spring环境等等;每个环境都有自己的配置数据,如System.getProperties()、System.getenv()等可以拿到JDK环境数据;ServletContext.getInitParameter()可以拿到Servlet环境配置数据等等;也就是说Spring抽象了一个Environment来表示环境配置。
在springBoot中使用直接用@Resource注入,即可获得系统配置文件application.properties/yml的属性值,如果是自定义的配置文件,则需要预先通过@PropertySource等其他注解注入后,才能获取。获取通过getProperty()方法获取。

2.3 Spring Boot配置文件(properties、yml)

1、配置文件

Spring Boot使用一个全局的配置文件,配置文件名是固定的;

  • application.properties
  • application.yml(推荐)

配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;

2、三种配置文件的区别

  • properties配置文件:key=value的格式。key之间是以“.”进行分割。
    server.port = 8081
    
  • yml配置文件:是Spring Boot中新增的一种配置文件格式,以树状结构展示。
  • key之间使用“:”进行分割;
  • 缩进一定不能使用tab键,否则会报错;
  • key和value之间的分号后面必须要有一个空格。
    server:
      port: 8081
    
  • xml文件的配置
    <server>
    	<port>8081</port>
    </server>
    

YAML(YAML Ain’t Markup Language)

​YAML A Markup Language:是一个标记语言

YAML isn’t Markup Language:不是一个标记语言;

标记语言:

以前的配置文件;大多都使用的是 xxx.xml文件;
YAML:以数据为中心,比json、xml等更适合做配置文件;

3、多环境配置文件

(1)语法结构:application-profile.yml,

profile:代表的就是一个环境变量
application-dev.yml 开发环境
application-test.yml 测试环境
application-prod.yml 生产环境

(2) 新增全局配置文件application.properties或application.yml文件,打包的时候通过active指定变量。

#application.properties文件
spring.profiles.active = dev
#applicaition.yml(推荐)
spring:
	profile:
		active:dev

(3)按环境加载配置文件运行项目,控制台运行项目

  java -jar xxx.jar --spring.profiles.active=dev

4 YAML语法

1、基本语法

  • k:(空格)v:表示一对键值对(空格必须有);
  • 空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
    属性和值也是大小写敏感;
    server:
        port: 8081
        path: /hello
    

2、值的写法

2.1 字面量:普通的值(数字,字符串,布尔)
  • k:(空格)v:字面直接来写;

  • 字符串默认不用加上单引号或者双引号;

  • ​" ":双引号;会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思

    name:   "zhangsan \\n lisi":输出:zhangsan 换行  lisi
    
  • ​’ ':单引号;不会转义特殊字符,特殊字符最终只是一个普通的字符串数据

    name:   ‘zhangsan \\n lisi’:输出:zhangsan \\n  lisi
    
2.2 对象、Map(属性和值)(键值对):
  • k: v:在下一行来写对象的属性和值的关系;注意缩进
    ​- 对象还是k: v的方式
    friends:
    	lastName: zhangsan
    	age: 20
    
  • 行内写法:
    friends: lastName: zhangsan,age: 18
    
2.3 数组(List、Set):
  • 用- 值表示数组中的一个元素
    pets:
     - cat
     - dog
     - pig
    
  • 行内写法
    pets: [cat,dog,pig]
    

3、配置文件值注入

  • 配置文件

    person:
        lastName: hello
        age: 18
        boss: false
        birth: 2017/12/12
        maps: k1: v1,k2: 12
        lists:
          - lisi
          - zhangsan
        dog:
          name: 小狗
          age: 12
    
  • javaBean:

    将配置文件中配置的每一个属性的值,映射到这个组件中;
    @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
    prefix = “person”:配置文件中的属性可以和下面标注类中所有属性进行一一映射;
    只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能;

    @Component
    @ConfigurationProperties(prefix = "person")
    public class Person 
    
        private String lastName;
        private Integer age;
        private Boolean boss;
        private Date birth;
    
        private Map<String,Object> maps;
        private List<Object> lists;
        private Dog dog;
    
    

4 properties配置文件在idea中默认utf-8可能会乱码

5 @Value获取值和@ConfigurationProperties获取值比较

@ConfigurationProperties@Value
功能批量注入配置文件中的属性一个个指定
松散绑定(松散语法)支持不支持
SpEL不支持支持
JSR303数据校验支持不支持
复杂类型封装支持不支持

配置文件yml还是properties他们都能获取到值;

如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;

如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

(超详解)springboot初级部分-概述-01

文章目录SpringBoot-概述-011.SpringBoot概念2.Spring缺点3.SpringBoot功能4.总结SpringBoot-概述-01该文章参考:黑马SpringBoot1.SpringBoot概念SpringBoot提供了一种快速使用Spring的方式,基于约定优于配置的思想,可以让开发人员不必在... 查看详情

(超详解)springboot初级部分-概述-01

文章目录SpringBoot-概述-011.SpringBoot概念2.Spring缺点3.SpringBoot功能4.总结SpringBoot-概述-01该文章参考:黑马SpringBoot1.SpringBoot概念SpringBoot提供了一种快速使用Spring的方式,基于约定优于配置的思想,可以让开发人员不必在... 查看详情

springboot从零单排------初级入门篇

  有人说SSM已死,未来是SpringBoot和SpringCloud的天下,这个观点可能有点极端,但不可否认的是已经越来越多的公司开始使用SpringBoot。所以我将平时学习SpringBoot的内容做个记录,查漏补缺吧 1、创建SpringBoot项目可以通过官... 查看详情

java程序员极力推荐的springboot全家桶干货系列

...到读者反馈,希望能整理出一些有关spring的干货,主要是springboot有关的面试题和书籍,所以,应广大爱学习人士的需求,网罗了一些资料,并将这些资料分享给更多有需要的人。高频面试题:1、什么是SpringBoot?2、SpringBoot有哪... 查看详情

java程序员极力推荐的springboot全家桶干货系列

...到读者反馈,希望能整理出一些有关spring的干货,主要是springboot有关的面试题和书籍,所以,应广大爱学习人士的需求,网罗了一些资料,并将这些资料分享给更多有需要的人。高频面试题:1、什么是SpringBoot?2、SpringBoot有哪... 查看详情

(超详解)springboot初级部分-整合其他框架-04(代码片段)

文章目录SpringBoot-整合其他框架-041.SpringBoot整合Junit2.SpringBoot整合Redis3.SpringBoot整洁MyBatisSpringBoot-整合其他框架-04该文章参考:黑马SpringBoot1.SpringBoot整合Junit搭建SpringBoot工程引入starter-test起步依赖<dependency>< 查看详情

(超详解)springboot初级部分-快速入门-02(代码片段)

文章目录SpringBoot-快速入门-021.需求2.实现步骤2.1创建Maven项目2.2导入SpringBoot起步依赖2.3定义Controller2.4编写引导类2.5启动测试3.SpringInitializr创建SpringBoot工程4.SpringBoot起步依赖原理分析5.总结SpringBoot-快速入门-02该文章参考:黑... 查看详情

(超详解)springboot初级部分-配置-03(代码片段)

文章目录SpringBoot-配置-031.配置文件分类2.yaml2.1yaml定义2.2yaml基本语法2.3yaml数据格式2.4yaml参数引用3.读取配置文件内容3.1@Value3.2Environment3.3@ConfigurationProperties4.profile4.1profile配置方式4.2profile激活方式5.内置配置加载顺序6.外部... 查看详情

springboot系列

https://my.oschina.net/xiedeshou?tab=newest&catalogId=5936801SpringBoot|第零章:前言SpringBoot|第一章:第一个SpringBoot应用SpringBoot|第二章:lombok介绍及简单使用SpringBoot|第三章:springboot配置详解SpringBoot|第四章:日志配置SpringBoot|第 查看详情

springboot官方文档怎么学习

...不会被打?然而我内心的OS是:打打不到啊达不到!这个SpringBoot系列算是我看见的比较完整的,通俗易懂的一个系列了,推荐给你们吧!SpringBoot系列(九):定时任务SpringBoot系列(八):RabbitMQ详解SpringBoot系列(七):springboot+mybatis多... 查看详情

springboot系列springboot配置文件

注意:本SpringBoot系列文章基于SpringBoot版本v2.1.1.RELEASE进行学习分析,版本不同可能会有细微差别。前言不管是通过官方提供的方式获取SpringBoot项目,还是通过IDEA快速的创建SpringBoot项目,我们都会发现在resource有一个配置文件app... 查看详情

springboot系列springboot自动配置

注意:本SpringBoot系列文章基于SpringBoot版本v2.1.1.RELEASE进行学习分析,版本不同可能会有细微差别。前言关于配置文件可以配置的内容,在SpringBoot官方网站已经提供了完整了配置示例和解释。可以这么说,SpringBoot的一大精髓就是... 查看详情

springboot系列springboot日志框架

注意:本SpringBoot系列文章基于SpringBoot版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别。前言Spring框架选择使用了JCL作为默认日志输出。而SpringBoot默认选择了SLF4J结合LogBack。那我们在项目中该使用哪种日志框... 查看详情

springboot系列springboot日志框架

注意:本SpringBoot系列文章基于SpringBoot版本v2.1.1.RELEASE进行学习分析,版本不同可能会有细微差别。前言Spring框架选择使用了JCL作为默认日志输出。而SpringBoot默认选择了SLF4J结合LogBack。那我们在项目中该使用哪种日志框架呢?在... 查看详情

springboot系列教程七:springboot集成mybatis

一.创建项目    项目名称为“springboot_mybatis_demo”,创建过程中勾选“Web”,“MyBatis”,“MySQL”,第一次创建Maven需要下载依赖包(耐心等待)    二.实现2.1创建User类1packagecom.woniu.bean;234publicclassUser{5pr... 查看详情

springboot系列springboot项目搭建

...目1、访问http://start.spring.io/2、选择构建工具MavenProject、SpringBoot版本2.1.1以及一些工程基本信息,可参考下图所示:3、点击GenerateProject下载项目压缩包4、解压后,使用idea,File->new->Projectfromexistingsources->demo中的pom.xml-> 查看详情

springboot和vue集成视频播放组件——基于springboot和vue的后台管理系统项目系列博客(二十二)(代码片段)

系列文章目录系统功能演示——基于SpringBoot和Vue的后台管理系统项目系列博客(一)Vue2安装并集成ElementUI——基于SpringBoot和Vue的后台管理系统项目系列博客(二)Vue2前端主体框架搭建——基于SpringBoot和Vue的后... 查看详情

springboot系列springboot入门(代码片段)

一、SpringBoot入门1.1SpringBoot简介SpringBoot是在Sping(Spring4.0版本)基础上产生的,其中“Boot”的意思就是“引导”,意在简化开发模式,使开发者快速的开发出基于Spring的应用。SpringBoot含有一个内嵌的TomcatWeb服... 查看详情