springboot-1-入门

1、springboot简介,背景

简化Spring应用开发的一个框架;

整个Spring技术栈的一个大整合;

J2EE开发的一站式解决方案;

2、极简helloworld

流程:

使用spring initializr创建springboot新项目

在主程序的同级目录下创建包

  • control包
  • dao包
  • pojo包
  • service包

创建一个control

@Controller
public class HelloController { @ResponseBody
@RequestMapping("/hello")
public String hello(){
return "Hello World!";
}
}

直接运行主程序即可

@SpringbootApplication

//@SpringBootApplication
//等与springboot的配置类 + 自动配置开启 + 组件扫描范围
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.wang")
public class SpringbootSpringboot1Application {

主程序原理

之前:

public class SpringbootSpringboot1Application {

    public static void main(String[] args) {
SpringApplication.run(SpringbootSpringboot1Application.class, args);
} }

之后:

public class MainApplication {
public static void main(String[] args) {
//1、返回IOC容器
ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
//2、查看IOC容器中的bean
String[] beanDefinitionNames = run.getBeanDefinitionNames();
for (String i:beanDefinitionNames){
System.out.println(i);
}
//3、从容器中获取自定义的bean
Pet pet = run.getBean("pet", Pet.class);
System.out.println("pet------------>>>>>"+pet);
}
}

可以理解为得到的run实例化对象就是一个IOC容器可以从里面获取到所有bean实例

3、yaml使用

流程:

导入提示配置依赖

        <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--这个提示包是开发工具,不需要打包-->
<configuration>
<excludes>
<exclude>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>

创建pojo

@Data
@Component
@ConfigurationProperties(prefix = "person")
public class Person { private String userName;
private Boolean boss;
private Date birth;
private Integer age;
private Pet pet;
private String[] interests;
private List<String> animal;
private Map<String, Object> score;
private Set<Double> salarys;
private Map<String, List<Pet> allPets;
} @Data
public class Pet {
private String name;
private Double weight;
}

对应的yaml文件

# yaml表示以上对象
person:
userName: zhangsan
boss: false
birth: 2019/12/12 20:12:33
age: 18
pet:
name: tomcat
weight: 23.4
interests: [篮球,游泳]
animal:
- jerry
- mario
score:
english:
first: 30
second: 40
third: 50
math: [131,140,148]
chinese: {first: 128,second: 136}
salarys: [3999,4999.98,5999.99]
allPets:
sick:
- {name: tom}
- {name: jerry,weight: 47}
health: [{name: mario,weight: 47}]

注意:

1、在添加了这个配置之后不会立刻出现提示,需要重启项目

2、pojo类上加了@ConfigurationProperties(prefix = "person")之后必须要还要加上一个@Component,让IOC容器能够扫描到这个类

@ConfigurationProperties

该注解有一个prefix属性,通过指定的前缀,绑定配置文件中的配置,该注解可以放在类上,也可以放在方法上

可以从注解说明中看到,当将该注解作用于方法上时,如果想要有效的绑定配置,那么该方法需要有 @Bean 注解且所属Class需要有 @Configuration 注解。

5\热部署(dev-tool)

Restart VS Reload

<!--dev-tool-自动重启,ctrl+F9快捷键自动重启-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>

ctrl+F9快捷键快速重启

如果需要真正的热部署需要付费加载JRebel插件

6\JSR303验证

在pojo的类的对应属性使用JSR303验证的对应注解,可以保证无论哪种方式创建这个pojo都会进行这个注解的验证,从而达到验证的效果

@Data
@Validated
public class Person {
private String name;
private Integer age;
/*验证这个属性是否为邮箱格式,message属性为报错信息(默认为不是一个合法的邮箱格式*/
@Email(message = "邮箱格式有误")
private String email;
}

还有其他验证

Null检查
@Null(message = "") 验证对象是否为null
@NotNull(message = "") 验证对象是否不为null, 无法查检长度为0的字符串
@NotBlank(message = "") 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
@NotEmpty(message = "") 检查约束元素是否为NULL或者是EMPTY. Booelan检查
@AssertTrue(message = "") 验证 Boolean 对象是否为 true
@AssertFalse(message = "") 验证 Boolean 对象是否为 false 长度检查
@Size(min=, max=,message = "") 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
@Length(min=, max=,message = "") Validates that the annotated string is between min and max included. 日期检查
@Past(message = "") 验证 Date 和 Calendar 对象是否在当前时间之前
@Future(message = "") 验证 Date 和 Calendar 对象是否在当前时间之后
@Pattern(regexp = "",message = "") 验证 String 对象是否符合正则表达式的规则 数值检查
建议使用在包装类型(Integer这类),不建议使用在int类型上,
因为表单值为“”时无法转换为int,但可以转换为Stirng为"",Integer为null
@Min(message = "") 验证 Number 和 String 对象是否大等于指定的值
@Max(message = "") 验证 Number 和 String 对象是否小等于指定的值
@DecimalMax(message = "") 值不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度
@DecimalMin(message = "") 值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度
@Digits(message = "") 验证 Number 和 String 的构成是否合法
@Digits(integer=,fraction=,message = "") 验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。 @Range(min=, max=,message = "") 检查数字是否介于min和max之间. @Valid 递归的对关联对象进行校验, 如果关联对象是个集合或者数组,那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验.(是否进行递归验证) @CreditCardNumber(message = "") 信用卡验证
@Email(message = "") 验证是否是邮件地址,如果为null,不进行验证,算通过验证。
@ScriptAssert(lang= ,script=, alias=,message = "") @URL(protocol=,host=, port=,regexp=, flags=,message = "")

7\多环境配置

properties文件时:一个主要配置文件,去调用另外俩(多)个配置文件

yaml文件时:用---分割代码块,第一个代码块去调用另外两(多)个代码块

properties作为配置文件时

在resource下创建三个properties文件:

  • application.properties
  • application-dev.properties
  • application-test.properties

application.properties文件中配置我们需要的另外俩格配置文件

#比如在配置文件中指定使用dev环境,我们可以通过设置不同的端口号进行测试;
#我们启动SpringBoot,就可以看到已经切换到dev下的配置了;
spring.profiles.active=dev

yaml作为代码块时


server:
port: 8081
#选择要激活那个环境块
spring:
profiles:
active: prod
---
server:
port: 8083
spring:
profiles: dev #配置这个环境的名称
---
server:
port: 8084
spring:
profiles: prod #配置这个环境的名称

springboot-1-入门的更多相关文章

  1. SpringData 基于SpringBoot快速入门

    SpringData 基于SpringBoot快速入门 本章通过学习SpringData 和SpringBoot 相关知识将面向服务架构(SOA)的单点登录系统(SSO)需要的代码实现.这样可以从实战 ...

  2. SpringBoot Docker入门,SpringBoot Docker安装

    SpringBoot Docker入门,SpringBoot Docker安装 ================================ ©Copyright 蕃薯耀 2018年4月8日 ht ...

  3. 01-项目简介Springboot简介入门配置项目准备

    总体课程主要分为4个阶段课程: ------------------------课程介绍------------------------ 01-项目简介Springboot简介入门配置项目准备02-M ...

  4. SPRING-BOOT系列之SpringBoot快速入门

    今天 , 正式来介绍SpringBoot快速入门 : 可以去如类似 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/refer ...

  5. SpringBoot快速入门01--环境搭建

    SpringBoot快速入门--环境搭建 1.创建web工程 1.1 创建新的工程. 1.2  选择maven工程,点击下一步. 1.3 填写groupid(maven的项目名称)和artifacti ...

  6. SpringBoot 初入门

    SpringBoot 初入门 关于介绍什么之类的就不讲了,主要做一下学习记录. 1. 启动方式 IDEA 启动 命令行启动: mvn spring-boot:run 部署到服务器启动: 先进行打包, ...

  7. springBoot从入门到源码分析

    先分享一个springBoot搭建学习项目,和springboot多数据源项目的传送门:https://github.com/1057234721/springBoot 1. SpringBoot快速 ...

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

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

  9. Springboot快速入门篇,图文并茂

    Springboot快速入门篇,图文并茂 文章已托管到GitHub,大家可以去GitHub查看阅读,欢迎老板们前来Star!搜索关注微信公众号 [码出Offer] 领取各种学习资料! image-20 ...

  10. springboot + kafka 入门实例 入门demo

    springboot + kafka 入门实例 入门demo 版本说明 springboot版本:2.3.3.RELEASE kakfa服务端版本:kafka_2.12-2.6.0.tgz zooke ...

随机推荐

  1. SQL Parameter参数的用法

    SqlParameter 类 表示 SqlCommand 的参数,也可以是它到 DataSet 列的映射. 无法继承此类. 命名空间:  System.Data.SqlClient 程序集:  Sys ...

  2. P1123 取数游戏

    题目描述 一个N \times MN×M的由非负整数构成的数字矩阵,你需要在其中取出若干个数字,使得取出的任意两个数字不相邻(若一个数字在另外一个数字相邻88个格子中的一个即认为这两个数字相邻),求取 ...

  3. Django基础之模型层(02)

    1 重要概念 # 多表查询 """ 正向查询 反向查询 当前查询对象是否含有外键字段 如果有就是正向 没有无则是反向 口诀: 正向查询按外键字段 多对多需要额外再加一个. ...

  4. CMD批处理(5)——自动以管理员身份运行批处理脚本

    在日常运维工作中,为方便对windows用户进行系统安装或配置等,使用Windows自带的批处理(bat文件)是一种最为简单快速的方法. 批处理脚本不会默认已管理员身份运行,一般情况下,我会将脚本命名 ...

  5. 关于 Windows 下 Qt 开发,这个问题必须要搞清楚!

    小伙伴们,大家好,小北师兄又来喂饭啦,从上次写完<一个例子让你秒懂 Qt Creator 编译原理>后,师兄对于 Qt 的一些环境配置有了更深的理解,这对师兄进行 Qt 的后续学习起到了很 ...

  6. 4.2 万 Star!开发 Web 和移动端应用的全栈平台

    [导语]:Meteor 是一个用 JS 开发现代 Web 应用程序的平台.它是开源的,在 GitHub 上有 4.2 万 Star. Meteor 是什么? 官方文档是这样描述 Meteor 的:Me ...

  7. Arduino库和STM32的寄存器、标准库、HAL库、LL库开发比较之GPIO

    标题: Arduino库和STM32的寄存器.标准库.HAL库.LL库开发比较之GPIO 作者: 梦幻之心星 sky-seeker@qq.com 标签: [#Arduino,#STM32,#库,#开发 ...

  8. 第14章:部署Java网站项目案例

    1 说明 (1) 项目迁移到k8s平台的流程 1) 制作镜像 dockerfile.docker+jenkins持续集成.镜像分类:基础镜像.中间镜像.项目镜像 2) 控制器管理pod 控制器管理po ...

  9. 37、linux下安装python3.6和django

    37.1.安装python: 1.python介绍: python是一种面向对象的,解释型的计算机语言,它的特点是语法简介,优雅,简单易学.1989年诞生,Guido(龟叔)开发. 编译型语言:代码在 ...

  10. 收集雪花(map)

    题目描述 不同的雪花往往有不同的形状.在北方的同学想将雪花收集起来,作为礼物送给在南方的同学们.一共有n个时刻,给出每个时刻下落雪花的形状,用不同的整数表示不同的形状.在收集的过程中,同学们不希望有重 ...