入门Spring Boot

课程目录

  • 初始SpringBoot框架

  • SpringBoot快速搭建和入门

  • SpringBoot访问静态资源文件

  • SpringBoot全局异常处理

  • SpringBoot中YAML和Properties详解

  • SpringBoot中使用Freemarker

  • SpringBoot中使用Thymeleaf

  • SpringBoot整合SpringDataJPA

  • SpringBoot整合MyBatis(含Generator版本)

  • SpringBoot整合MongoDB

  • SpringBoot整合Redis

  • SpringBoot集成邮箱服务

  • SpringBoot之定时任务详解

一、为什么要使用SpringBoot

  • 导入依赖必须要统一版本,因为太多了依赖了会版本会冲突(会依据大数据分享获取最新最稳定的版本 spring.io官网获取的)

  • 配置太多了且每次都一样,大部分工程,配置每次都是一样的,从一个地方拷贝到另外一个地方.且Spring发展10多年,各种配置版本太多,对于很多程序员来说,分不清哪个是有效,哪个无效

  • 部署太麻烦.需要tomcat部署,项目结构也需要照着Java EE的目录结构来写(以后tomcat用不到了)

二、什么是SpringBoot(重点面试题)

  • springboot是一个快速整合第三方的框架

  • 底层是采用的maven继承的方式实现的(子项目能够继承父项目的pom文件)

  • springboot简化了Spring的应用开发,采用约定大于配置的理念

  • 开箱即用,简化了xml的配置,完全注解化(没有xml文件了不会又bean标签@Bean)

  • 内置有Http服务器(Netty和Tomcat),帮助开发者能够实现快速开发

  • SpringBoot的Web组件默认集成的是SpringMVC框架SpringMVC是控制层(简化web开发,学习0成本)

三、SpringBoot是如何发展出来的

  • 这个要从Spring的发展史讲起

  • Spring 1.x 时代 在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xml配置文件中切换。

  • Spring 2.x时代 随着DK 1.5带来的注解支持,Spring2.x可以使用注解对Bean进行申明和注入,大大的减少了xml配置文件,同时也大大简化了项目的开发。 那么,问题来了,究竟是应该使用xml 还是注解呢? 最佳实践: -应用的基本配置用xml,比如:数据源、资源文件等 -业务开发用注解,比如: Service 中注入bean等

  • Spring 3.x时代 从Spring3.x开始提供了Javé配置方式,使用Java配置方式可以更好的理解你配置的 Bean,现在我们就处于这个时代,并且Spring4.x和Spring boot都推荐使用java配置的方式。

  • Spring 5.x时代 Spring5.x是Java 界首个支持响应式的 web框架,是Spring 的一个重要版本,距离Spring4.x差不多四年。在此期间,大多数增强都是在SpringBoot 项目中完成的,其最大的亮点就是提供了完整的端到端响应式编程的支持(新增spring webFlux模块)。

  • Spring webFlux同时支持使用旧的Spring MVC注解声明' Reactive Controller '。和传统的' MVC controller'不同,' Reactive Controller ' 操作的是非阻塞的 ' ServerHttpRequest ' 和 ' serverHttpResponse ',而不再是spring Mc 里的 HttpServletRequest 和HttpServletResponse。

  • 至此也代表着Java 正式迎来了响应式异步编程的时代。

四、SpringBoot和SpringMVC的关系

  • SpringBoot的web组件默认集成的是springMVc框架。SpringMVc是控制层。

  • 讲到springBoot,肯定有不少人会联想到springCloud(微服务)

五、SpringBoot和SpringCloud关系

  • SpringCloud和springBoot是依赖关系,SpringCloud不能独立存在,必须依赖于springBoot组件,使用SpringNVc编写Http协议接口,同时springBoot+SpringCloud才是一套完整的微服务解决框架。

  • springBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架

讲到SpringCloud,可能大家又会联想到另一个名词,它就是微服务

六、SpringBoot的优缺点

优点

快速构建项目

对主流开发框架的无配置集成

项目可独立运行,无需外部依赖Servlet容器

提供运行时的应用监控

极大地提高了开发、部署效率

与云计算的天然集成

缺点

  • 版本迭代速度很快,一些模块改动很大

  • 由于不用自己做配置,报错时很难定位

  • 网上现成的解决方案比较少

七、系统要求

  • jdk1.8: Spring Boot2.0要求JDK必须是1.8及以上

  • maven3.5.4: Spring Boot2.0要求Maven必须3.5以上

  • IntelliJ IDEA2018.2:你们随便,我的反正是用的这个

  • SpringBoot 2.x.RELEASE: 2.x;

  • MySQL8.0.13:建议使用这个版本的MySQL

  • Spring Framework 5.x及以上

八、第一个SpringBoot项目的创建

1.创建一个Maven工程(youruike_springboot)----https://start.aliyun.com/

2.@SpringBootApplication核心注解

springboot的核心注解,复合注解,不是一个独立的注解,而是多个注解合在一起的

3.spingboot的注解

  • @SpringBootApplication: Spring BootM用仍工i未Rot日:置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用;(读:A扑(pu)K显)

  • @SpringBootConfiguration :加载springboot的配置,配置类上来标注这个注解,配置类也是容器中的一个组件@Component (读:堪飞隔锐显)

  • @EnableAutoConfiguration :加载完之后执行自动配置(av薄a他咳飞kv显)

  • @ComponentScan :扫包(会扫描主配置类所在的包)

4.pom

  • . parent:继承了Spring Boot的 Parent,表示我们是一个 Spring Boot 工程

  • spring-boot-starter-web:包含了spring-boot-starter还自动帮我们开启了Web支持

5.功能演示

@RequestMapping("hello")
public String hello(){
    //1.引入fastjson   jackson
    //2.springmvc

    return "hello springboot";
}

6.神奇之处

  • 没有配置 web.xml

  • 没有配置application.xml,Spring Boot帮你配置了

  • 没有配置application-mvc.xml,Spring Boot帮你配置了

  • 没有配置Tomcat,Spring Boot内嵌了Tomcat 容器

7.springboot单元

@Autowired
private ApplicationContext ioc;

@Test
void getBean() {
    String[] names = ioc.getBeanDefinitionNames();
    for (String name:names
         ) {
        System.out.println(name);
    }
}

8.Spring Boot常用配置

spring-boot-starter-parent:Spring Boot的版本仲裁中心,以后我们导入依赖默认是不需要写版本;(没有在dependencies里面管理的依赖仍然需要声明版本号) spring-boot-starter-web:spring-boot场景启动器,帮我们导入了web模块正常运行所依赖的组件(不需要外置Tomcat,默认端口8080...); SpringBoot开发手册:Using Spring Boot

(1)自定义 Banner

我们在src/main/resources目录下新建一个banner.txt

通过Text to ASCII Art Generator (TAAG)

网站生成字符串,将网站生成的字符复制到banner.txt 中

再次运行这个程序

${AnsiColor.BLUE}
   ____  __  __   __   __
U /"___| \ \/"/   \ \ / /
\| | u   /\  /\    \ V /
 | |/__ U /  \ u  U_|"|_u
  \____| /_/\_\     |_|
 _// \\,-,>> \\_.-,//|(_
(__)(__)\_)  (__)\_) (__)
    _
U  /"\  u     ___
 \/ _ \/     |_"_|
 / ___ \      | |
/_/   \_\   U/| |\u
 \\    >>.-,_|___|_,-.
(__)  (__)\_)-' '-(_/
   _      ____      __   __
  |"|    / __"| u   \ \ / /
U | | u <\___ \/     \ V /
 \| |/__ u___) |    U_|"|_u
  |_____||____/>>     |_|
  //  \\  )(  (__).-,//|(_
 (_")("_)(__)      \_) (__)

9.关闭特定的自动配置

关闭特定的自动配置使用@SpringBootApplication注解的exclude参数即可,这里以关闭数据源的自动配置为例

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}

九、访问静态资源文件

1.默认配置

  • 在我们开发web应用的时候,需要引用大量的js、css、图片等静态资源

  • Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则:

    • 1.classpath: /static

    • 2.classpath : / public

    • 3.classpath: /resources

    • 4.classpath:/META- INF /resources

  • 举例:我们在src/main/resources目录下新建public、resources、static、/META- INF /resources四个目录,并分别放入1.jpg 2.jpg 3.jpg 4.jpg四张图片。然后通过浏览器分别访问:

    • 1.http : // localhost: 8080/1.jpg

    • 2.http:// localhost:8080/2.jpg

    • 3.http: // localhost:8080/3.jpg

    • 4.http:/ / localhost:8080/4.jpg

  • 地址均可以正常访问,Spring Boot默认会从 public resources static /NETA-INF/resources四个目录里面查找是否存在相应的资源。

2、在application.properties配置

#静态文件请求匹配方式
spring.mvc.static-path-pattern=/youruike/**
#修改默认的静态寻址资源目录多个使用逗号分隔
spring.resources.static-locations = classpath:/META-
INF/resources/ ,classpath:/resources/ ,classpath:/static/,classpath:/public/ ,classpath: / mytest/

配置中配置了静态模式为/youruike/*,访问时候就只能通过/youruike/xx来访问。

访问地址: http://localhost:8080/youruike/5.jpg

3、自定义静态资源地址

MywebMvcconfiguration webMvcConfigurer
@override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
	registry.addResourceHandler(" /mystatic/*" ).addResourceLocations( "classpath : / mystatic/ " );
}

访问地址: http://localhost:8080/mystati/6.jpg

十、YAML和Properties详解

1.Yaml的介绍

SpringBoot使用一个全局的配置文件,配置文件名是固定的;

  • application.properties

  • application.yml/yaml

  • bootstrap.properties.

  • bootstrap.yml

因为bootstrap.properties的加载是先于application.properties的。

因为bootstrap.yml的加载是先于application.yml的。

配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;

YAML (YAML Ain't Markup Language)

YAML A Markup Language:是一个标记语言

YAML isn't Markup Language:不是一个标记语言;

标记语言: 以前的配置文件; 大多都使用的是 xxx.xml文件; YAML: 以数据为中心,比json、xml等更适合做配置文件

Yaml的使用

<! --导入配置文件处理器,配置文件进行绑定就会有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</ artifactId><optional>true</ optional>
</ dependency>
public class Teacher {
	private String name;
	private string introduce;
	public String getName( ) {
		return name;
	}
	public void setName ( string name) {
		this.name = name;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值