学习目标:
1.为什么学习springboot
2.学习springboot
3.熟练掌握springboot的设计模式
学习内容:
为什么学习springboot?
因为SSM框架需要大量的xml的配置导致开发繁琐 开发效率低;有大量的jar包需要我们手动管理,容易造成版本的冲突;将项目打成war包 扔到webapp的目录下面,项目部署麻烦
1.1springboot的优点:
1.快速创建独立运行的Spring项目以及与主流框架集成
2.使用嵌入式的Servlet容器,应用无需打成WAR包
3.starters自动依赖与版本控制
4.大量的自动配置,简化开发,也可修改默认值
5.无需配置XML,无代码生成,开箱即用
6.准生产环境的运行时应用监控
7.与云计算的天然集成
1.2创建springboot项目的准备
jdk1.8
maven3.x
IntelliJ IDEA 2018
需求: 浏览器发送hello请求,服务器接收并处理请求,向浏览器页面返回一个helloworld字符串
1.3步骤
先创建Maven项目
在添加依赖
在pom.xml里面导入起步依赖
<!--spring-boot-starter-parent整合第三方常用框架的依赖信息-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
SpringBoot要集成SpringMvc进行Controller的开发 所以项目要导入web的启动依赖
<!--spring-boot-starter-web 是springboot整合springMVC是maven的依赖继承关系 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
然后再编写controller
接着编写启动类
1.4注解的作用:
1.@EnableAutoConfiguration注解:作用在于让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置
这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。由于spring-boot-starter-web添加了Tomcat和Spring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置。
@EnableAutoConfiguration扫描的时候,只能扫描到当前类
2.@ComponentScan注解
由于@EnableAutoConfiguration注解只能扫描当前的类,这样对Controller里面的类进行管理很不方便,这个时候,我们可以用@ComponentScan注解来配置扫描包的范围。
我们可以将启动器抽取成一个单独的类
@EnableAutoConfiguration
@ComponentScan(“com.oracle.controller”)
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
}
但是使用@ComponentScan进行扫包的时候,包比较多的情况下,写起来比较麻烦。比如我要扫码多个包:
@ComponentScan(basePackages = {“com.oracle.user.controller”,“com.oracle.order.controller”})
我们可以使用@SpringBootApplication,一劳永逸的解决以上问题
@SpringBootApplication 被 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解所修饰,换言之 Springboot 提供了统一的注解来替代以上三个注解
扫包范围:在启动类上加上@SpringBootApplication注解,当前包下或者子包下所有的类都可以扫到。
1.5 使用@SpringBootApplication注解编写启动类
但是此时需要注意App类所在的包中的位置
重点
1.springboot项目中的细节
<!--spring-boot-starter-parent整合第三方常用框架的依赖信息-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
他的父项目是
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
它真正管理springboot项目里面的所有依赖版本,以后我们导入依赖默认是不需要写版本;(没有在dependencies里面管理的依赖自然需要声明版本号)
2.启动器
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
spring-boot-starter:spring-boot场景启动器;帮我们导入了web模块正常运行所依赖的组件;
Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter 相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动
课后问题
1.Integer和Int有什么区别
1>.Integer是int的包装类,int则是java的一种基本数据类型;
2>.Integer变量必须实例化后才能使用,而int变量不需要;
3>.Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值;
4>.Integer的默认值是null,int的默认值是0。
学习计划:
1.可以熟练完成当天任务
2.掌握当天的理论题
3.预习下一天的课
今天的总结到此结束 剩下的