首页 > 其他分享 >SpringBoot

SpringBoot

时间:2024-09-27 11:50:20浏览次数:10  
标签:return SpringBoot age String import public name

一、Spring项目的入门开发
1.快速构建SpringBoot项目  

项目创建方式一:使用Spring Initializr 的 Web页面创建项目

1. 打开 https://start.spring.io/

2. 填写项目信息

3. 点击”Generate Project“按钮生成项目;

下载此项目

4. 解压项目包,并用IDEA以Maven项目导入,一路下一步即可,直到项目导入完毕。 5. 如果是第一次使用,可能速度会比较慢,包比较多、需要耐心等待一切就绪。

  项目创建方式二:使用 IDEA 直接创建项目

1. 创建一个新项目

2. 选择spring initalizr , 可以看到默认就是去官网的快速构建工具那里实现

3. 填写项目信息

4. 选择初始化的组件(初学勾选 Web 即可)

5. 填写项目路径

6. 等待项目构建成功  

项目创建方式三:使用 IDEA 直接创建项目

1. 与方式2相同,但是参考路径为:https://start.aliyun.com

项目创建方式四:使用 IDEA 创建Maven项目并改造为springBoot 项目结构分析: 1. 程序的主启动类

2. 一个 application.properties 配置文件

3. 一个 测试类

4. 一个 pom.xml

 2.项目打Jar包

 使用指令java -jar 项目名

3.banner修改

1.项目下resources目录下新建一个banner.txt即可

2.图案可以到:https://www.bootschool.net/ascii这个网页生成,然后拷贝到文件中;

3.设置图片作为banner

spring.banner.image.location=logo.png

二、Spring Boot配置文件分类

 SpringBoot是基于约定的,搜易很多配置文件都有默认值,但如果想使用自己的配置文件替换默认配置,就可以使用application.properties或者application.yml(application.yaml)进行配置

  • application.properties

             语法结构:key=value

eg:server.port=8081

  • application .yml

      语法结构:key: 空格value (冒号后面必须有空格)

eg:server: 

             port: 8081

小结:

  • SpringBoot提供了2中配置文件类型:properties和yml/yaml
  • 默认配置文件名称:application
  • 在同一级目录下如果三类文件共存,优先级为:properties>yml>yaml 
 1.ymal语法基础
  1. 大小写敏感
  2. 数据值前边必须加空格,作为分隔符
  3. 使用缩进表示层级关系
  4. 缩进的空额不允许使用Tab键,只允许使用空格(各个系统Tab对应的空格数目可能不同,导致层次混乱)。
  5. 缩进的空格数目不重要,只要相同层级的元素左侧对其即可
  6. “#”表示注释,从这个字符一直到行尾,都会被解析器忽略。
1.1yaml数据格式
  • 字面量:普通的值[数字,布尔值,字符串]

boolean:TRUE             #TRUE、true、True、FALSE、false、False均可

float:3.14                    #6.8523015e+5 #支持科学计数法

int:123                         #0b1010_0111_0100_1010_1110 #支持二进制、八进制、十六进制

String                           #字符串可以直接书写

  • 数组:单列(array、List、set)

address:
  - 北京
  - 西安
  - 上海
#  数组的行内写法
commpany: [阿里巴巴,华为,腾讯,字节跳动]
  •  双列:map
person:
 name: 小蒋
 age: 18
行内写法
person2: {name: 小陈,sex: 女}
对象数据格式1
user1:
  person1:
    name: 小郭
     age: 18
person:
  email: [email protected]
  name: 小郭
  age: 18
  marry: false
  birth: 2001/10/28
  maps: {first: 吃饭,second: 睡觉, third: 玩手机}
  lists: [豆腐泡,汉中麻辣鱼]

对象数组格式二

users:

- name: Tom

   age: 4

- name: Jerry

    age: 5

对象数组缩略格式

users2: [ { name:Tom,age:4 },{ name:Jerry,age:5 } ]

1.2YAML:参数引用

name: wangzhuo

person:

name: xuelaoshi

pet: ${name}                                               # 引用上边定义的name值

name: xuls${random.uuid}                          # 配置文件占位符,随机uuid

name: ${person.name}_真帅 

小结

  1. 配置文件类型
  • properties:和以前一样
  • yml/yaml:注意空格

2.yaml:简介,以数据为核心

  • 基本语法
  1. 大小写敏感
  2. 数据值前边必须有空格,作为分隔符
  3. 使用空格缩进表示层级关系,相同缩进表示同一级
  • 数据格式
  1. 对象
  2. 数组:使用“-”表示数组的每个元素
  3. 纯量
  • 参数引用

     ${key}

 2.读取配置内容

支持方式:

  • 逐个注入:@Value
  • 批量注入:
  1. @ConfigurationProperties
  2. Environment类
    package com.ly.springboot_init_01.pojo;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.PropertySource;
    import org.springframework.stereotype.Component;
    
    @Component
    @PropertySource(value = "classpath:dog.yml")
    public class Dog {
       @Value("${name}")
        private String name;
       @Value("${age}")
        private int age;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "Dog{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    }
    

    主配置文件

    dog:
      name: kimi
      age: 2

 

测试批量注入

person实体类

批量注入主要用到以下两个注解:

@Component
@ConfigurationProperties(prefix = "实体类名")

package com.ly.springboot_init_01.pojo;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;

import javax.validation.constraints.Email;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Component
@ConfigurationProperties(prefix = "person")
/*
@ConfigurationProperties作用:
直接在测试类中装配开发模式类辅助获取key对应value数据,将配置文件中配置的每一个属性的值,映射到这个组件中;
告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
参数 prefix = “person” : 将配置文件中的person下面的所有属性一一对应*/
public class Person {
    private String  email;
    private String name;
    private int age;
    private  boolean marry;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public boolean isMarry() {
        return marry;
    }

    public void setMarry(boolean marry) {
        this.marry = marry;
    }

    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }

    public Map<String, Object> getMaps() {
        return maps;
    }

    public void setMaps(Map<String, Object> maps) {
        this.maps = maps;
    }

    public List<Object> getLists() {
        return lists;
    }

    public void setLists(List<Object> lists) {
        this.lists = lists;
    }

    public Dog getDog() {
        return dog;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }

    @Override
    public String toString() {
        return "Person{" +
                "email='" + email + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", marry=" + marry +
                ", birth=" + birth +
                ", maps=" + maps +
                ", lists=" + lists +
                ", dog=" + dog +
                '}';
    }
}

 主配置类

person:
  email: [email protected]
  name: 小郭
  age: 18
  marry: false
  birth: 2001/10/28
  maps: {first: 吃饭,second: 睡觉, third: 玩手机}
  lists: [豆腐泡,汉中麻辣鱼]
  dog:
    name: kimi
    age: 2
3.JSR303数据校验

对于 web 服务来说,为防止非法参数对业务造成影响,在 Controller 层一定要做参数校验的!大部分 情况下,请求参数分为如下两种形式:

1. POST 、 PUT 请求,使用 requestBody 传递参数;

2. GET 请求,使用 requestParam/PathVariable 传递参数。

 数据校验的使用步骤:

  1.  导坐标
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

      2.写注解

package com.ly.springboot_init_01.pojo;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;

import javax.validation.constraints.Email;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Validated
public class Person {
    @Email(message = "邮箱必须合法")
    private String  email;
    @NotNull
    private String name;
    @Max(value = 125,message = "请输入合理范围")
    private int age;
    private  boolean marry;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public boolean isMarry() {
        return marry;
    }

    public void setMarry(boolean marry) {
        this.marry = marry;
    }

    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }

    public Map<String, Object> getMaps() {
        return maps;
    }

    public void setMaps(Map<String, Object> maps) {
        this.maps = maps;
    }

    public List<Object> getLists() {
        return lists;
    }

    public void setLists(List<Object> lists) {
        this.lists = lists;
    }

    public Dog getDog() {
        return dog;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }

    @Override
    public String toString() {
        return "Person{" +
                "email='" + email + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", marry=" + marry +
                ", birth=" + birth +
                ", maps=" + maps +
                ", lists=" + lists +
                ", dog=" + dog +
                '}';
    }
}
4.Controller统一异常处理
  • @ControllerAdvice:统一为Controller进行"增强"
  • @ExceptionHandler : 异常处理
package com.ly.springboot_init_01.util;

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

@ControllerAdvice
public class BindExceptionUtilAdvice {
    //验证参数未使用@RequestBody注解
    @ExceptionHandler(BindException.class)
    @ResponseBody
    public String handlerBindException(BindException ex){
    return "全局异常处理器成功";
    }
}
 5.多环境切换profile
  • application-dev.properties/yml 开发环境
  • application-test.properties/yml 测试环境
  • application-pro.properties/yml 生产环境

profile激活方式:

  •        配置文件:
spring:
  profiles:
    default: test

标签:return,SpringBoot,age,String,import,public,name
From: https://blog.csdn.net/fada_da_da/article/details/142367270

相关文章

  • springboot+vue社区医疗诊所信息系统的设计与实现 8283b
    目录功能和技术介绍系统实现截图开发核心技术介绍:使用说明开发步骤编译运行代码执行流程核心代码部分展示可行性分析软件测试详细视频演示源码获取功能和技术介绍jdk版本:jdk1.8+编程语言:java框架支持:springboot/ssm/springcloud分布式微服务数据库:mysql版......
  • 【2025】springboot图书推荐商城系统(源码+文档+调试+答疑)
     目录一、整体目录:项目包含源码、调试、修改教程、调试教程、讲解视频、开发文档(项目摘要、前言、技术介绍、可行性分析、流程图、结构图、ER属性图、数据库表结构信息、功能介绍、测试致谢等约1万字)二、运行截图三、代码部分(示范):四、数据库表(示范):数据库表有注释,可以......
  • SpringBoot+Activiti7工作流入门实例
    目录文章目录目录准备Activiti建模工具1、BPMN-js在线设计器1.1安装1.2使用说明1.3运行截图2、IDEA安装ActivitiDesigner插件2.1安装插件2.2设置编码格式防止中文乱码2.3截图简单工作流入门实例1.新建SpringBoot工程2.引入Activiti相关依赖添加版本属性指定......
  • [附源码]在线音乐系统+SpringBoot+Vue前后端分离
    今天带来一款优秀的项目:在线音乐系统源码 。系统采用的流行的前后端分离结构,内含功能包括"管理后台",“用户端”,“评论系统”,“歌手,歌曲管理”,“用户系统”,"统计"等功能。如果您有任何问题,也请联系小编,小编是经验丰富的程序员!一.系统演示视频 https://githubs.xy......
  • springboot+vue青年大学习数据分析系统的设计与实现5ek29
    目录功能和技术介绍系统实现截图开发核心技术介绍:使用说明开发步骤编译运行需求分析系统设计软件测试核心代码部分展示详细视频演示源码获取功能和技术介绍本项目包含程序源码和MySql脚本和文档,idea开发,支持Eclipse。对项目进行分阶段,分模块的开发,对项目进行黑盒......
  • 基于Node.js+vue基于springboot的模拟面试平台7tch0(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和互联网应用的广泛普及,传统的招聘模式正逐步向数字化、智能化转型。面试作为招聘流程中的关键环节,其效率与效果直接影响到企业的人......
  • 如何打造Java SpringBoot民宿山庄农家乐系统?2025最新毕业设计攻略
    ✍✍计算机毕业编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、小程序、大数据实战项目集⚡⚡文末获取......
  • 如何打造流浪天使乐园管理系统?Java SpringBoot+Vue技术解析
    ✍✍计算机毕业编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、小程序、大数据实战项目集⚡⚡文末获取......
  • 基于springboot的点餐系统的设计与实现(附源码、lw、ppt)
    博主介绍:✌十余年IT大项目实战经验、在某机构培训学员上千名、专注于本行业领域✌技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫+大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战项目。主要内容:系统功能设计、开题报告......
  • 基于SpringBoot的在线考试系统设计与实现
    1.1 研究背景21世纪,我国早在上世纪就已普及互联网信息,互联网对人们生活中带来了无限的便利。像大部分的企事业单位都有自己的系统,由从今传统的管理模式向互联网发展,如今开发自己的系统是理所当然的。那么开发在线考试系统意义和用处有哪些呢?1.首先提升形象:这是每个企事业单......