springboot1-2(1的补充)
spring boot概述及自动配置原理
SpringBoot的优缺点:
优点: 快速构建项目。 对主流开发框架的无配置集成。 项目可独立运行,无须外部依赖Servlet容器。 -提供运行时的应用监控。
微服务与单体应用的区别?
微服务需要部署N个应用,还需要其它外部应用支撑(注册中心、网关等),部署、运维成本较高。集群、高可用方案无需额外处理; 单体应用只需要部署一个应用即可,相对于微服务部署、运维成本较低。高可用、集群方案需要另外处理;
1.1 概述
Spring Boot 是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。习惯优于配置
1.2 为什么使用Spring boot
J2EE笨重的开发、繁多的配置、低下的开发效率、复杂的部署流程、第三方技术集成难度大。
总结:因为它简单
1.3 Spring boot是什么
一站式整合所有应用框架的框架;并且完美整合Spring技术栈; https://spring.io/projects
Spring Boot来简化Spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用
Starters:场景启动器 (你只要导入对应的场景启动器,当前场景启动器依赖的一堆jar包,当前场景需要的jar包都给你导进去)
@EnableAutoConfiguration //允许自动配置
1.4 Spring boot 优点
-
快速创建独立运行的Spring项目以及与主流框架集成
-
使用嵌入式的Servlet容器,应用无需打成WAR包
-
starters自动依赖与版本控制(场景启动器)
-
大量的自动配置,简化开发,也可修改默认值
-
无需配置XML,无代码生成,开箱即用
-
准生产环境的运行时应用监控
-
与云计算的天然集成
案例:
自定义配置文件时,需加入@PropertySource注解 value=配置文件名
@Component
@ConfigurationProperties(prefix = "person")
@PropertySource(value = "person.properties")
public class Person {
@Value("${person.name}")
private String name;
private int age;
private String sex;
private Dog dog;
private List pets;
数据效验
加入
<!--效验的场景启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
效验email
@Component
@ConfigurationProperties(prefix = "person")
//@PropertySource(value = "person.properties")
@Validated
public class Person {
//@Value("${person.name}")
@Email
@NotNull
private String name;
/*@Value("${person.age}")*/
private int age;
private String sex;
private Dog dog;
private List pets;
导入一个这个就相当于把Spring、SpringMVC,tomcat导入了
//导入web场景启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
通过java代码来实现bean的注入,不再使用xml形式了
@ConditionalOnMissingBean
^条件注解,如果有这个类型的bean就不再注入,没有就注入
要想测试,需要先把bean里交给sping容器管理的compent注解去掉
程序入口注入两个加上条件注解
控制层返回数据
不管返回person1还是2 结果都是注入张三1
两个条件注解去掉的话,都会注入,控制层返回谁前台就显示谁
条件注解作用:由此可以看出自动配置就是根据条件注解来辅助实现的