目次
1.Spring概述
2.什么是SpringBoot?
3.第一个SpringBoot程序
4.配置参数优先级
5.springboot自动装配原理
6.@SpringBootApplication&SpringApplication.run
7.@ConfigurationProperties(prefix = "")
8.@Validated数据校验
29、聊聊该如何写一个网站_哔哩哔哩_bilibili
学习门路:【狂神说Java】SpringBoot最新教程IDEA版平常易懂_哔哩哔哩_bilibili
1.Spring概述
Spring是一个开源框架,2003 年兴起的一个轻量级的Java 开发框架
目的:Spring是为了解决企业级应用开发的复杂性而创建的,简化开发
那么Spring是如何简化Java开发的?为了低落Java开发的复杂性,Spring采用了以下4种关键策略:
- 基于POJO的轻量级和最小侵入性编程
- 通过IOC、DI和面向接口实现松耦合
- 基于切面(AOP)和惯例进行声明式编程
- 通过切面和模版淘汰样式代码
2.什么是SpringBoot?
学过javaweb的就知道,开发一个web应用,从最初开始接触Servlet结合Tomcat,在前端跑出一个Hello Wolrld程序,是要履历特别多的步调;后来就用了框架Struts,再后来是SpringMVC,到了现在的SpringBoot,过一两年又会有其他web框架出现;什么是SpringBoot呢,就是一个javaweb的开发框架而已,和SpringMVC类似,对比其他javaweb框架的利益,官方说是简化开发,约定大于配置(核心思想,越是简化的东西越是有规定,比如文件夹的上下位置、定名都是有规定的),you can"just run",能迅速的开发web应用,几行代码开发一个http接口即可。
所有的技能框架的发展似乎都遵循了一条主线规律:从一个复杂应用场景衍生一种规范框架,人们只必要进行各种配置而不必要本身去实现它,这时候强大的配置功能成了优点;发展到一定水平之后,人们根据实际生产应用环境,选取此中实勤奋能和设计精华,重构出一些轻量级的框架;之后为了提高开发效率,嫌弃原先的各类配置过于麻烦,于是开始提倡“约定大于配置”,进而衍生出一些一站式的解决方案。
约定大于配置场景:maven、spring、springmvc、springboot、docker...
程序猿的程序 = 数据结构 + 算法(集合框架map、list)
码农的程序 = 面向对象 + 框架
3.第一个SpringBoot程序
看懂pom.xml文件:4、第一个springboot程序_哔哩哔哩_bilibili
在前端发出hello请求
若想要实现热摆设,在创建项目时勾选DevTools即可
4.配置参数优先级
此外,如果你在类似优先级位置同时有application.properties和application.yml,那么application.properties里的属性内里的属性就会覆盖application.yml
微服务 SpringBoot 2.0(二):配置文件解析 - 简书
5.springboot自动装配原理
如果面试的时候问到springboot,谈谈明白,能聊的有自动装配和run()方法,在下面视频10min处7、了解下主启动类怎么运行_哔哩哔哩_bilibili
狂神说SpringBoot02:运行原理初探 - 遇见狂神说 - 博客园
6.@SpringBootApplication&SpringApplication.run
首先我们来看一段启动代码:
- @SpringBootApplication
- public class DemoApplication {
- public static void main(String[] args) {
- SpringApplication.run(DemoApplication.class, args);
- }
- }
复制代码 从上面代码来看,@SpringBootApplication 和 SpringApplication.run长得很相似,但是前者是一个注解,后者是一个SpringApplication类的静态方法,首先我们来看@SpringBootApplication
- @Target({ElementType.TYPE})
- @Retention(RetentionPolicy.RUNTIME)
- @Documented
- @Inherited
- @SpringBootConfiguration
- @EnableAutoConfiguration
- @ComponentScan(
- excludeFilters = {@Filter(
- type = FilterType.CUSTOM,
- classes = {TypeExcludeFilter.class}
- ), @Filter(
- type = FilterType.CUSTOM,
- classes = {AutoConfigurationExcludeFilter.class}
- )}
- )
- public @interface SpringBootApplication {
- ...
- }
复制代码 首先我们来分析@SpringBootConfiguration,在此之前我们要知道@Configuration(它与@Bean是一套的,一个是配置类一个是组件),任何一个标注了@Configuration的Java类界说都是一个JavaConfig配置类,凡是经过该注解修饰的,均被实例化到Spring应用程序上下文中,由spring统一管理生命周期,也就是IOC
至于第二部分SpringApplication.run,分析该方法紧张分两部分,一是SpringApplication实例化,二是run方法的执行,请看以下流程图:
最紧张的功能在我看来有两个:
- 推断应用的类型是平常的项目还是Web项目
- 推断并设置main方法的界说类,找到运行的主类(这也就是为什么run方法要传入启动类的字节码文件)
微服务 SpringBoot 2.0(三):启动分析之@SpringBootApplication - 简书
微服务 SpringBoot 2.0(四):启动分析之SpringApplication.run - 简书
7.@ConfigurationProperties(prefix = "")
如下所示在application.yml中给person配置属性
- person:
- id: 12345
- name: tianming
- age: 18
复制代码 然后实现实体类与配置类绑定,Person就有值了(大概@Value一个一个绑定)
- @Data
- @AllArgsConstructor
- @NoArgsConstructor
- @Component
- @ConfigurationProperties(prefix = "person")
- public class Person {
- private int id;
- private String name;
- private int age;
- }
复制代码 8.@Validated数据校验
Springboot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。我们这里来写个注解让我们的name只能支持Email格式:
- @Component //注册bean
- @ConfigurationProperties(prefix = "person")
- @Validated //数据校验
- public class Person {
- @Email(message="邮箱格式错误") //name必须是邮箱格式
- private String name;
- }
复制代码 常见参数如下所示:
- @NotNull(message="名字不能为空")
- private String userName;
- @Max(value=120,message="年龄最大不能查过120")
- private int age;
- @Email(message="邮箱格式错误")
- private String email;
- 空检查
- @Null 验证对象是否为null
- @NotNull 验证对象是否不为null, 无法查检长度为0的字符串
- @NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
- @NotEmpty 检查约束元素是否为NULL或者是EMPTY.
-
- Booelan检查
- @AssertTrue 验证 Boolean 对象是否为 true
- @AssertFalse 验证 Boolean 对象是否为 false
-
- 长度检查
- @Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
- @Length(min=, max=) string is between min and max included.
- 日期检查
- @Past 验证 Date 和 Calendar 对象是否在当前时间之前
- @Future 验证 Date 和 Calendar 对象是否在当前时间之后
- @Pattern 验证 String 对象是否符合正则表达式的规则
- .......等等
- 除此以外,我们还可以自定义一些数据校验规则
复制代码 额外保举阅读,总结springboot学习的知识:61、聊聊现在和将来_哔哩哔哩_bilibili
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |