SpringBoot
1.Spring团队在2014年随着Spring 4.0一起发布;大纲:入门,配置,日志,Web开发,Docker,数据访问(Spring Data),内部原理;SpringBoot一站式解
决J2EE企业级问题,构建应用;Spring Cloud是分布式整体解决方案,网状互联互调;Spring Cloud Data Flow流式计算,批处理。
2.优点:1).快速创建Spring项目以及与主流框架集成;2).嵌入式Servlet容器,无需打jar包;3).starters自动依赖和版本控制;4).自动配置,也可修改默
认值;5).无需xml;6).运行时应用监控;7).与云计算的天然集成。缺点:对Spring框架的再封装,入门容易,精通难;需要了解底层api才能进行深度定制。
3.微服务:2014年,Martin Fowler,是一种架构风格;与之对应的是单体应用;一个应用应该是一组小型服务,每一个元素都是可独立替换和独立升级的单元
,相互通过HTTP互通。
4.环境准备:JDK,maven,IDE,Spring Boot;maven-settings.xml-profiles添加控制jdk版本;IDE集成maven。
5.HelloWorld项目:省略了包扫描,视图解析器,前端控制器等等繁琐配置即可运行;可不用配置tomcat,会自带tomcat-embedded;
5.1:开发:创建maven项目;导jar包;编写主程序;编写controller[service];启动主程序的main方法即可;
5.2:部署:导spring-boot-maven-plugin插件;maven package生命周期;打成可执行jar包,可直接java -jar运行。
6.HelloWorld探究:
6.1:pom文件里,<parent>节点主要管理常用依赖的版本号;<dependency>节点引用了web的场景启动器,引入一系列依赖;
6.2:SpringBoot将所有的场景抽取出来,做成一些starter,只需要在项目引入就能导入所有依赖;
6.3:主程序类:@SpringBootApplication,说明这个类是主配置类,应该运行该类的main方法启动应用;
6.3.1:@SpringBootConfiguration:组合注解,配置类,相当于配置文件,也是容器中的组件@Component;
6.3.2:@EnableAutoConfiguration:组合注解,开启自动配置,下有@AutoConfigurationPackage(扫描自定义的组件,加载自动配置类);
6.3.2.1:@Import(AutoConfigurationPackages.Register.class):将主配置类所在包里组件都扫描到Spring容器;
6.3.2.2:@Import(EnabledAutoConfigurationImportSelector.class):给容器导入很多自动配置类,就是导入场景需要的所有组件并配置。
7.Spring Initializer:向导填写项目信息,然后导入模块;主程序已经写好,只需要写controller;生成了resources文件夹(static保存静态资源;
tempaltes保存模板页面,因为SB默认jar包使用嵌入式Tomcat,不支持jsp页面;app.properties,修改默认配置)。
8.@RestController注解相当于@ResponseBody+@Controller合在一起的作用。
9.SB使用一个全局的配置文件app.properties或app.yml;放在src/main/resources或类路径/config下。
10.YAML:以数据为中心;基本语法:键(空格)值对;空格缩减表示层级;大小写敏感;值的写法:
10.1:字面量:直接写;字符串不用加引号;双引号不会转义特殊字符,单引号会;
10.2:对象(Map):在下一行写k: v,注意缩进;行内写法:friends: {name: zhansan,age: 18};
10.3:集合:多行写法以 - 打头;行内写法:pets: [cat,dog,pig];
10.4:例子:在yml文件里配置bean的属性,在bean加@ConfigurationProperties(prefix="person")注解,需要导入configuration-processor依赖;还需
要@Component;
10.5:properties也可以,只是要注意编码问题。
11.bean属性注入还可以:@Component+@Value,这里@Value的写法和xml里<property>一样,支持字面量,${},#{SpEL};
11.1:@ConfigurationProperties取值可以批量注入属性,支持松散语法,支持JSR303数据校验;支持复杂类型封装;但不支持SpEL;
11.2:@Value需要一个个属性指定@Value,也不支持松散语法和数据校验;也不支持复杂数据;但支持SpEL;
11.3:如果在业务逻辑里获取某项值,就用@Value;bean和配置文件映射就用@ConfigurationProperties。
12.@PropertySource和@ImportResource:
12.1:@PropertySource(value={需要加载的除了全局配置文件外的任意配置文件});
12.2:@ImportResource(locations={自己编写的想生效的spring配置文件beans.xml})标注在配置类上;但SB推荐给容器中添加bean的方式:专门写一个配
置类,加@Configuration,@Bean标注在方法上(返回值添加到容器,id为方法名)。
13.配置文件占位符:${random.uuid},${前面定义的属性:默认值}。
14.profile多环境支持:
14.1:多profile文件:主配置文件app-{profile}.properties/yml;默认是app.properties;激活:在主文件指定;
14.2:yml的文档块指定:---分割;激活:在文件开始指定active;
14.3:激活:命令行:--spring.profiles.active=dev;在IDE里配置程序参数验证;也可以maven打包后,在java -jar指定。
15.切换日志框架:1).slf4j+log4j,先排除依赖,再引入依赖;2).slf4j+log4j2,把spring-boot-starter-logging换掉。
16.web开发的webjars和静态资源文件夹位置。
17.thymeleaf的引入;使用:属性以及优先级;表达式语法。
18.spring MVC的自动配置,扩展配置,全面接管。

浙公网安备 33010602011771号