SpringBoot项目总结

SpringBoot优点

  • 快速创建独立运行的Spring项目以及与主流框架集成
  • 使用嵌入式的Servlet容器,应用无需打成war包
  • starters自动依赖与版本控制
  • 大量的自动配置,简化开发,也可修改默认值
  • 无需配置xml,无代码生成,开箱即用
  • 准生产环境的运行时应用监控

SpringBoot缺点

运维和部署难度大

微服务

微服务单元之间通过HTTP的方式进行轻量级通信

  • SpringBoot 构建分布式项目
  • SpringCloud 微服务之间互调
  • SpringCloud 流式计算,批处理

用maven搭建SpringBoot项目

  • 创建maven项目

  • 导入SpringBoot的官方依赖

  • 创建主程序

  • 创建Controller

  • 主程序测测试

  • 简化部署

    springboot的plugin插件能将整个应用打包成jar包, 直接使用java -jar的命令运行

1.pom文件

版本仲裁

springboot的pom依赖的父项目
<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.1.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
</parent>
他的父项目时
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.2.1.RELEASE</version>
    <relativePath>../../spring-boot-dependencies</relativePath>
</parent>
里面定义了java应用需要的jar包的版本

2.导入的依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
</dependency>

spring-boot-starter-web

spring-boot-starter SpringBoot项目的启动器,帮我们导入项目所依赖的依赖

SpringBoot将所有的功能场景抽取出来,做成一个个的starters(启动器),在项目里导入starter,相关场景的所哟襰都会导入进来,需要什么场景就导入什么场景的starter

主程序类,主入口类

@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 {

@SpringBootConfiguration SpringBoot的配置类

​ 标注在哪个类上,表示这是一个SpringBoot的配置类

​ @Configuration 配置类上来标注这个注解

​ 配置类----配置文件 配置类也是容器中的一个组件@Component

@EnableAutoConfiguration 开启自动配置功能

​ 以前我们需要配置的东西,SpringBoot帮我们自动配置,@EnableAutoConfiguration告诉SpringBoot开启自动配置的功能,这样自动配置才能生效

@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {

@AutoConfigurationPackage:自动配置包

​ @Import({Registrar.class})

​ Spring的底层注解@import,给容器中导入一个组件,导入的组件由AutoConfigurationPackages.Registrar.class

​ 将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器中

@Import({AutoConfigurationImportSelector.class})

​ 给容器中注入组件?

​ AutoConfigurationImportSelector:导入哪些组件的选择器;

​ 将所有需要导入的组件以全类名的方式返回,这些组件就会被添加到容器中

​ 会给容器中导入很多自动配置类(xxxAutoConfiguration),就是给容器中导入这个场景所需要的所有组件,并配置好这些组件

​ 有了自动配置类,免去了我们手动编写配置注入功能组件等的工作

​ SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.getBeanClassLoader());

自动配置原理

从AutoConfigure类路径下的META-INF/spring.factories获取指定的类的值(类名),将这些值(xxxAutoConfiguration)作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作,以前需要我们自己配置的东西,这些配置类都帮我们做了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zPBEk2lG-1574851872810)(C:\Users\86176\AppData\Roaming\Typora\typora-user-images\1574416204824.png)]

Spring-boot-autoconfigure-2.2.1.RELEASE.jar

在properties中我们能配置的属性都是来源于这个功能的properties类

根据当前不同的条件判断,决定这个配置类是否生效?

一但这个配置类生效:这个配置类就会给容器中添加各种组件;这些组件的属性是从对应的properties类中获取的,这些类里面的每一个属性又是和配置文件绑定的;

xxxAutoConfiguration;自动配置类 每个配置类相当于以前的配置文件

给容器中添加组件

xxxproperties类:封装配置文件中相关属性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8idaFIUA-1574851872811)(C:\Users\86176\AppData\Roaming\Typora\typora-user-images\1574417239452.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NFpg0TOA-1574851872811)(C:\Users\86176\AppData\Roaming\Typora\typora-user-images\1574417096356.png)]

自动配置类必须在一定的条件下才能生效

我们怎么知道哪些配置类生效???

通过启动debug=true属性;来让控制台打印自动配置报告,这样我们就可以很方便的知道哪些自动配置类生效

SpringBoot精髓

  1. SpringBoot启动会加载大量的自动配置类
  2. 我们看我们需要的功能有没有SoringBoot默认写好的自动配置类
  3. 我们再来看这个自动配置类中到底配置了哪些组件;(只要我们要用的组件有,我们就不需要再来配置了)
  4. 给容器中自动配置类添加组件的时候,会从properties类中获取某些属性,我们就可以在配置文件中指定这些属性的值

配置文件的书写

SpringBoot的配置文件,名称是固定的

  • application.properties
  • application.yml

yml相比于xml更加简洁,以数据为中心

基本语法

k:(空格)v

左对齐属于同一级别

值的写法

k: v

​ 字符串默认不使用单引号或者双引号

​ ""双引号:不会转义字符串里的特殊字符,特殊字符会作为本身想表达的意思

​ ''单引号:会转义特殊字符,特殊字符最终只是一个普通的字符串数据

对象,map(属性和值)(键值对)

persion:
	lastName: zhangsan
	age: 20

行内写法

persion: {lastName: zhangsan,age: 18}

数组(List.Set)

用- 值表示数组中的一个元素

pets: 
- cat
- dog
- pig

行内写法

pets: [cat,dog,pig]

注解使用

@Component				//表示将这个组件交给spring管理
@ConfigurationProperties(prefix = "k")		//表示这个类使用springBoot配置文件里配置的值	需要导入配置文件处理器的依赖(会有提示)
@Value("${persion.name}")
@Value("#{11*2}")
@Value("true")
@Vailidated		校验的注解
@Email			必须是邮箱格式

@ConfigurationProperties和@Value获取值的比较

@ConfigurationProperties@Value
功能批量注入一个个指定
松散语法支持不支持
SpEL不支持支持
JSR303数据校验支持不支持
复杂类型封装支持不支持

只获取单项值,用@Value

用JavaBean来映射,用@ConfigurationProperties

@PropertySource()和@ImportResource区别

@PropertySource(value = {"classpath:自定义的配置文件"})		导入自定义的配置文件
@ImportResource(locations ={"classpath:spring的配置文件"} )	写在启动类上,导入spring的配置文件

springboot推荐方式

@Configuration	表明这是一个配置和类
@Bean			写在方法上,返回方法的返回值给容器

配置文件占位符

随机数
占位符获取之前配置的值,如果没有可以用:来指定默认值

多Profile(环境)模式

多peofile文件—(开发,测试),默认使用application,使用自定义的需要在application.properties中指定

yml里用—文档块来表示

激活 spring.profiles.active=模式

  • 配置文件中指定
  • 命令行方式
  • 虚拟机参数

配置文件有优先级,从高到低加载,互补配置

  • file:./config/
  • file:./
  • classpath:/config/
  • calsspath:/
  • 也可以通过spring.config.location来改变默认配置

多peofile文件—(开发,测试),默认使用application,使用自定义的需要在application.properties中指定

yml里用—文档块来表示

激活 spring.profiles.active=模式

  • 配置文件中指定
  • 命令行方式
  • 虚拟机参数

配置文件有优先级,从高到低加载,互补配置

  • file:./config/
  • file:./
  • classpath:/config/
  • calsspath:/
  • 也可以通过spring.config.location来改变默认配置
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当前课程中博客项目的实战源码是我在 GitHub上开源项目 My-Blog,目前已有 3000 多个 star:本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 大部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 个人博客项目功能的讲解,通过本课程的学习,不仅仅让你掌握基本的 Spring Boot 开发能力以及 Spring Boot 项目的大部分开发使用场景,同时帮你提前甄别和处理掉将要遇到的技术难点,认真学完这个课程后,你将会对 Spring Boot 有更加深入而全面的了解,同时你也会得到一个大家都在使用的博客系统源码,你可以根据自己的需求和想法进行改造,也可以直接使用它来作为自己的个人网站,这个课程一定会给你带来巨大的收获。作者寄语本课程录制于 2020 年,代码基于 Spring Boot 2.x 版本。到目前为止,Spring Boot 技术栈也有一些版本升级,比如 Spring Boot 2.7 发版、Spring Boot 3.x 版本发布正式版本。对于这些情况,笔者会在本课程实战项目的开源仓库中创建不同的代码分支,保持实战项目的源码更新,保证读者朋友们不会学习过气的知识点。课程特色 课程内容紧贴 Spring Boot 技术栈,涵盖大部分 Spring Boot 使用场景。开发教程详细完整、文档资源齐全、实验过程循序渐进简单明了。实践项目页面美观且实用,交互效果完美。包含从零搭建项目、以及完整的后台管理系统和博客展示系统两个系统的功能开发流程。技术栈新颖且知识点丰富,学习后可以提升大家对于知识的理解和掌握,对于提升你的市场竞争力有一定的帮助。实战项目预览    
对于Spring Boot项目的权限管理系统,你可以采用类似的框架和技术来实现。Spring Security仍然是一种常用的选择,它提供了完善的安全性解决方案,并与Spring Boot框架无缝集成。 首先,在你的Spring Boot项目中,你可以引入Spring Security依赖并配置相关的安全策略。你可以定义用户认证的方式,例如基于用户名和密码的认证,或者第三方登录认证。同时,你可以定义用户角色和权限,并将其与具体的资源进行关联。 其次,你可以使用注解或配置方式来限制用户对资源的访问权限。Spring Security提供了一系列注解和配置选项,帮助你在控制器或方法级别上添加权限验证。你可以指定哪些角色或权限可以访问某个资源,以及如何处理未授权的请求。 另外,你也可以通过数据库来管理用户信息和权限信息。你可以定义用户表、角色表和权限表,并建立它们之间的关系。通过操作数据库,你可以进行用户角色和权限的分配、修改和删除等操作。 除了Spring Security,你还可以考虑使用其他相关的库或技术来增强权限管理系统的功能。例如,你可以使用JSON Web Token(JWT)来实现无状态的身份验证,或者使用OAuth 2.0来支持第三方登录。 总结而言,Spring Boot项目的权限管理系统可以通过使用Spring Security来实现用户认证、授权和权限管理等功能。同时,你可以结合数据库来存储用户信息和权限信息,并使用相应的技术来增强系统的功能和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值