springboot-1-入门
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-入门的更多相关文章
- SpringData 基于SpringBoot快速入门
SpringData 基于SpringBoot快速入门 本章通过学习SpringData 和SpringBoot 相关知识将面向服务架构(SOA)的单点登录系统(SSO)需要的代码实现.这样可以从实战 ...
- SpringBoot Docker入门,SpringBoot Docker安装
SpringBoot Docker入门,SpringBoot Docker安装 ================================ ©Copyright 蕃薯耀 2018年4月8日 ht ...
- 01-项目简介Springboot简介入门配置项目准备
总体课程主要分为4个阶段课程: ------------------------课程介绍------------------------ 01-项目简介Springboot简介入门配置项目准备02-M ...
- SPRING-BOOT系列之SpringBoot快速入门
今天 , 正式来介绍SpringBoot快速入门 : 可以去如类似 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/refer ...
- SpringBoot快速入门01--环境搭建
SpringBoot快速入门--环境搭建 1.创建web工程 1.1 创建新的工程. 1.2 选择maven工程,点击下一步. 1.3 填写groupid(maven的项目名称)和artifacti ...
- SpringBoot 初入门
SpringBoot 初入门 关于介绍什么之类的就不讲了,主要做一下学习记录. 1. 启动方式 IDEA 启动 命令行启动: mvn spring-boot:run 部署到服务器启动: 先进行打包, ...
- springBoot从入门到源码分析
先分享一个springBoot搭建学习项目,和springboot多数据源项目的传送门:https://github.com/1057234721/springBoot 1. SpringBoot快速 ...
- SpringBoot基础篇-SpringBoot快速入门
SpringBoot基础 学习目标: 能够理解Spring的优缺点 能够理解SpringBoot的特点 能够理解SpringBoot的核心功能 能够搭建SpringBoot的环境 能够完成applic ...
- Springboot快速入门篇,图文并茂
Springboot快速入门篇,图文并茂 文章已托管到GitHub,大家可以去GitHub查看阅读,欢迎老板们前来Star!搜索关注微信公众号 [码出Offer] 领取各种学习资料! image-20 ...
- springboot + kafka 入门实例 入门demo
springboot + kafka 入门实例 入门demo 版本说明 springboot版本:2.3.3.RELEASE kakfa服务端版本:kafka_2.12-2.6.0.tgz zooke ...
随机推荐
- 浅谈Gson和fastjson使用中的坑
相信大家在代码编写中都用过Gson和fastjson吧,用来进行 Java对象和json字符串之间的转换. 本篇文章就主要介绍博主在工作中使用这两款工具时遇到的坑和对应的解决办法. 觉得有用的可以点个 ...
- [NOIP1998 提高组] 拼数
题目描述 设有 n 个正整数 a1-an,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数. 输入格式 第一行有一个整数,表示数字个数 n. 第二行有 n 个整数,表示给出的 n 个整数 a_ ...
- leetcode:在 D 天内送达包裹的能力
链接:https://leetcode-cn.com/problems/capacity-to-ship-packages-within-d-days/ 我是按照这个思路来做的. 如果随便给一个船的运 ...
- 源码级别理解 Redis 持久化机制
文章首发于公众号"蘑菇睡不着",欢迎来访~ 前言 大家都知道 Redis 是一个内存数据库,数据都存储在内存中,这也是 Redis 非常快的原因之一.虽然速度提上来了,但是如果数据 ...
- csps考前的一些总结(然而可能并没有用)
记录考前的一些复习和总结,如果没有特殊情况不再写新的题解了 图论: 一.最短路: 1.spfa算法中的vis数组记录的是有没有入队,防止多次入队,通过松弛操作来达到最优解 2.dijkstra算法的v ...
- 「10.29」数列(exgxd)·数对(线段树优化DP)·最小距离(最短路,树上直径思想)
好久没碰到这么友好乱搞的题了.... A. 数列 考察的是exgcd的相关知识,最后的答案直接O(1)求即可 B. 数对 本来以为是原题,然后仔细看了看发现不是,发现不会只好乱搞骗分了 事实上直接按$ ...
- Eureka中读写锁的奇思妙想,学废了吗?
前言 很抱歉 好久没有更新文章了,最近的一篇原创还是在去年十月份,这个号确实荒废了好久,感激那些没有把我取消关注的小伙伴. 有读者朋友经常私信问我: "你号卖了?" "文 ...
- [源码解析] 深度学习分布式训练框架 horovod (9) --- 启动 on spark
[源码解析] 深度学习分布式训练框架 horovod (9) --- 启动 on spark 目录 [源码解析] 深度学习分布式训练框架 horovod (9) --- 启动 on spark 0x0 ...
- 什么是WAF?
1.什么是Web Application Firewall(WAF)? WAF或Web Application Firewall通过过滤和监控Web应用程序与Internet之间的HTTP流量来帮助保 ...
- 快速了解ARP
目录 前言 一.MAC 1.MAC地址三种帧 二.ARP 1.五种ARP 三.ARP老化 四.什么时候会发送免费ARP 五.代理ARP 六.ARP欺骗 总结 前言 分别介绍MAC地址和五种ARP报文 ...