diff --git a/example-main/src/main/java/com/gitee/starblues/example/Application.java b/example-main/src/main/java/com/gitee/starblues/example/Application.java index 47d27e998ea1d7d8c940259c99f7a7eb2897d4f4..21091148b6a7f66dc0d4a3525d01b06af0d264ab 100644 --- a/example-main/src/main/java/com/gitee/starblues/example/Application.java +++ b/example-main/src/main/java/com/gitee/starblues/example/Application.java @@ -1,5 +1,6 @@ package com.gitee.starblues.example; +import com.gitee.starblues.loader.DevelopmentMode; import com.gitee.starblues.loader.launcher.SpringMainBootstrap; import com.gitee.starblues.loader.launcher.SpringBootstrap; import org.mybatis.spring.annotation.MapperScan; @@ -22,4 +23,9 @@ public class Application implements SpringBootstrap { public void run(String[] args) { SpringApplication.run(Application.class, args); } + + @Override + public String developmentMode() { + return DevelopmentMode.ISOLATION; + } } diff --git a/example-main/src/main/java/com/gitee/starblues/example/rest/HelloController.java b/example-main/src/main/java/com/gitee/starblues/example/rest/HelloController.java index 5175f6212b392304078af816554f661d0daa6020..cf1c62ebb75a8603eb0dd946ef3a1c2b57ce5013 100644 --- a/example-main/src/main/java/com/gitee/starblues/example/rest/HelloController.java +++ b/example-main/src/main/java/com/gitee/starblues/example/rest/HelloController.java @@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RestController; * @author starBlues * @version 1.0 */ -@RestController +@RestController("mainHello") @RequestMapping("/main/hello") @Api(tags = "main-hello") public class HelloController { diff --git a/example-main/src/main/resources/application-dev.yml b/example-main/src/main/resources/application-dev.yml index af2aa5e63440a27fa2b86ce98752ed7d912d732e..6393ca4ab041832178ac52b236cd54071bbcc769 100644 --- a/example-main/src/main/resources/application-dev.yml +++ b/example-main/src/main/resources/application-dev.yml @@ -27,7 +27,7 @@ plugin: # 如果配置是 windows 下路径, mac、linux 自行修改 pluginPath: - ~\example-plugins-basic - #- ~\example-plugins-db + - ~\example-plugins-db #- ~\example-plugins-cloud sortInitPluginIds: - example-basic-2 @@ -38,4 +38,4 @@ plugin: plugins: - pluginId: example-basic-1 props: - secretKey: mmfvXes1XckCi8F/y9i0uQ== + secretKey: mmfvXes1XckCi8F/y9i0uQ== \ No newline at end of file diff --git a/example-main/src/main/resources/application-prod.yml b/example-main/src/main/resources/application-prod.yml index 4781f15fa2721e3cdda4b27b13c831ee5f537e72..e910a034f4544a338340b2f2382dd8e4bce1fd84 100644 --- a/example-main/src/main/resources/application-prod.yml +++ b/example-main/src/main/resources/application-prod.yml @@ -3,7 +3,7 @@ server: spring: datasource: - url: jdbc:mysql://127.0.0.1:3306/plugin-test-example?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC + url: jdbc:mysql://127.0.0.1:3306/plugin-test-example?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC&allowPublicKeyRetrieval=true username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver @@ -23,7 +23,7 @@ mybatis-plus: plugin: runMode: prod mainPackage: com.gitee.starblues.example - pluginPath: ~\plugins + pluginPath: D:\etc\kitte\ksm\springboot-plugin-framework-parent\springboot-plugin-framework-example\dist\plugins sortInitPluginIds: - example-basic-2 - example-basic-1 diff --git a/example-main/src/main/resources/mapper/AutowiredTypeDefiner.xml b/example-main/src/main/resources/mapper/MainUserMapper.xml similarity index 100% rename from example-main/src/main/resources/mapper/AutowiredTypeDefiner.xml rename to example-main/src/main/resources/mapper/MainUserMapper.xml diff --git a/example-plugins-basic/example-basic-1/pom.xml b/example-plugins-basic/example-basic-1/pom.xml index 02b3d8d5ff621eee36faf7c7e5570794f1b482c9..8581773b106f036298ffcbc31cbe2b8209a12ff4 100644 --- a/example-plugins-basic/example-basic-1/pom.xml +++ b/example-plugins-basic/example-basic-1/pom.xml @@ -29,7 +29,7 @@ basic1-config.yaml - jar-outer + jar diff --git a/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/Basic1Plugin.java b/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/Basic1Plugin.java index 9709ee2a2831272c6eedb2ef7e729e51f34e7582..8dd5e71ae0849cd9d845316e00038cf79666938c 100644 --- a/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/Basic1Plugin.java +++ b/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/Basic1Plugin.java @@ -7,6 +7,7 @@ import com.gitee.starblues.bootstrap.realize.AutowiredTypeDefiner; import com.gitee.starblues.example.Application; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.PropertySource; import java.net.URL; @@ -19,6 +20,7 @@ import java.net.URL; */ @SpringBootApplication @OneselfConfig(mainConfigFileName = {"application.yml", "application-dev.yml"}) +@EnableConfigurationProperties public class Basic1Plugin extends SpringPluginBootstrap { public static void main(String[] args) { diff --git a/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/config/BasicConfig.java b/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/config/BasicConfig.java index 6de824bd83557f0827986edeadad3a21f254e243..3a5f06761ed3d132b08bb920e74a4de9c03f774f 100644 --- a/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/config/BasicConfig.java +++ b/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/config/BasicConfig.java @@ -34,4 +34,12 @@ public class BasicConfig { public void setAge(Integer age) { this.age = age; } + + @Override + public String toString() { + return "BasicConfig{" + + "name='" + name + '\'' + + ", age=" + age + + '}'; + } } diff --git a/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/rest/HelloController.java b/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/rest/HelloController.java index 2d093ae178afb66309e14fd4531f3042a75c47e4..624c7897e55629b4cf4ba4db281518e8509270a2 100644 --- a/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/rest/HelloController.java +++ b/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/rest/HelloController.java @@ -7,6 +7,8 @@ import io.swagger.annotations.Api; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; @@ -30,6 +32,8 @@ public class HelloController { @GetMapping() public PluginDescriptor hello(){ + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + System.out.println(attributes.getRequest().getRequestURI()); return pluginDescriptor; } diff --git a/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/service/Basic1PluginExtensionInfo.java b/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/service/Basic1PluginExtensionInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..119bdc2ff6a3f35c1438d011940337e0a10bbae7 --- /dev/null +++ b/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/service/Basic1PluginExtensionInfo.java @@ -0,0 +1,29 @@ +package com.gitee.starblues.example.basic1.service; + +import com.gitee.starblues.core.PluginExtensionInfo; +import com.gitee.starblues.example.basic1.config.BasicConfig; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author starBlues + * @version 1.0 + * @since 2021-08-01 + */ +@Component +public class Basic1PluginExtensionInfo implements PluginExtensionInfo { + + @Autowired + private BasicConfig basicConfig; + + @Override + public Map extensionInfo() { + Map map = new HashMap<>(); + map.put("plugin1", "plugin1ExtensionInfo"); + map.put("plugin-config", basicConfig.toString()); + return map; + } +} diff --git a/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/service/BasicService.java b/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/service/BasicService.java index 1e51eb395572b1f486abc0124cafae58cb7edcc2..ca46be8e33fc1921d78b0167507a2ae54066b033 100644 --- a/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/service/BasicService.java +++ b/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/service/BasicService.java @@ -5,6 +5,7 @@ import com.gitee.starblues.core.descriptor.PluginDescriptor; import com.gitee.starblues.example.service.MainUserService; import com.gitee.starblues.example.service.TestAnnotation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; @@ -15,6 +16,7 @@ import org.springframework.stereotype.Service; */ @Service @TestAnnotation +@Scope("prototype") public class BasicService { @Autowired diff --git a/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/service/listener/MyCloseListener.java b/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/service/listener/MyCloseListener.java new file mode 100644 index 0000000000000000000000000000000000000000..b69f9f4dea28b32d070a21dbb4963df9b37b5e30 --- /dev/null +++ b/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/service/listener/MyCloseListener.java @@ -0,0 +1,32 @@ +package com.gitee.starblues.example.basic1.service.listener; + +import com.gitee.starblues.bootstrap.realize.PluginCloseListener; +import com.gitee.starblues.core.PluginInfo; +import com.gitee.starblues.core.descriptor.PluginDescriptor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.support.GenericApplicationContext; +import org.springframework.stereotype.Component; + +/** + * 插件关闭监听 + * + * @author starBlues + * @version 1.0 + * @date 2022-08-26 + */ +@Component +public class MyCloseListener implements PluginCloseListener { + + @Autowired + private PluginInfo pluginInfo; + + @Override + public void close(GenericApplicationContext applicationContext, PluginInfo pluginInfo, boolean isUninstall) { + if(isUninstall){ + System.out.println("插件被卸载了:" + pluginInfo.getPluginId()); + } else { + System.out.println("插件被关闭了:" + pluginInfo.getPluginId()); + } + System.out.println("注入的插件信息:" + pluginInfo.getExtensionInfo()); + } +} diff --git a/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/service/listener/MyListener.java b/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/service/listener/MyListener.java index e9a9d2edfa0b4ccf9c3e505c0c93ba6a66695b70..ed1e1629666eec4914e4bb91c279355c429b9214 100644 --- a/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/service/listener/MyListener.java +++ b/example-plugins-basic/example-basic-1/src/main/java/com/gitee/starblues/example/basic1/service/listener/MyListener.java @@ -1,6 +1,7 @@ package com.gitee.starblues.example.basic1.service.listener; +import lombok.extern.slf4j.Slf4j; import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent; import org.springframework.boot.context.event.ApplicationPreparedEvent; import org.springframework.boot.context.event.ApplicationReadyEvent; @@ -10,16 +11,20 @@ import org.springframework.context.event.ContextClosedEvent; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.ContextStartedEvent; import org.springframework.context.event.ContextStoppedEvent; +import org.springframework.stereotype.Component; /** * 启动后监听 * @author starBlues * @version 1.0 */ +@Slf4j +@Component public class MyListener implements ApplicationListener{ @Override public void onApplicationEvent(ApplicationEvent event) { + log.info("插件==================================== : {}" , event.getClass().getName()); if (event instanceof ApplicationEnvironmentPreparedEvent) { System.out.println("初始化环境变量"); } else if (event instanceof ApplicationPreparedEvent) { diff --git a/example-plugins-basic/example-basic-2/src/main/java/com/gitee/starblues/example/basic2/Basic2Plugin.java b/example-plugins-basic/example-basic-2/src/main/java/com/gitee/starblues/example/basic2/Basic2Plugin.java index c08b5dc0764257a9c9cbb5c1bd144af05b47aced..bbd816bbf77520475d48f3ef034f3fc64e259636 100644 --- a/example-plugins-basic/example-basic-2/src/main/java/com/gitee/starblues/example/basic2/Basic2Plugin.java +++ b/example-plugins-basic/example-basic-2/src/main/java/com/gitee/starblues/example/basic2/Basic2Plugin.java @@ -1,6 +1,8 @@ package com.gitee.starblues.example.basic2; import com.gitee.starblues.bootstrap.SpringPluginBootstrap; +import com.gitee.starblues.bootstrap.annotation.OneselfConfig; +import com.gitee.starblues.example.Application; import org.springframework.boot.autoconfigure.SpringBootApplication; /** @@ -10,10 +12,11 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * @since 2021-08-01 */ @SpringBootApplication +@OneselfConfig(mainConfigFileName = {"application.yml", "application-dev.yml"}) public class Basic2Plugin extends SpringPluginBootstrap { public static void main(String[] args) { - new Basic2Plugin().run(args); + new Basic2Plugin().run(Application.class, args); } } diff --git a/example-plugins-basic/pom.xml b/example-plugins-basic/pom.xml index 068a1da13294118c1b2f401b0be4991826a4ff90..f76940a3c3a46060687eafdb62a656f245814f21 100644 --- a/example-plugins-basic/pom.xml +++ b/example-plugins-basic/pom.xml @@ -33,15 +33,15 @@ com.gitee.starblues - spring-brick-bootstrap - ${spring-brick.version} + example-main + ${project.version} + provided com.gitee.starblues - example-main - ${project.version} - provided + spring-brick-bootstrap + ${spring-brick.version} diff --git a/example-plugins-db/example-jpa/src/main/java/com/gitee/starblues/example/jpa/JpaPlugin.java b/example-plugins-db/example-jpa/src/main/java/com/gitee/starblues/example/jpa/JpaPlugin.java index 2b6b58d5e2cd06b4815fb6cb7cc43bb01971a40c..12aa1ed9e2e7d59b9147f2f0baca38fa53dcbd23 100644 --- a/example-plugins-db/example-jpa/src/main/java/com/gitee/starblues/example/jpa/JpaPlugin.java +++ b/example-plugins-db/example-jpa/src/main/java/com/gitee/starblues/example/jpa/JpaPlugin.java @@ -1,6 +1,7 @@ package com.gitee.starblues.example.jpa; import com.gitee.starblues.bootstrap.SpringPluginBootstrap; +import com.gitee.starblues.bootstrap.coexist.CoexistAllowAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Import; @@ -15,5 +16,5 @@ public class JpaPlugin extends SpringPluginBootstrap{ public static void main(String[] args) { new JpaPlugin().run(JpaPlugin.class, args); } - + } diff --git a/example-plugins-db/example-mybatis-plus/src/main/java/com/gitee/starblues/example/mp/MybatisPlusExamplePlugin.java b/example-plugins-db/example-mybatis-plus/src/main/java/com/gitee/starblues/example/mp/MybatisPlusExamplePlugin.java index 5df193f89ec7feaefeb11ea683be1b0225b6121f..f84547bd4d13339a2feb21b3c368d3370c7caf2a 100644 --- a/example-plugins-db/example-mybatis-plus/src/main/java/com/gitee/starblues/example/mp/MybatisPlusExamplePlugin.java +++ b/example-plugins-db/example-mybatis-plus/src/main/java/com/gitee/starblues/example/mp/MybatisPlusExamplePlugin.java @@ -1,6 +1,7 @@ package com.gitee.starblues.example.mp; import com.gitee.starblues.bootstrap.SpringPluginBootstrap; +import com.gitee.starblues.bootstrap.coexist.CoexistAllowAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; /** diff --git a/example-plugins-db/example-mybatis-plus/src/main/java/com/gitee/starblues/example/mp/rest/MpPluginUserController.java b/example-plugins-db/example-mybatis-plus/src/main/java/com/gitee/starblues/example/mp/rest/MpPluginUserController.java index 08936e38501599f6b885da28760c976febb0f524..4db21caae74723e185aebf57bdaf14c7b203e721 100644 --- a/example-plugins-db/example-mybatis-plus/src/main/java/com/gitee/starblues/example/mp/rest/MpPluginUserController.java +++ b/example-plugins-db/example-mybatis-plus/src/main/java/com/gitee/starblues/example/mp/rest/MpPluginUserController.java @@ -7,6 +7,8 @@ import io.swagger.annotations.Api; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * user 接口 @@ -23,12 +25,17 @@ public class MpPluginUserController { private final MpPluginUserService mpPluginUserService; @GetMapping - public Page getPage(@RequestParam("currentPage") Integer currentPage, + public Page getPage(@RequestParam("currentPage") Integer currentPage, @RequestParam("pageSize") Integer pageSize){ Page plugin2UserPage = new Page<>(currentPage, pageSize); return mpPluginUserService.page(plugin2UserPage); } + @GetMapping("/wrapper") + public List getPage(){ + return mpPluginUserService.testWrapper(); + } + @GetMapping("/{id}") public MpPluginUser getById(@PathVariable("id") String id){ diff --git a/example-plugins-db/example-mybatis-plus/src/main/java/com/gitee/starblues/example/mp/service/MpPluginUserService.java b/example-plugins-db/example-mybatis-plus/src/main/java/com/gitee/starblues/example/mp/service/MpPluginUserService.java index f983771392ed21ce7407e4079b8f6b123f160d60..e7ed136f755aa58a25e398ce7145e5e8f02047d9 100644 --- a/example-plugins-db/example-mybatis-plus/src/main/java/com/gitee/starblues/example/mp/service/MpPluginUserService.java +++ b/example-plugins-db/example-mybatis-plus/src/main/java/com/gitee/starblues/example/mp/service/MpPluginUserService.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.gitee.starblues.example.mp.entity.MpPluginUser; import com.gitee.starblues.example.mp.mapper.MpPluginUserMapper; +import java.util.List; + /** *

* 插件1-用户表 服务类 @@ -14,6 +16,8 @@ import com.gitee.starblues.example.mp.mapper.MpPluginUserMapper; */ public interface MpPluginUserService extends IService { + List testWrapper(); + @Override MpPluginUserMapper getBaseMapper(); } diff --git a/example-plugins-db/example-mybatis-plus/src/main/java/com/gitee/starblues/example/mp/service/impl/MpPluginUserServiceImpl.java b/example-plugins-db/example-mybatis-plus/src/main/java/com/gitee/starblues/example/mp/service/impl/MpPluginUserServiceImpl.java index 42e1c9818e486ac7ed49e1aeb440892d33c073e3..4b2b918103396ebdde5c3d4d845f5da5481aeeb1 100644 --- a/example-plugins-db/example-mybatis-plus/src/main/java/com/gitee/starblues/example/mp/service/impl/MpPluginUserServiceImpl.java +++ b/example-plugins-db/example-mybatis-plus/src/main/java/com/gitee/starblues/example/mp/service/impl/MpPluginUserServiceImpl.java @@ -1,11 +1,16 @@ package com.gitee.starblues.example.mp.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gitee.starblues.bootstrap.annotation.ResolveClassLoader; import com.gitee.starblues.example.mp.entity.MpPluginUser; import com.gitee.starblues.example.mp.mapper.MpPluginUserMapper; import com.gitee.starblues.example.mp.service.MpPluginUserService; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 插件1-用户表 服务实现类 @@ -17,4 +22,11 @@ import org.springframework.stereotype.Service; @Service public class MpPluginUserServiceImpl extends ServiceImpl implements MpPluginUserService { + @ResolveClassLoader + @Override + public List testWrapper() { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(MpPluginUser.class) + .eq(MpPluginUser::getDeleted, 0); + return list(wrapper); + } } diff --git a/pom.xml b/pom.xml index 37cb55da96f5a2ae391c39fac621eaba343772ce..0ce493f01ed2e6a339b85a54dbb1e0b95ca7806d 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ 1.8 - 3.0.3 + 3.1.0 2.5.6