pom.xml

 <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
maven依赖:
1 <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>

华为云镜像:

 <mirror>
<id>huaweicloud</id>
<mirrorOf>*</mirrorOf>
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
</mirror>

-基本web开发

1、导入依赖库
lombok的使用:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
</dependency>

2.安装Lombok插件:plugins---->lombok

3.实体类中

@Data //get set tostring
@AllArgsConstructor //所有参数构造方法
@NoArgsConstructor //空参构造方法
public class Car {
private Integer id;
private String name;
private Float price;
// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")     传入参数
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")   传出参数 
private Date createDate;
}

4.Controller:

请求参数两种类型:

  @RequestParam   获取查询参数。即url?name=value   这种形式

  @PathVariable   获取路径参数。即url/{id}        这种形式

@RestController             //相当于@Controller+@ResponseBody 类中所有方法都返回json数据
@RequestMapping("/car")
public class CarController { @RequestMapping("/demo")
public String demo(){
return "demo.html";
}

-静态资源访问

(1)、默认静态资源映射

Spring Boot 对静态资源映射提供了默认配置

Spring Boot 默认将 /** 所有访问映射到以下目录:

classpath:/static

classpath:/public

classpath:/resources

classpath:/META-INF/resources

(2)、自定义静态资源访问

将静态资源路径设置到磁盘的基本个目录,上传文件时上传到磁盘中

方式1.使用配置类实现WebMvcConfigurer接口,重写addResourceHandlers(ResourceHandlerRegistry registry)

 @Configurable
public class WebMvcConfig implements WebMvcConfigurer{
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//配置映射关系
//访问/images,则映射到d:\a\下 registry.addResourceHandler("/images/**").addResourceLocations("file:D:\\a\\"); }
}

在浏览器输入:http://localhost:8080/images/1.jpg即可访问。

方式2.配置application.properties

 web.upload-path=D:/springboot/pic/
spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,\
classpath:/static/,classpath:/public/,file:${web.upload-path}

web.upload-path:这个属于自定义的属性,指定了一个路径,注意要以/结尾;


spring.mvc.static-path-pattern=/**:表示所有的访问都经过静态资源路径;


spring.resources.static-locations:在这里配置静态资源路径,前面说了这里的配置是覆盖默认配置,


所以需要将默认的也加上否则static、public等这些路径将不能被当作静态资源路径,


在这个最末尾的file:${web.upload-path}之所有要加file:是因为指定的是一个具体的硬盘路径,其他的使用classpath指的是系统环境变量。


--WebJars

推荐使用Webjars的三大理由:

  • 将静态资源版本化,更利于升级和维护。
  • 剥离静态资源,提高编译速度和打包效率。
  • 实现资源共享,有利于统一前端开发。

使用步骤:

1.引入依赖:

        <dependency><!--Webjars版本定位工具(前端)-->
<groupId>org.webjars</groupId>
<artifactId>webjars-locator-core</artifactId>
</dependency> <dependency><!--Jquery组件(前端)-->
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.3.1</version>
</dependency>

2.访问静态资源

快速访问:http://localhost:8080/webjars/jquery/jquery.js (推荐)除去版本路径也可以访问得到

快速访问:http://localhost:8080/webjars/jquery/3.3.1/jquery.js

--SpringBoot属性配置

1.默认属性配置文件application.properties(可以修改后缀为.yml)

application.yml
server:
port: 8888
servlet:
context-path: /javaok

访问http://localhost:8888/javaok即可

2.自定义属性及读取

在application.yml文件中,配置一些常量或者其他参数配置。读取的时候通过Spring的@Value(“${属性名}”)注解即可

application.yml
server:
port: 8888
servlet:
context-path: /javaok
server_ip: 192.168.10.9999999999
@RestController
public class HelloController { @Value("${server_ip}") //获取到自定义参数值server_ip
private String server_ip; @GetMapping("/getMapping")
public String getMapping(){
return server_ip;
}
}

3.实体类属性赋值

当属性参数变多的时候,我们习惯创建一个实体,用实体来统一接收赋值这些属性。

application.yml

user:
name: www
password: 8888888
birthday: 1992.10.28
mobile: 1234567890
address: beijing
实体类:在实体类上增加注解@ConfigurationProperties,并指定prrfix前缀

@ConfigurationProperties(prefix = "user")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private String name;
private String password;
private String birthday;
private String mobile;
private String address; }
Controller层:

EnableConfigurationProperties注解需要加在调用类上,或者加在启动类SpringbootSimpleApplication上也可以。

@RestController
@EnableConfigurationProperties({User.class,TestUser.class}) //多个实体类加载
public class UserController { @Autowired
User user;

@Autowired
TestUser testUser; @GetMapping("/testUser")
public String test(){
return testUser.toString();
} @GetMapping("/getUser")
public String getUser(){
return user.toString();
}

4.自定义配置文件

创建文件test.properties

testuser.name = "mike"
testuser.password = "123"
testuser.birthday = "1978.10.28"
实体类:

pring boot 1.5版本后@PropertySource注解就不能加载自定义的yml配置文件了


1.5版本后需要通过@PropertySource(“classpath:test.properties”)指定配置文件

 

@Configuration 注解包含@Component注解

@Configuration
@PropertySource("classpath:test.properties")
@ConfigurationProperties(prefix = "testuser")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TestUser {
private String name;
private String password;
private String birthday; }

5.多环境配置文件

  可以使用多个yml来配置属性,将于环境无关的属性放置到application.yml文件里面;通过与配置文件相同的命名规范,创建application-{profile}.yml文件 存放不同环境特有的配置,例如 application-test.yml 存放测试环境特有的配置属性,application-prod.yml 存放生产环境特有的配置属性。

  通过这种形式来配置多个环境的属性文件,在application.yml文件里面spring.profiles.active=xxx来指定加载不同环境的配置,如果不指定,则默认只使用application.yml属性文件,不会加载其他的profiles的配置。

  

application.yml

spring:
profiles:
active: prod //将调用application-prod.yml
application-test.yml

server:
port: 8081
servlet:
context-path: /javaok1

application-prod.yml

server:
port: 8082
servlet:
context-path: /javaok2
application-dev.yml

server:
port: 8083
servlet:
context-path: /javaok3

--SpringBoot构建RESTful API

 1  Controller层:  
private List<User> listUser= Collections.synchronizedList(new ArrayList<User>()); //查询所有
@GetMapping("/")
public List<User> getAllUser(){
return listUser;
}
//获取指定id的user
@GetMapping("/{id}")
public User getUser(@PathVariable("id") Long id){
for(User u:listUser){
if(u.getId()==id){
return user;
}
}
return null;
}
//插入
@PostMapping("/")
public String insert(User user){
listUser.add(user);
return "success";
}
//根据id修改
@PutMapping("/{id}")
public String update(@PathVariable("id") Long id,User user){
for (User user2 : listUser) {
if(user2.getId()==id) {
user2.setName(user.getName());
user2.setAge(user.getAge());
}
}
return "success";
}
//根据id删除
@DeleteMapping("/{id}")
public String delete(@PathVariable("id") Long id){
listUser.remove(getUser(id));
return "success";
}

起步:SpringBoot的更多相关文章

  1. 001 SringBoot基础知识及SpringBoot整合Mybatis

    1.原有Spring优缺点分析 (1)优点 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品.无需开发重量级的Enterprise J ...

  2. SpringBoot简介与快速入门

    一.SpringBoot简介 1.1 原有Spring优缺点分析 1.1.1 Spring的优点分析 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE ...

  3. SpringBoot基础篇-SpringBoot快速入门

    SpringBoot基础 学习目标: 能够理解Spring的优缺点 能够理解SpringBoot的特点 能够理解SpringBoot的核心功能 能够搭建SpringBoot的环境 能够完成applic ...

  4. MacOS下SpringBoot基础学习

    学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"springboot"获取视频和教程资料! b站在线视 ...

  5. TZ_11_Spring-Boot的入门

    1.SpringBoot的特点 为基于Spring的开发提供更快的入门体验 开箱即用,没有代码生成,也无需XML配置.同时也可以修改默认值来满足特定的需求 提供了一些大型项目中常见的非功能性特性,如嵌 ...

  6. springBoot--01--快速入门

    笔记源码:https://gitee.com/ytfsL/springboot 1.1 原有Spring优缺点分析 1.1.1 Spring的优点分析 Spring是Java企业版(Java Ente ...

  7. SpringBoot系列教程起步

    本篇学习目标 Spring Boot是什么? 构建Spring Boot应用程序 三分钟开发SpringBoot应用程序 本章源码下载 Spring Boot是什么? spring Boot是由Piv ...

  8. SpringBoot起步依赖和自动配置

    一.起步依赖 1. 是什么 本质上是一个Maven项目对象模型(Project Object Model, POM), 定义了对其他库的传递依赖,这些东西加在一起即支持某项功能. 比如: spring ...

  9. SpringBoot入门(二)——起步依赖

    本文来自网易云社区 在前一篇我们通过简单几步操作就生成了一个可以直接运行的Web程序,这是因为SpringBoot代替我们做了许多工作,概括来讲可以分为起步依赖和自动配置.这一篇先来看看起步依赖. 项 ...

  10. Java开发学习(三十五)----SpringBoot快速入门及起步依赖解析

    一.SpringBoot简介 SpringBoot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程. 使用了 Spring 框架后已经简化了我 ...

随机推荐

  1. Python学习笔记4 高级特性_20170618

    # 切片(获取list / tuple / 字符串 中指定的元素) l = list(range(10)) l[0:3] l[:3] # 0可以省略 l[:] # 全部 l[3:] # 最后的可以省略 ...

  2. vue中的router和route有什么区别?

    我只知道前者一般用在跳转路由的时候,push一个url, 而后者则用来存储路由跳转过程中存储的各种数据. 话不多说,这篇博客讲的比较详细,可以参考一下. vue2.0中的$router 和 $rout ...

  3. LG3389 「模板」高斯消元法 高斯消元

    问题描述 LG3389 题解 高斯消元,是用来解\(n\)元一次方程组的算法,时间复杂度\(O(n^3)\) 这样就构造出了这个方程组的矩阵 目标就是把这个矩阵左边\(n \times n\)消为单位 ...

  4. DRF--验证器

    前戏 在之前我们对前端妹子传来的数据进行校验,使用的是序列化类来进行校验的,但这里面往往满足不了我们的需求,更多的时候我们希望自己定义校验规则.这里介绍三种自定义校验的方式.分别是单一字段校验,多个字 ...

  5. Vue 事件的基本使用与语法差异

    "v-on:"可以简写为"@" "click"单击 "dblclick"双加 代码: <!doctype html ...

  6. vbs实现c++的vector

    代码(待更新): class Vector Private length Private data() Sub Class_Initialize() length= End Sub '插入元素' pu ...

  7. SQLi_Labs通关文档

    SQLi_Labs通关文档 先列举一下sql基础语句 show databases; //查看数据库 use xxx; //使用某个数据库 show tables; //查看该数据库的数据表 desc ...

  8. 手把手教你使用gogs搭建git私有仓库

    本来想在 Github 上建一个私仓,但是发现只能设置 3 个贡献者. 国内的码云也只能设置 5 个. 无意间看到了使用 gogs 可以搭建私服,正好手头有空闲的服务器,于是开干! https://g ...

  9. Redis的Sorted-Sets排行榜功能实现

    Redis的ZSet排行榜功能实现 1. 功能需求 类似给用户n张图片, 用户左滑不喜欢右滑喜欢.所以每个用户就会有一些喜欢的图片集合和不喜欢的图片集合.现在我们要做一个将按照一个算法将喜欢的排到前面 ...

  10. 理解CMS GC日志

    本文翻译自:https://blogs.oracle.com/poonam/entry/understanding_cms_gc_logs 准备工作 JVM的GC日志的主要参数包括如下几个:-XX:+ ...