SpringBoot2 企业应用实战(1)

SpringBoot 使用的是 2.1.3.RELEASE

第一章 SpringBoot入门

1.Spring框架的组成结构图

当使用Spring框架时,必须使用Spring Core Container(核心容器),它代表了Spring框架的核心机制,Spring Core Container 主要由 org.springframework.core、org.springframework.beans、org.springframework.context 和 org.springframework.expression 四个子包组成,主要提供Spring IoC 容器支持。

2.Spring 框架非常优秀,但是最大问题是“配置过多”。SpringBoot 的出现就是为了解决 Spring 框架存在的问题。Spring Boot的理念:约定优先于配置(COC,Convention Over  Configuration)。SpringBoot 优点:编码简单:推荐使用注解;配置简单:自动配置、快速构建项目、快速集成新技术的能力;部署简单:内嵌Tomcat、Jetty等 Web 容器;监控简单:自带项目监控。

3.SpringBoot 的主要特性

1)SpringBoot 是伴随着 Spring4.0 诞生的,继承了 Spring 框架原有的优秀基因;

2)遵循“约定优先于配置”的原则,使用SpringBoot只需要很少的配置,大部分的时候,直接使用默认的配置即可;

3)对主流开发框架无配置集成,自动整合第三方框架;

4)可独立运行 Spring 项目,SpringBoot 可以以 jar 包的形式独立运行。使用 java -jar 命令或者在项目的主程序中执行 main 函数就可以成功运行项目;

5)内嵌 Servlet 容器,可以选择内嵌 Tomcat、Jetty等 Web 容器,无须以 war 包形式部署项目;

6)提供 starter 简化 Maven 配置,基本上可以做到自动化配置,高度封装,开箱即用;

7)SpringBoot 会根据项目依赖来自动配置 Spring 框架,极大减少了项目所使用的配置;

8)SpringBoot 提供了准生产环境的应用监控;

9)无代码生成和 XML 配置,纯 Java 的配置方式,很简单,很方便。

10)分布式开发,与 SpringCloud 的微服务无缝结合。

4.SpringBoot2.0 的重要改变

1)基于 Spring5 构建,Spring5 的新特性都可以在 SpringBoot2.0 中使用;

2)为各种组件的响应式编程提供了简化配置,如: Reactive Spring Data、Reactive Spring Security等;

3)要求 Java 版本必须是 Java8 或者更高版本,支持Java9;

4)要求 Gradle4或更高版本,Maven3.2 或更高版本

5)要求Tomcat8 或者更高版本, Hibernate5.2 或更高版本, Thymeleaf3 或更高版本。

5.所有的 spring-boot-starter 模块都有约定的默认配置,但是允许开发者调整这些默认的配置用以改变默认的配置行为,这就是所谓的“约定优先于配置”。SpringBoot 的配置按优先级从高到低,主要可以分为:

1)命令行参数

2)系统环境变量

3)位于文件系统中的配置文件

4)位于classpath中的配置文件

5)固化到代码中的配置

高优先级的配置项会覆盖或者优先生效。

6.常用约定

1)项目结构层面的约定

在传统的Java Web 项目中,所有的静态文件和页面都放在 WebContent 目录下,而 Spring Boot 项目的静态文件和页面文件统一放在 src/main/resources 目录对应的子目录下。 src/main/resources/static 目录用于存放各类静态资源文件,比如 css、js 和 image 等; src/main/resources/templates 目录用于存放页面模板文件,比如html和jsp等。

2)SpringMVC框架层面的约定

spring-boot-starter-web 依赖模块默认自动配置一些 SpringMVC 必要的组件。

将 ViewResolver 自动注册到 Spring 容器;将 Converter 和 Formatter 等 bean 自动注册到 Spring 容器;将对 Web 请求的支持和相应的类型转换的 HttpMessageConverter 自动注册到 Spring 容器;将 MessageCodesResolver 自动注册到 Spring 容器。

3)嵌入式 Web 容器层面的约定

spring-boot-starter-web 依赖模块默认使用嵌入式 Tomcat 作为 Web 容器对外提供服务,默认使用 8080 端口对外监听和提供服务。

7.SpringBoot的Maven项目结构

1)Source Folder 不是一个简单的 src,而是 src/main/java,因为 Maven 是一种强约束的工程类型。它对工程的文件命名和格式要求比较严格。其好处是指定了规范,方便代码的移植和理解。而 src/main/java其实是一个路径。

src/main/java:这个目录下存储主要的 Java 代码。

src/test/java:存储测试用的类,比如JUnit的测试一般就存放在这个目录下面。

2)target 文件夹是源码编译后生成的 class 文件存放的地方(如果是一个web应用,还有其他的信息也在编译打包之后放在target里面)。target文件夹下有两个目录。

classes:存放项目代码编译后生成的 class 文件;

test-classes:存放测试代码编译后生成的 class 文件

8.@RestController 注解是一个组合注解,相当于 SpringMVC 中的 @Controller + @ResponseBody 合在一起的作用。

@SpringBootApplication 注解也是一个组合注解,相当于 @Configuration + @EnableAutoConfiguration + @ComponentScan

 

第二章 SpringBoot 核心

1.SpringBoot 启动类与核心注解 @SpringBootApplication

SpringBoot 的项目一般都会有注解 *Application 标注的入口类,入口类中会有一个 main 方法,main 方法是一个标准的 Java 应用程序的入口方法,可以直接启动。@SpringBootApplication 注解是 SpringBoot 的核心注解,用此注解标注的入口类是应用的启动类,通常会在启动类的 main 方法中通过 SpringApplication.run(App.class,args) 来启动 SpringBoot 应用项目。

@SpringBootApplication 其实是一个组合注解,源代码如下:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication { ...... }

@SpringBootApplication 注解组合了 @SpringBootConfiguration 、 @EnableAutoConfiguration 和 @ComponentScan

@SpringBootConfiguration:SpringBoot 项目的配置注解,也是一个组合注解;

@EnableAutoConfiguration:启动自配置,该注解让 SpringBoot 根据当前项目所依赖的 jar 包自动配置项目的相关配置项;

@ComponentScan:扫描配置,SpringBoot 默认会扫描 @SpringBootApplication 所在的同级包以及它的子包,所以建议将 @SpringBootApplication 修饰的入口类放置在项目包下(GroupId + ArtifactId),这样做的好处是,可以保证 SpringBoot 项目自动扫描到项目的所有包。

2.关闭某个自动配置

例如,不想自动配置 Redis,想自己手动配置,通过查看 @SpringBootApplication 的源码可以看出,关闭特定的自动配置应该使用 @SpringBootApplication 下的 exclude 参数,现以关闭 Redis 自动配置为例:

@SpringBootApplication(exclude={RedisAutoConfiguration.class})

3.应用的全局配置文件

可在SpringBoot项目的 src/main/resources 目录下或者类路径的 /config 目录下创建一个全局配置文件 application.properties 或者是后缀为 .yml 的 application.yml 文件,用于修改 SpringBoot 项目的默认配置值。通常我们习惯使用 application.properties 文件作为应用的全局配置文件,一般放到 src/main/resources 目录下。

详细的配置请参考官网:https://docs.spring.io/spring-boot/docs/2.1.3.RELEASE/reference/htmlsingle/#common-application-properties

4.SpringBoot 自动配置原理

5.spring.factories 分析

6.SpringBootWeb 开发的自动配置

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当前课程中商城项目的实战源码是我发布在 GitHub 上的开源项目 newbee-mall (新蜂商城),目前已有 9900 多个 Star,本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 大部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 商城项目功能的讲解,让大家实际操作并实践上手一个大型的线上商城项目,并学习到一定的开发经验以及其中的开发技巧。商城项目所涉及的功能结构图整理如下: 作者寄语本课程录制于2019年,距今已有一段时间。期间,Spring Boot技术栈也有一些版本升级,比如Spring Boot 2.7.x发版、Spring Boot 3.x版本正式版本。对于这些情况,笔者会在本课程实战项目的开源仓库中创建不同的代码分支,保持实战项目的源码更新,保证读者朋友们不会学习过气的知识点。新蜂商城的优化和迭代工作不会停止,不仅仅是功能的优化,在技术栈上也会不断的增加,截止2023年,新蜂商城已经发布了 7 个重要的版本,版本记录及开发计划如下图所示。 课程特色 对新手开发者十分友好,无需复杂的操作步骤,仅需 2 秒就可以启动这个完整的商城项目最终的实战项目是一个企业级别的 Spring Boot 大型项目,对于各个阶段的 Java 开发者都是极佳的选择实践项目页面美观且实用,交互效果完美教程详细开发教程详细完整、文档资源齐全代码+讲解+演示网站全方位保证,向 Hello World 教程说拜拜技术栈新颖且知识点丰富,学习后可以提升大家对于知识的理解和掌握,可以进一步提升你的市场竞争力 课程预览 以下为商城项目的页面和功能展示,分别为:商城首页 1商城首页 2购物车订单结算订单列表支付页面后台管理系统登录页商品管理商品编辑
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值