皮皮网

皮皮网

【网盘目录站源码】【php定时器源码】【仿视频播放APP源码】spring5源码

时间:2024-12-25 14:55:30 分类:知识

1.【原来这么简单】Springboot多module项目工程搭建这样做就好了。源码
2.Spring Security5后基于Oauth2.1的源码Authorization Server 实现 (官方demo,稍作修改)
3.学习编程|Spring源码深度解析 读书笔记 第5章:容器的源码功能扩展
4.CKEditor5 + SpringBoot实战(五):SpringBoot整合Freemarker

spring5源码

【原来这么简单】Springboot多module项目工程搭建这样做就好了。

       本文通过构建一个包含5个子模块的源码项目,演示SpringBoot在Maven环境下的源码多模块构建过程。

       1、源码网盘目录站源码创建副工程

       a. 通过Spring Initializr创建

       b. 创建后删除不需要的源码文件,保留:.idea文件夹、源码项目pom文件以及一个*.iml文件

       删除前->删除后

       2、源码创建子模块

       a. 右键点击父工程,源码选择New -> Module... 创建子模块。源码依次创建scaffold-common、源码scaffold-api、源码scaffold-dao、源码scaffold-service和scaffold-web共5个模块

       注意:除了scaffold-web子模块创建时选择添加Spring Web依赖,源码其他模块暂时不添加依赖。

       b. 将所有子模块的mvnw、mvnw.cmd文件及.mvn文件夹全部删除

       c. 对于src里的内容,只保留scaffold-web的启动类和配置文件,其他子模块的启动类和配置文件都删除

       3、编辑父工程的pom.xml文件

       a. 将父工程pom.xml文件修改成如下内容,声明父工程包含的php定时器源码子模块,同时抽取统一的配置信息和依赖版本控制,方便子pom直接引用,简化子pom的配置

       1、多模块项目中,父模块打包类型必须是pom。2、因为开发框架是Spring Boot,父模块默认继承spring-boot-starter-parent,因此可以删除spring-boot-starter和spring-boot-starter-test依赖(祖先已经包含了)

       父工程pom.xml如下

       4、编辑子模块pom.xml

       a. 子模块scaffold-common的pom.xml文件内容如下,其中parent要使用顶层的父模块,同时由于项目用到了Lombok,所以还添加了lombok依赖

       由于子模块的配置信息会继承父模块的,所以子模块原来的properties可删掉

       b. 子模块scaffold-dao的pom.xml文件内容如下,同样parent要使用顶层的父模块,并添加scaffold-common子模块,以及数据库相关依赖

       c. 子模块scaffold-service的pom.xml文件内容如下,同样parent要使用顶层的父模块,并添加scaffold-dao子模块依赖

       实际开发中dao模块会引入对数据相关包的依赖,如mysql、Druid连接池、仿视频播放APP源码mybatis等

       d. 子模块scaffold-web的pom.xml文件内容如下,同样parent要使用顶层的父模块,并添加scaffold-service子模块依赖

       注意:之前创建这个子模块的时候已经添加了spring-boot-starter-web依赖,如果没有则手动添加

       e. 子模块scaffold-api的pom.xml文件内容如下,同样parent要使用顶层的父模块

       5、移动项目启动类所在包

       a. 目前项目启动类ScaffoldWebApplication在com.xyy.scaffold包下面,需要将其移动到com.xyy包下

       b. 移动的方式是右键点击ScaffoldWebApplication选择Refactor -> Move,将to package改成com.xyy

       c. 移动后

       6、编写controller并启动

       a. 在com.xyy.scaffoldweb下写个测试Controller

       b. 启动项目

       c. 打开浏览器访问

       搭建项目工程结构

       搭建好多module项目并成功启动后,再来构建项目工程结构

       1、scaffold-web模块

       主要包含一个启动类、一个web和一个config包

       2、scaffold-service模块

       主要包含业务逻辑代码,包含业务接口及其实现类

       3、scaffold-dao模块

       主要包含数据访问层内容,DO定义、DB访问层以及数据库相关配置类

       4、scaffold-common模块

       包含每个模块可能都会用的一些基础类,如:dto、错误码、util工具类以及全局异常类和常量等

       5、统计源码eeds.phpscaffold-api模块

       主要负责外部依赖服务的管理,包含外部依赖服务的定义以及访问部分,以及通过facade模式做的封装类,如:request、response定义;外部服务api接口和外部服务通用枚举等

       6、整体服务的调用过程如下

       整理不易,干货分享就找@搬砖后端研发

       本文中涉及的源码,如有需要可以私聊我呀

Spring Security5后基于Oauth2.1的Authorization Server 实现 (官方demo,稍作修改)

       QQ群

       说明

       Spring Security5之后,实现Oauth不再推荐使用spring-security-oauth2。官方推荐了一种新的方法(github.com/spring-proje...)。

       需要注意的是,该方式支持的不是oauth2,而是oauth2.1。关于oauth2.1的详细介绍,可以参考:oauth.net/2.1/ 和 aaronparecki.com//1...。

       摘自 oauth2.net 网站上对比 oauth2 的说明:

       主要区别(以下使用翻译软件翻译,大致意思没错)

       官方demo运行

       根据 github.com/spring-proje... 上的说明,使用 gradle 命令运行即可。

       复制官方代码(官网 userdetails 使用内存模式,我修改成了 jdbc,图片转文字源码更加直观),使用 postman 进行测试。

       代码位置:authorization-server

       测试

       查看自动创建的表结构:

       浏览器访问:localhost:/h2-console...

       点击 Connect:

       我们看到创建了五张表,打开表会发现数据也被初始化进去了。

       启动项目,请求授权码模式地址:

       输入用户名密码(user1, password):

       勾选授权 scope,点击 submit consent 按钮:

       地址栏:baidu.com/?...

       授权码 code=dPEZCnsiz2WPk5mWdnPImxbSQkbwK7-yPKmgJuR2NHbswtbXWZFjgZr6MEXfIqi8JhRourmlSSYVVfGuCN-ep8jbQwxHsqrUVeeY-1XRHkpqaQ2UM9-ulbTsU0mg

       打开 postman 通过该 code 获取 access_token:

       点击 send,返回:

       JSON 数据如下:

       刷新 token

       请求后结果:

       JSON 数据是:

       简化模式(response_type=token)在 oauth2.1 被移除。

       返回结果如图:

       JSON 结果:

       之前以为是 bug,就提了 issue(github.com/spring-proje...),官方回复不支持。

       但是有扩展方式。还没弄。具体可看我提出的 issue 的作者回复。

       官方使用的是 in-memory 方式。本人通过查看源码发现还支持 jdbc 方式,redis 方式不支持。之后会根据 demo 修改一版 jdbc 方式,以及动态查询用户名密码的方式。

       spring-security-oauth2 的实现方式,可查看我之前的笔记 知乎:zhuanlan.zhihu.com/p/... github 源码:github.com/xpp/spr... 本文内容 github 地址是:github.com/xpp/spri...

       梦想越是美丽,就越是显得遥不可及。可奇怪的是,一旦你下定了决心,很快地,那些梦想就一一成为了现实!

学习编程|Spring源码深度解析 读书笔记 第5章:容器的功能扩展

       深入理解Spring容器的扩展功能:学习笔记

       作者:牛客网-张学友

       在Spring框架中,容器功能的扩展是其强大和灵活的关键。首先,ApplicationContext相较于BeanFactory,提供了更多功能,它是BeanFactory的子类,包含了其所有功能并有所扩充。主要区分点在于ApplicationContext的启动过程和其特有的扩展功能。

       通过`ClassPathXmlApplicationContext`的实例化,开启源码探索之旅。在构造函数和`refresh`方法中,Spring对配置文件解析,并实现了一系列扩展,如环境变量处理、配置文件加载、Spring Expression Language (SPEL)的支持、属性编辑器的注册以及ApplicationContextAwareProcessor的使用等。这些扩展不仅增强了容器的灵活性,还为开发者提供了更丰富的控制选项。

       例如,`refresh`方法中包含了初始化准备工作、BeanFactory的获取和定制、XML文件解析、bean定义填充、Spring表达式解析、属性编辑器注册、BeanPostProcessor的处理、依赖处理和国际化功能等。这些步骤体现了Spring框架的高度可扩展性,使得用户可以根据项目需求定制容器行为。

       总结来说,Spring容器的功能扩展涉及到了配置文件处理、表达式语言、事件监听、国际化等多个方面,使得开发过程更加便捷且易于定制。想了解更多细节,可以参考作者的原文链接和更多读书笔记资源。

CKEditor5 + SpringBoot实战(五):SpringBoot整合Freemarker

       在Spring Boot整合CKEditor编辑器的实战系列文章中,我们将探讨如何在Spring Boot应用中使用CKEditor编辑器,涵盖基本环境搭建、文件上传、数据持久化、CKEditor5安装、与视频插入、内容获取与设置等。

       本系列项目的源码已同步更新至码云与GitHub,您可选择任一平台下载。访问地址如下:

       通过Git命令行工具下载,执行如下命令:

       项目使用FreeMarker作为模板引擎,用于生成动态文本输出。FreeMarker基于Java开发,使用FTL模板语言编写,专注数据展示,不关注数据呈现。

       Maven依赖配置在pom.xml文件中完成,确保SpringBoot项目引入FreeMarker所需依赖。

       SpringBoot应用默认可直接使用FreeMarker,无需额外配置。若需自定义配置,如模板后缀与存放路径,参照官方文档操作。

       Spring MVC的ViewResolver接口用于视图解析,创建FreeMarkerViewResolver实例作为解析器,覆盖默认配置,如缓存关闭、模板前缀与后缀。

       配置FreeMarker模板路径,Spring Boot默认路径为"classpath:/templates/",额外添加自定义路径,确保模板文件查找有序。

       在“/templates/”目录下,使用FreeMarker创建HTML模板。当请求特定URL时,Spring将处理模板并输出数据,模板中通过表达式获取模型内容。

       编写HelloController处理请求,创建hello.html模板,输出“Hello CKEditor5”信息。启动应用,访问“http://localhost:/hello”,验证页面输出。

       本章总结了Spring Boot中集成FreeMarker的流程,介绍了其基本使用与配置。欲了解更多功能与信息,访问FreeMarker官网。下章将详细介绍CKEditor5的安装与初始化。

       如需转载,请注明文章作者及出处,未经许可,请勿擅自转载。