sofa-ark-spring-guides

Overview

sofa-ark-spring-guides

实验内容

  • 通过 SOFAArk 提供的官方maven插件将一个 Spring Boot 应用启动成一个标准Ark包,即宿主机;
  • 通过 Telnet指令 动态安装另一个Spring Boot应用到宿主机上,同时在JVM中运行;

任务

1、任务准备

从 github 上将 demo 工程和动态模块工程 克隆到本地

git clone [email protected]:sofastack-guides/sofa-ark-spring-guides.git   // master biz

git clone [email protected]:sofastack-guides/spring-boot-ark-biz.git      // 动态模块

然后将工程 sofa-ark-spring-guides 导入到 IDEA 或者 eclipse 打开,该工程是使用 Spring脚手架 生成;

2、添加 SOFAArk 相关依赖

SOFAArk 当前最新版本号为 2.0.0

<!-- 这里添加动态模块相关依赖 -->
<properties>
    <sofa.ark.version>2.0.0</sofa.ark.version>
</properties>

<dependency>
    <groupId>com.alipay.sofa</groupId>
    <artifactId>sofa-ark-springboot-starter</artifactId>
    <version>${sofa.ark.version}</version>
</dependency>
<dependency>
    <groupId>com.alipay.sofa</groupId>
    <artifactId>sofa-ark-all</artifactId>
    <version>${sofa.ark.version}</version>
</dependency>
<dependency>
    <groupId>com.alipay.sofa</groupId>
    <artifactId>sofa-ark-api</artifactId>
    <version>${sofa.ark.version}</version>
</dependency>

3、修改打包方式

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.6.6</version>

            <configuration>
                <outputDirectory>target</outputDirectory>
                <classifier>ark-biz</classifier>
            </configuration>
            <executions>
                <execution>
                    <id>package</id>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

4. 包结构

5、启动

方式一:IDEA启动

本地启动需要加上启动参数

-Dsofa.ark.embed.enable=true

-Dcom.alipay.sofa.ark.master.biz=sofa-ark-spring-guides

启动后会先启动 Ark 容器

image.png

有该日志出现代表 Ark 容器启动成功,此时该应用处于运行时,可进行动态模块的安装,卸载。

方式二:命令行启动

Ark包是可执行Jar,可直接使用Java -jar的方式启动,先使用 mvn clean package -Dmaven.test.skip=true 进行打包,打包得到 sofa-ark-spring-guides-0.0.1-SNAPSHOT-ark-biz.jar,命令行启动

java -jar -Dsofa.ark.embed.enable=true -Dcom.alipay.sofa.ark.master.biz=sofa-ark-spring-guides sofa-ark-spring-guides-0.0.1-SNAPSHOT-ark-biz.jar

image.png

6、Telnet指令

SOFAArk官方提供了本地运维模块小工具 Telnet指令

telnet localhost 1234

image.png

biz -a

查看该应用中所有模块,当前只有name=sofa-ark-spring-guides,version=1.0.0,status=activated的宿主应用。

现在来尝试运行时动态安装新模块,模块应用使用了另一个Spring Boot应用打成的Ark包 spring-boot-ark-biz-0.0.1-SNAPSHOT-ark-biz.jar, 用于动态安装;

spring-boot-ark-biz项目 下载spring-boot-ark-biz源码(在任务准备阶段已下载好spring-boot-ark-biz),本地运行 mvn clean package -Dmaven.test.skip=true 打包,将在项目根目录 /target 下获得 spring-boot-ark-biz-0.0.1-SNAPSHOT-ark-biz.jar

## 连接 SOFAArk telnet
> telnet localhost 1234

## 安装新模块 spring-boot-ark-biz
sofa-ark>biz -i file:///Users/yuanyuan/yuanyuan/Code/spring-boot-ark-biz/target/spring-boot-ark-biz-0.0.1-SNAPSHOT-ark-biz.jar
Start to process install command now, pls wait and check.

## 查看安装的模块信息
sofa-ark>biz -a
sofa-ark-spring-guides:1.0.0:activated          // 宿主应用
spring-boot-ark-biz:0.0.1-SNAPSHOT:activated    // 动态安装的模块应用
biz count = 2

当前JVM中同时运行着两个Spring Boot应用

两个Spring Boot应用可以是不同的Spring Boot版本,由各自的ClassLoader进行加载;

如,宿主应用sofa-ark-spring-guides是Spring Boot 2.6.6,由org.springframework.boot.loader.LaunchedURLClassLoader加载

SofaArkSpringGuidesApplication start!
Spring Boot Version: 2.6.6
SofaArkSpringGuidesApplication classLoader: org.springframework.boot.loader.LaunchedURLClassLoader@366e2eef

image.png

和 动态安装的模块应用spring-boot-ark-biz是Spring Boot 2.5.0,由Ark框架提供的com.alipay.sofa.ark.container.service.classloader.BizClassLoader加载

SpringBootArkBizApplication start!
SpringBootArkBizApplication spring boot version: 2.5.0
SpringBootArkBizApplication classLoader: com.alipay.sofa.ark.container.service.classloader.BizClassLoader@52a1e30

image.png

Comments
  • 宿主应用和biz应用打包插件不一致

    宿主应用和biz应用打包插件不一致

    • https://github.com/sofastack-guides/sofa-ark-spring-guides/blob/master/pom.xml
    • https://github.com/sofastack-guides/spring-boot-ark-biz/blob/master/pom.xml

    这个演示例子看起来已经是使用sofa-ark 2.0的模式了,打包插件也使用了spring-boot-maven-plugin,但是为啥另外一个biz应用还是使用原来的插件 sofa-ark-maven-plugin

    目前使用 biz -i 并没有达到描述的效果,想确认下都是用 spring-boot-maven-plugin 是否没有问题?演示例子是否需要更新下?

    opened by nisiyong 4
  • build

    build

    Failed to execute goal com.alipay.sofa:sofa-ark-maven-plugin:2.0.4:repackage (default-cli) on project spring-boot-ark-biz: execute dependency:tree failed

    opened by luleilulalei 2
  • tomcat-embed-core存在冲突,但是org.apache.coyote.http11.AbstractHttp11Protocol 在tomcat 9 中就已经不存在了

    tomcat-embed-core存在冲突,但是org.apache.coyote.http11.AbstractHttp11Protocol 在tomcat 9 中就已经不存在了


    APPLICATION FAILED TO START


    Description:

    An attempt was made to call a method that does not exist. The attempt was made from the following location:

    org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer.lambda$customizeRejectIllegalHeader$24(TomcatWebServerFactoryCustomizer.java:209)
    

    The following method did not exist:

    org.apache.coyote.http11.AbstractHttp11Protocol.setRejectIllegalHeader(Z)V
    

    The calling method's class, org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer, was loaded from the following location:

    jar:file:/D:/maven/repository/org/springframework/boot/spring-boot-autoconfigure/2.6.6/spring-boot-autoconfigure-2.6.6.jar!/org/springframework/boot/autoconfigure/web/embedded/TomcatWebServerFactoryCustomizer.class
    

    The called method's class, org.apache.coyote.http11.AbstractHttp11Protocol, is available from the following locations:

    jar:file:/D:/maven/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.60/tomcat-embed-core-9.0.60.jar!/org/apache/coyote/http11/AbstractHttp11Protocol.class
    

    The called method's class hierarchy was loaded from the following locations:

    org.apache.coyote.http11.AbstractHttp11Protocol: jar:file:/D:/maven/repository/com/alipay/sofa/web-ark-plugin/2.0.6/web-ark-plugin-2.0.6.jar!/lib/tomcat-embed-core-9.0.12.jar!/
    org.apache.coyote.AbstractProtocol: jar:file:/D:/maven/repository/com/alipay/sofa/web-ark-plugin/2.0.6/web-ark-plugin-2.0.6.jar!/lib/tomcat-embed-core-9.0.12.jar!/
    

    Action:

    Correct the classpath of your application so that it contains compatible versions of the classes org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer and org.apache.coyote.http11.AbstractHttp11Protocol

    opened by ws615405105 0
  • biz -i 模块安装报错

    biz -i 模块安装报错

    执行biz -i spring-boot-ark-biz-0.0.1-SNAPSHOT-ark-biz.jar后报如下错误:

    2022-10-20 21:48:45.267 ERROR 51116 --- [et-command-1-T2] o.s.boot.SpringApplication : Application run failed

    java.lang.IllegalArgumentException: Unable to instantiate org.springframework.boot.env.EnvironmentPostProcessor [com.alipay.sofa.boot.env.EnvironmentCustomizer] at org.springframework.boot.util.Instantiator.instantiate(Instantiator.java:131) ~[spring-boot-2.6.9.jar!/:2.6.9] at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_302] at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_302] at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1384) ~[na:1.8.0_302] at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) ~[na:1.8.0_302] at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) ~[na:1.8.0_302] at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[na:1.8.0_302] at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:1.8.0_302] at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566) ~[na:1.8.0_302] at org.springframework.boot.util.Instantiator.instantiate(Instantiator.java:118) ~[spring-boot-2.6.9.jar!/:2.6.9] at org.springframework.boot.util.Instantiator.instantiate(Instantiator.java:103) ~[spring-boot-2.6.9.jar!/:2.6.9] at org.springframework.boot.env.ReflectionEnvironmentPostProcessorsFactory.getEnvironmentPostProcessors(ReflectionEnvironmentPostProcessorsFactory.java:72) ~[spring-boot-2.6.9.jar!/:2.6.9] at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.getEnvironmentPostProcessors(EnvironmentPostProcessorApplicationListener.java:122) ~[spring-boot-2.6.9.jar!/:2.6.9] at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEnvironmentPreparedEvent(EnvironmentPostProcessorApplicationListener.java:100) ~[spring-boot-2.6.9.jar!/:2.6.9] at org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.onApplicationEvent(EnvironmentPostProcessorApplicationListener.java:87) ~[spring-boot-2.6.9.jar!/:2.6.9] at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.21.jar!/:5.3.21] at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.21.jar!/:5.3.21] at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.21.jar!/:5.3.21] at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131) ~[spring-context-5.3.21.jar!/:5.3.21] at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:85) ~[spring-boot-2.6.9.jar!/:2.6.9] at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:66) ~[spring-boot-2.6.9.jar!/:2.6.9] at java.util.ArrayList.forEach(ArrayList.java:1259) ~[na:1.8.0_302] at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:120) ~[spring-boot-2.6.9.jar!/:2.6.9] at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:114) ~[spring-boot-2.6.9.jar!/:2.6.9] at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:65) ~[spring-boot-2.6.9.jar!/:2.6.9] at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:343) ~[spring-boot-2.6.9.jar!/:2.6.9] at org.springframework.boot.SpringApplication.run(SpringApplication.java:301) ~[spring-boot-2.6.9.jar!/:2.6.9] at com.alipay.sofa.springbootarkbiz.SpringBootArkBizApplication.main(SpringBootArkBizApplication.java:16) [null-null-20221020214845212-unpack/:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_302] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_302] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_302] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_302] at com.alipay.sofa.ark.bootstrap.MainMethodRunner.run(MainMethodRunner.java:48) [sofa-ark-archive-2.0.4-SNAPSHOT.jar!/:na] at com.alipay.sofa.ark.container.model.BizModel.start(BizModel.java:286) [sofa-ark-container-2.0.4-SNAPSHOT.jar!/:na] at com.alipay.sofa.ark.api.ArkClient.installBiz(ArkClient.java:172) [sofa-ark-api-2.0.4-SNAPSHOT.jar!/:na] at com.alipay.sofa.ark.api.ArkClient.installOperation(ArkClient.java:348) [sofa-ark-api-2.0.4-SNAPSHOT.jar!/:na] at com.alipay.sofa.ark.api.ArkClient.installOperation(ArkClient.java:333) [sofa-ark-api-2.0.4-SNAPSHOT.jar!/:na] at com.alipay.sofa.ark.container.service.biz.BizCommandProvider$BizCommand$1.run(BizCommandProvider.java:249) [sofa-ark-container-2.0.4-SNAPSHOT.jar!/:na] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_302] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_302] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_302] Caused by: com.alipay.sofa.ark.exception.ArkLoaderException: [ArkBiz Loader] spring-boot-ark-biz:0.0.1-SNAPSHOT : can not load class: com.alipay.sofa.boot.env.EnvironmentCustomizer

    opened by ztqztq 0
  • ark服务通信包版本问题

    ark服务通信包版本问题

    sofa.ark.version 为2.0.0 使用ark服务通信能力时引入了包 <dependency> <groupId>com.alipay.sofa</groupId> <artifactId>runtime-sofa-boot-plugin</artifactId> <version>3.1.3</version> </dependency>

    但是该版本和2.0.0版本不匹配,启动时缺少类 com.alipay.sofa.ark.spi.event.BizEvent

    image
    opened by lwy91127 1
  • 执行biz -i 后无反应

    执行biz -i 后无反应

    动态新增ark-biz服务时,执行biz -i xxxx/xxx.jar后,如下

    Start to process install command now, pls wait and check.
    
    sofa-ark>biz -a
    sofa-ark-spring-guides:1.0.0:activated
    biz count = 1
    

    间隔一分钟后查询也毫无反应,依然只有一个master biz ark-biz 单独在IDEA里是可以启动成功的

    opened by jxsrlsl1234 1
  • 执行 biz -i 报错

    执行 biz -i 报错

    java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct. at org.springframework.util.Assert.notEmpty(Assert.java:470) ~[spring-core-5.3.18.jar:5.3.18] at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getCandidateConfigurations(AutoConfigurationImportSelector.java:180) ~[spring-boot-autoconfigure-2.6.6.jar:2.6.6] at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getAutoConfigurationEntry(AutoConfigurationImportSelector.java:123) ~[spring-boot-autoconfigure-2.6.6.jar:2.6.6] at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector$AutoConfigurationGroup.process(AutoConfigurationImportSelector.java:434) ~[spring-boot-autoconfigure-2.6.6.jar:2.6.6] at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGrouping.getImports(ConfigurationClassParser.java:879) ~[spring-context-5.3.18.jar:5.3.18] at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorGroupingHandler.processGroupImports(ConfigurationClassParser.java:809) ~[spring-context-5.3.18.jar:5.3.18] at org.springframework.context.annotation.ConfigurationClassParser$DeferredImportSelectorHandler.process(ConfigurationClassParser.java:780) ~[spring-context-5.3.18.jar:5.3.18] at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:193) ~[spring-context-5.3.18.jar:5.3.18]

    opened by AmarisEx 1
  • 执行biz -i失败

    执行biz -i失败

    2022-05-20 11:16:09.544 ERROR 87482 --- [et-command-1-T3] o.s.boot.SpringApplication : Application run failed

    java.lang.RuntimeException: Meet exception when determine whether to start SOFAArk! at com.alipay.sofa.ark.springboot.listener.ArkApplicationStartListener.onApplicationEvent(ArkApplicationStartListener.java:66) ~[sofa-ark-springboot-starter-2.0.0.jar:na] at com.alipay.sofa.ark.springboot.listener.ArkApplicationStartListener.onApplicationEvent(ArkApplicationStartListener.java:40) ~[sofa-ark-springboot-starter-2.0.0.jar:na] at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.7.jar:5.3.7] at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.7.jar:5.3.7] at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.7.jar:5.3.7] at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131) ~[spring-context-5.3.7.jar:5.3.7] at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:82) ~[spring-boot-2.5.0.jar:2.5.0] at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:63) ~[spring-boot-2.5.0.jar:2.5.0] at java.util.ArrayList.forEach(ArrayList.java:1259) ~[na:1.8.0_291] at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117) ~[spring-boot-2.5.0.jar:2.5.0] at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:111) ~[spring-boot-2.5.0.jar:2.5.0] at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:62) ~[spring-boot-2.5.0.jar:2.5.0] at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:373) [spring-boot-2.5.0.jar:2.5.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:331) [spring-boot-2.5.0.jar:2.5.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1336) [spring-boot-2.5.0.jar:2.5.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1325) [spring-boot-2.5.0.jar:2.5.0] at com.alipay.sofa.springbootarkbiz.SpringBootArkBizApplication.main(SpringBootArkBizApplication.java:19) [null-null-20220520111608511-unpack/:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_291] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_291] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_291] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_291] at com.alipay.sofa.ark.bootstrap.MainMethodRunner.run(MainMethodRunner.java:48) [sofa-ark-archive-2.0.0.jar!/:na] at com.alipay.sofa.ark.container.model.BizModel.start(BizModel.java:277) [sofa-ark-container-2.0.0.jar!/:na] at com.alipay.sofa.ark.api.ArkClient.installBiz(ArkClient.java:172) [sofa-ark-api-2.0.0.jar!/:na] at com.alipay.sofa.ark.api.ArkClient.installOperation(ArkClient.java:348) [sofa-ark-api-2.0.0.jar!/:na] at com.alipay.sofa.ark.api.ArkClient.installOperation(ArkClient.java:333) [sofa-ark-api-2.0.0.jar!/:na] at com.alipay.sofa.ark.container.service.biz.BizCommandProvider$BizCommand$1.run(BizCommandProvider.java:249) [sofa-ark-container-2.0.0.jar!/:na] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_291] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_291] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_291] Caused by: java.lang.RuntimeException: java.lang.NullPointerException at com.alipay.sofa.ark.support.startup.EmbedSofaArkBootstrap.launch(EmbedSofaArkBootstrap.java:60) ~[sofa-ark-support-starter-2.0.0.jar:na] at com.alipay.sofa.ark.springboot.listener.ArkApplicationStartListener.startUpArkEmbed(ArkApplicationStartListener.java:90) ~[sofa-ark-springboot-starter-2.0.0.jar:na] at com.alipay.sofa.ark.springboot.listener.ArkApplicationStartListener.onApplicationEvent(ArkApplicationStartListener.java:53) ~[sofa-ark-springboot-starter-2.0.0.jar:na] ... 29 common frames omitted Caused by: java.lang.NullPointerException: null at com.alipay.sofa.ark.bootstrap.AbstractLauncher.createContainerClassLoader(AbstractLauncher.java:139) ~[sofa-ark-archive-2.0.0.jar:na] at com.alipay.sofa.ark.bootstrap.AbstractLauncher.launch(AbstractLauncher.java:64) ~[sofa-ark-archive-2.0.0.jar:na] at com.alipay.sofa.ark.support.startup.EmbedSofaArkBootstrap.launch(EmbedSofaArkBootstrap.java:58) ~[sofa-ark-support-starter-2.0.0.jar:na] ... 31 common frames omitted

    opened by zengyakun 1
Owner
SOFAStack Guides
Getting Started and Tutorial guides of SOFAStack (http://sofastack.tech/)
SOFAStack Guides
100+ Spring Boot Articles, Tutorials, Video tutorials, Projects, Guides, Source code examples etc

YouTube Channel - Spring Boot Tutorial Subscribe for future video and updates Spring Boot Tutorial on YouTube Newly published spring boot tutorials (2

Ramesh Fadatare 1.2k Jan 2, 2023
循序渐进,学习Spring Boot、Spring Boot & Shiro、Spring Batch、Spring Cloud、Spring Cloud Alibaba、Spring Security & Spring Security OAuth2,博客Spring系列源码:https://mrbird.cc

Spring 系列教程 该仓库为个人博客https://mrbird.cc中Spring系列源码,包含Spring Boot、Spring Boot & Shiro、Spring Cloud,Spring Boot & Spring Security & Spring Security OAuth2

mrbird 24.8k Jan 6, 2023
该仓库中主要是 Spring Boot 的入门学习教程以及一些常用的 Spring Boot 实战项目教程,包括 Spring Boot 使用的各种示例代码,同时也包括一些实战项目的项目源码和效果展示,实战项目包括基本的 web 开发以及目前大家普遍使用的线上博客项目/企业大型商城系统/前后端分离实践项目等,摆脱各种 hello world 入门案例的束缚,真正的掌握 Spring Boot 开发。

Spring Boot Projects 该仓库中主要是 Spring Boot 的入门学习教程以及一些常用的 Spring Boot 实战项目教程,包括 Spring Boot 使用的各种示例代码,同时也包括一些实战项目的项目源码和效果展示,实战项目包括基本的 web 开发以及目前大家普遍使用的前

十三 4.5k Dec 30, 2022
一个涵盖六个专栏:Spring Boot 2.X、Spring Cloud、Spring Cloud Alibaba、Dubbo、分布式消息队列、分布式事务的仓库。希望胖友小手一抖,右上角来个 Star,感恩 1024

友情提示:因为提供了 50000+ 行示例代码,所以艿艿默认注释了所有 Maven Module。 胖友可以根据自己的需要,修改 pom.xml 即可。 一个涵盖六个主流技术栈的正经仓库: 《Spring Boot 专栏》 《Spring Cloud Alibaba 专栏》 《Spring Clou

芋道源码 15.7k Dec 31, 2022
参考 DDD/Clean Architecture 设计理念,整合 Spring Boot/Spring Security/Mybatis Plus/Vavr 的 Spring Realworld 应用案例

Demo · 更多项目 · 参考资料 ms-spring-ddd-examples Unified Domain-driven Layered Architecture for MicroService Apps,试图探索一套切实可行的应用架构规范,可以复制、可以理解、可以落地、可以控制复杂性的指导

王下邀月熊 19 Sep 23, 2022
Spring Kurulumundan Başlayarak, Spring IOC ve Dependency Injection, Hibernate, Maven ve Spring Boot Konularına Giriş Yapıyoruz.

Spring Tutorial for Beginners File Directory Apache Tomcat Apache Tomcat - Eclipse Bağlantısı Spring Paketlerinin İndirilmesi ve Projeye Entegrasyonu

İbrahim Can Erdoğan 11 Apr 11, 2022
Spring Boot JdbcTemplate example with SQL Server: CRUD Rest API using Spring Data JDBC, Spring Web MVC

Spring Boot JdbcTemplate example with SQL Server: Build CRUD Rest API Build a Spring Boot CRUD Rest API example that uses Spring Data Jdbc to make CRU

null 7 Dec 20, 2022
Spring Boot & MongoDB Login and Registration example with JWT, Spring Security, Spring Data MongoDB

Spring Boot Login and Registration example with MongoDB Build a Spring Boot Auth with HttpOnly Cookie, JWT, Spring Security and Spring Data MongoDB. Y

null 15 Dec 30, 2022
Spring Boot Login and Registration example with MySQL, JWT, Rest Api - Spring Boot Spring Security Login example

Spring Boot Login example with Spring Security, MySQL and JWT Appropriate Flow for User Login and Registration with JWT Spring Boot Rest Api Architect

null 58 Jan 5, 2023
Demo microservice architecture with Spring ,Spring Cloud Gateway , Spring Cloud config server , Eureuka , keycloak and Docker.

spring-microservice Demo microservice architecture with Spring ,Spring Cloud Gateway , Spring Cloud config server , Eureuka , keycloak and Docker. Arc

null 4 Sep 13, 2022
Spring Boot JWT Authentication example with Spring Security & Spring Data JPA

Spring Boot JWT Authentication example with Spring Security & Spring Data JPA

null 1 Jan 26, 2022
Spring REST service built with Spring initializr and Spring Data.

Spring REST Service Generated with start.spring.io, using Spring Data. Documented using Spring REST Docs. Spring Initializr - Generate new Spring Rest

null 1 Jan 28, 2022
mall-swarm是一套微服务商城系统,采用了 Spring Cloud Hoxton & Alibaba、Spring Boot 2.3、Oauth2、MyBatis、Docker、Elasticsearch、Kubernetes等核心技术,同时提供了基于Vue的管理后台方便快速搭建系统。mall-swarm在电商业务的基础集成了注册中心、配置中心、监控中心、网关等系统功能。文档齐全,附带全套Spring Cloud教程。

mall-swarm 友情提示 快速体验项目:在线访问地址。 全套学习教程:《mall学习教程》。 Spring Cloud全套教程:《SpringCloud学习教程》。 专属学习路线:学习不走弯路,整理了套非常不错的《mall专属学习路线》。 项目交流:想要加群交流项目的朋友,可以加入mall项目

macro 9.7k Jan 3, 2023
芋道 mall 商城,基于微服务的思想,构建在 B2C 电商场景下的项目实战。核心技术栈,是 Spring Boot + Dubbo 。未来,会重构成 Spring Cloud Alibaba 。

[toc] 友情提示:近期在升级和优化该项目,建议先 Star 本项目。主要在做几个事情: 1、微服务技术选型以 Spring Cloud Alibaba 为中心。 2、修改项目分层,并合并部分服务,简化整体服务的复杂性。 3、将管理后台从 React 重构到 Vue 框架。 交流群:传送门 前言

芋道源码 7k Jan 6, 2023
about learning Spring Boot via examples. Spring Boot 教程、技术栈示例代码,快速简单上手教程。

Spring Boot 学习示例 Spring Boot 使用的各种示例,以最简单、最实用为标准,此开源项目中的每个示例都以最小依赖,最简单为标准,帮助初学者快速掌握 Spring Boot 各组件的使用。 Spring Boot 中文索引 | Spring Cloud学习示例代码 | Spring

纯洁的微笑 28.3k Jan 1, 2023
spring boot 实践学习案例,是 spring boot 初学者及核心技术巩固的最佳实践。另外写博客,用 OpenWrite。

推荐工具: 微信公众号 Markdown 编辑器 - OpenWrite:Markdown 微信编辑器是一款专业强大的微信公众平台在线编辑排版工具,提供手机预览功能,让用户在微信图文 、文章、内容排版、文本编辑、素材编辑上更加方便。 - 更多介绍 博客群发平台 一、支持泥瓦匠 Spring Boot

泥瓦匠BYSocket 15.2k Jan 5, 2023
Spring Boot基础教程,Spring Boot 2.x版本连载中!!!

Spring Boot基础教程 本项目内容为《Spring Boot基础教程》的程序样例。 专题目标:打造全网内容最全,比收费教程更好的Spring Boot免费教程! 加入社群:如果你正在学习Spring Boot,不妨加入我们的Spring技术交流群,一起成长! 如何支持: 关注我的公众号”程序

程序猿DD 14.9k Jan 6, 2023
Not only Spring Boot but also important knowledge of Spring(不只是SpringBoot还有Spring重要知识点)

在线阅读 : https://snailclimb.gitee.io/springboot-guide (上面的地址访问速度缓慢的建议使用这个路径访问) 重要知识点 基础 Spring Boot 介绍 第一个 Hello World 第一个 RestFul Web 服务 Spring 如何优雅读取配

Guide哥 4.7k Jan 3, 2023
Spring-Boot-Plus is a easy-to-use, high-speed, high-efficient,feature-rich, open source spring boot scaffolding

Everyone can develop projects independently, quickly and efficiently! What is spring-boot-plus? A easy-to-use, high-speed, high-efficient, feature-ric

geekidea 2.3k Dec 31, 2022