ToB企服应用市场:ToB评测及商务社交产业平台
标题:
微服务springboot详细解析(一)
[打印本页]
作者:
络腮胡菲菲
时间:
2024-12-5 02:59
标题:
微服务springboot详细解析(一)
目次
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企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4