第一单元SpringBoot入门
1【授课重点】
1)SpringBoot空项目搭建,
2)SpringBoot发展历史,
3)热部署,
4)spring-boot-starter-web,
2【考核要求】
1)SpringBoot空项目搭建,
2)RestController与Controller讲解,
3)SpringBoot jsp页面
4)在boot项目里使用jstl标签
3【教学内容】
3.1课程导入
一、为何要有SpringBoot项目
二、SpringBoot和微服务的关系(没有boot项目就没有微服务)
三、公司新建项目采用的全是微服务
四、Springboot项目的稳定版本和最新版本(1.5,2.x)
五、SpringBoot的微服务比dubbo的微服务在开发和设计上更先进
3.2SpringBoot介绍
Spring Boot是一个基于Java的开源框架,用于建立微服务。它由Pivotal Team开发,用于构建独立的生产就绪Spring应用。 本章将介绍Spring Boot,并熟悉基本概念。
3.2.1微服务是什么?
微服务(Micro Service)是一种容许开发人员独立开发和部署服务的体系结构。每一个运行的服务都有本身的流程,这实现了轻量级模型以支持业务应用程序。
例如
--员工微服务
--部门微服务
--教师微服务
--学生微服务
--班级微服务
----学生查询的时候,会调用班级微服务
----员工查询的时候,也会调用部门微服务
----思考在dubbo学习的时候,周考时,是否是让咱们创建两个微服务(provider,server)?两个微服务能够分开部署,性能会大大增长。
优势:
Spring Boot为其开发人员提供如下优点 -
易于理解和开发Spring应用
提升生产力
缩短开发时间
设计目标
Spring Boot的设计目标以下 -
避免在Spring中进行复杂的XML配置
以更简单的方式开发生产就绪的Spring应用程序
隐藏和默认的方式使用Spring4
减小开发时间并独立运行应用程序
提供一种更简单的应用程序入门方式【前提是会用spring4,其实boot项目是易用,难精通,表面上是使用了boot项目,实际对boot,spring4,和springmvc和spring容器之间的关系难以掌握】,这里理论的内容又每每是面试的重点
要想学会SpringBoot项目,必定要深入理解Spring4,对每一个注解都要充分理解。每一个注解在项目里有什么功能html
3.2.2为何选择Spring Boot?
选择Spring Boot,由于它提供的功能和优势以下 -
它提供了一种灵活的方法来配置Java Bean,XML配置和数据库事务。
它提供强大的批处理和管理REST端点。(如今流行的rest请求,而不是咱们过去学习的socket的请求方式,或者是httpclient的请求方式)
在Spring Boot中,一切都是自动配置的; 无需手动配置。
它提供基于注释的spring应用程序。
简化依赖管理。
它包括嵌入式Servlet容器。
支持filter和interceptor。
3.2.3Spring Boot是如何工做的?
Spring Boot会根据使用@EnableAutoConfiguration批注添加到项目中的依赖项自动配置应用程序。 例如,若是MySQL数据库在类路径上,但还没有配置任何数据库链接,则Spring Boot会自动配置内存数据库。
【boot 启动类】重点
spring boot应用程序的入口点是包含@SpringBootApplication注释和main方法的类。
Spring Boot使用@ComponentScan注释自动扫描项目中包含的全部组件。
@ComponentScan(package name)
扫描多个包用逗号分隔,
Scan,扫描的意思
3.2.4Spring Boot Starters
处理依赖管理对于大项目来讲是一项艰巨的任务。 Spring Boot经过提供一组依赖项来解决此问题,以方便开发人员。
每个模块,在boot项目里,都有一个对应的starter。
例如,若是要使用Spring和JPA进行数据库访问,则在项目中包含spring-boot-starter-data-jpa依赖项就足够了。
请注意,全部Spring Boot启动程序都遵循相同的命名模式spring-boot-starter-,其中表示它是应用程序的一种类型。
例子
请看下面的Spring Boot启动器,以便更好地理解 -
Actuator 监控boot项目运行时占用内存的状况】
Spring Boot Starter Actuator依赖关系用于监视和管理应用程序。 其代码以下所示 -
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
XML
Spring Boot Starter Security依赖项用于Spring Security。 其代码以下所示 -
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
XML
Spring Boot Starter Web依赖项用于编写Rest端点。 其代码以下所示 -
【Web starter 是很是经常使用的starter】
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
--这个starter很是经常使用
--通常管这个starter叫springboot的web starter
XML
Spring Boot Starter Thyme Leaf依赖项用于建立Web应用程序。 其代码以下所示 -
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
这个是springboot推荐的开发html页面的新技术。
XML
Spring Boot Starter Test依赖项用于编写测试用例。 其代码以下所示 -
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test<artifactId>
</dependency>java
3.3自动配置
【boot设计的目标是(为了更少的配置文件),可是因为版本过多,各个版本之间仍是有些差异(自动配置没有boot项目说的那么好),这不是boot的主要优势】
【boot的优势并非配置大于约定(说白了就是配置的xml的内容少些一些),而是微服务,微服务是boot流行起来的主要缘由,是不一样于传统的开发模式,其余的全部语言(面向对象和非面向对象语言)都不具有这个特色】
【每个boot项目就是一个微服务】
【一个项目能够拆分为多个boot项目,每个boot项目就是一个微服务】
Spring Boot Auto Configuration会根据在项目中添加的JAR依赖项自动配置Spring应用程序。例如,若是MySQL数据库在类路径上,但还没有配置任何数据库链接,则Spring Boot会自动配置内存数据库。
为此,须要将@EnableAutoConfiguration批注或@SpringBootApplication批注添加到主类文件中。而后,将自动配置Spring Boot应用程序。
请注意如下代码以便更好地理解web
3.4Spring Boot应用程序
Spring Boot Application的入口点是包含@SpringBootApplication注释的类。该类应具备运行Spring Boot应用程序的主要方法。 @SpringBootApplication注释包括自动配置,组件扫描和Spring Boot配置。
若是将@SpringBootApplication批注添加到类中,则无需添加@EnableAutoConfiguration,@ComponentScan和@SpringBootConfiguration批注。@SpringBootApplication注释包括全部其余注释。
请注意如下代码以便更好地理解面试
【boot 启动类】spring
**很是重要,须要反复练习
**反复练习后,再看本单元的文字部分
--SpringBootApplication
--SpringApplication
--main函数,和以前学习的main函数有区别吗?
--spring容器在boot项目里如何取得?
什么叫boot的启动类?参考boot的reference,官方文档
经常使用的官方文档有1.5和2.x两个版本。
如何启动boot项目?
Boot启动后的执行顺序?先执行什么,在执行什么?
Boot项目的pom如何写?
Spring的注解在boot项目里能使用吗?
若是在boot项目里使用spring的技术,须要导入spring的jar包吗?数据库
3.5组件扫描
Spring Boot应用程序在应用程序初始化时扫描全部bean和包声明。须要为类文件添加@ComponentScan批注,以扫描项目中添加的组件。
请注意如下代码以便更好地理解 -
【@ComponentScan 是 spring4里 代替xml里 component-scan 标签的注解】
【提问:ssm项目xml里component-scan是什么功能?,没有会怎么样?】
【springmvc里,也有一个scan是什么功能?没有会怎么样?】编程
--项目里有一个service,那么启动boot项目,spring会作什么操做?
--通常状况下,把spring容器比做什么?
--spring的这种管理方式有什么好处?
--默认状况下,spring启动后会作什么操做?
IOC/DI在boot里如何操做?tomcat
3.6下一单元将搭建一个Boot项目
Code demo
【demo 1 boot1th】springboot
启动成功后,能够看到,boot项目启动后能够看到启动类和tomcat的端口号8080
--先整体的看一下项目的代码,从eclipse里
--分析每一行代码,xml算代码吗?
--确认项目里的maven是否好使
--eclipse如何使用maven?
--idea如何使用maven?
--创建maven项目的步骤是什么?
--如何测试本地的maven是否好使?
--启动类的命名为何要有规则?
--spring-boot-maven-plugin是什么?
--boot项目的默认配置文件时什么,放在哪里?mvc
Summary
--创建maven项目
--加载boot的jar包
--创建包结构,com.zz或则com.bw
--增长application.yml或则application.properties
--项目里只能有一个默认配置文件,boot reference规定
--创建启动类
--测试boot项目是否成功
【boot2th】
在boot1th的基础上
启动成功后:以下图
--读取的banner.txt
--6060是boot项目启动的端口号
--com.zz.boot2thApp是启动类
【搭建项目失败没关系,报错也是效果,仔细排错是编程必须的一个步骤,代码不是敲出来的,是调试出来的,只有把错误解决了,才是真正学会springboot】
【boot3th--part difficult point】
@Configuration和@Bean
在哪一个包下
属于spring4的注解,和spring的原理一致
Bean id和getBean()方法和@Autowire注解
IOC/DI
控制反转说的是让spring new一个对象,DI说的是把一个对象赋值给bean里的一个成员
下图第一种形式,通常不采用,即不用@Bean后面带参数的注解,只会默认的便可
从spring容器中取得persion对象,取得ppp对象,取得Ppp对象
【练习:取得p1对象,取得car1对象,取得保时捷car对象】
注意spring4 的原理
结论:@Configuration等价于<beans></beans>
注意观察ssm项目里,spring.xml
回忆一下专业6阶段学习的IOC和DI的原理
全部在Controller里注入的对象,都是spring IOC的生成的对象。若是springIOC没有生成对象,那么在Controller注入的对象必定是null,使用的时候就会发生NullPointerException
【IOC生成对象,DI把对象赋值到一个bean里的某一个属性上】
IOC/DI能大大提升java语言的性能,这是其余语言不具有的,C++语言也没法比拟,spring和java是使java成为排名第一的语言,java排名第一不是由于java是面向对象的语言,是由于java有spring的帮助
须要深入理解Spring IOC/DI
推荐spring in action
To be continued
问题:
--@Configuration,@Bean是什么技术,是boot的技术仍是mvc的技术?
--@Configuration用xml如何代替?
--@Bean如何用xml代替?
3.7【Eclipse下maven的配置】
Windows,preference,maven
Installations as below
User Settings
【Alt+F5】,更新项目的maven jar包
Plus,学校的网很差,下jar包的时候用手机热点,下一次就能够,之后就不用下了
【重要参考文献】
https://www.yiibai.com/spring...
Spring mvc配置xml demo 