diff --git a/README.md b/README.md
index 738aded98a386e19bc33d7f5aee2a689a062813d..393f63f04e65d91792b20500272fee77960c2984 100644
--- a/README.md
+++ b/README.md
@@ -25,7 +25,7 @@
- 支持在插件中自定义`Mapper`接口、`Mapper xml` 以及对应的实体`bean`
-- 支持集成`Mybatis-Plus`、`Tk-Mybatis`
+- 支持集成``Mybatis`、`Mybatis-Plus`、`Tk-Mybatis`
- 支持可在插件中独立配置数据源
diff --git a/example/basic-example/basic-example-main/pom.xml b/example/basic-example/basic-example-main/pom.xml
index d9ae937011b94431ab84157365dc0d46030041aa..119c86efe6500d111e6c9c2901e3535e5afa6064 100644
--- a/example/basic-example/basic-example-main/pom.xml
+++ b/example/basic-example/basic-example-main/pom.xml
@@ -7,7 +7,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.0.3.RELEASE
+ 2.4.2
diff --git a/example/basic-example/basic-example-main/src/main/java/com/basic/example/main/config/PluginConfiguration.java b/example/basic-example/basic-example-main/src/main/java/com/basic/example/main/config/PluginConfiguration.java
index 6557abf5971fac8bca5a14fd797d4b6aa5bdfb7f..16eb1c9bffa4815725819aed57604036254b2c22 100644
--- a/example/basic-example/basic-example-main/src/main/java/com/basic/example/main/config/PluginConfiguration.java
+++ b/example/basic-example/basic-example-main/src/main/java/com/basic/example/main/config/PluginConfiguration.java
@@ -1,12 +1,14 @@
package com.basic.example.main.config;
import com.gitee.starblues.integration.DefaultIntegrationConfiguration;
+import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import org.pf4j.RuntimeMode;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
+import java.util.List;
import java.util.Set;
@@ -124,7 +126,6 @@ public class PluginConfiguration extends DefaultIntegrationConfiguration {
}
-
@Override
public String toString() {
return "PluginArgConfiguration{" +
diff --git a/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/PluginListener1.java b/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/PluginListener1.java
index c613b212b57487cc051d9536a1b378a9f4e5c9ef..477d14944b970964a5be45d0569445c524bcea97 100644
--- a/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/PluginListener1.java
+++ b/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/PluginListener1.java
@@ -1,8 +1,10 @@
package com.basic.example.plugin1;
+import com.basic.example.main.config.PluginConfiguration;
import com.basic.example.plugin1.service.HelloService;
import com.gitee.starblues.realize.BasePlugin;
import com.gitee.starblues.realize.OneselfListener;
+import com.gitee.starblues.realize.PluginUtils;
import com.gitee.starblues.utils.OrderPriority;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -18,9 +20,11 @@ public class PluginListener1 implements OneselfListener {
private static final Logger logger = LoggerFactory.getLogger(PluginListener1.class);
private final HelloService helloService;
+ private final PluginUtils pluginUtils;
- public PluginListener1(HelloService helloService) {
+ public PluginListener1(HelloService helloService, PluginUtils pluginUtils) {
this.helloService = helloService;
+ this.pluginUtils = pluginUtils;
}
@@ -31,12 +35,16 @@ public class PluginListener1 implements OneselfListener {
@Override
public void startEvent(BasePlugin basePlugin) {
+ PluginConfiguration mainBean = pluginUtils.getMainBean(PluginConfiguration.class);
+ System.out.println(mainBean);
logger.info("PluginListener1 {} start. helloService : {} .", basePlugin.getWrapper().getPluginId(),
helloService.sayService2());
}
@Override
public void stopEvent(BasePlugin basePlugin) {
+ PluginConfiguration mainBean = pluginUtils.getMainBean(PluginConfiguration.class);
+ System.out.println(mainBean);
logger.info("PluginListener1 {} stop. helloService : {} .", basePlugin.getWrapper().getPluginId(),
helloService.sayService2());
}
diff --git a/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/config/ConfigBean.java b/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/config/ConfigBean.java
new file mode 100644
index 0000000000000000000000000000000000000000..23d56b9d0ba29e8596beea2b3c8ff0615d05b0c9
--- /dev/null
+++ b/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/config/ConfigBean.java
@@ -0,0 +1,54 @@
+package com.basic.example.plugin1.config;
+
+import com.basic.example.main.config.PluginConfiguration;
+import com.gitee.starblues.realize.PluginUtils;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author starBlues
+ * @version 1.0
+ */
+@Configuration
+public class ConfigBean {
+
+ @Bean
+ public ConfigBeanTest c(PluginUtils pluginUtils){
+ PluginConfiguration mainBean = pluginUtils.getMainBean(PluginConfiguration.class);
+ System.out.println("configTest: mainBean=" + mainBean);
+ ConfigBeanTest configBeanTest = new ConfigBeanTest();
+ configBeanTest.name = "hello";
+ configBeanTest.age = 16;
+ return configBeanTest;
+ }
+
+ public static class ConfigBeanTest{
+ private String name;
+ private Integer age;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Integer getAge() {
+ return age;
+ }
+
+ public void setAge(Integer age) {
+ this.age = age;
+ }
+
+ @Override
+ public String toString() {
+ return "ConfigBeanTest{" +
+ "name='" + name + '\'' +
+ ", age=" + age +
+ '}';
+ }
+ }
+
+}
diff --git a/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/rest/HelloPlugin1.java b/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/rest/HelloPlugin1.java
index ddc966fbbc7fa81f278bf85eeb5cca140d606e58..56c9aea392bb429b06bb48e37720b275d3571c70 100644
--- a/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/rest/HelloPlugin1.java
+++ b/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/rest/HelloPlugin1.java
@@ -1,9 +1,12 @@
package com.basic.example.plugin1.rest;
+import com.basic.example.plugin1.config.ConfigBean;
import com.basic.example.plugin1.config.PluginConfig1;
import com.basic.example.plugin1.service.HelloService;
+import com.gitee.starblues.realize.PluginUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import org.pf4j.PluginDescriptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -26,6 +29,11 @@ public class HelloPlugin1 {
@Autowired
private PluginConfig1 pluginConfig1;
+ @Autowired
+ private PluginUtils pluginUtils;
+
+ @Autowired
+ private ConfigBean.ConfigBeanTest configBeanTest;
@GetMapping("plugin1")
@ApiOperation(value = "hello", notes = "hello")
@@ -50,6 +58,14 @@ public class HelloPlugin1 {
return helloService.sayService2();
}
+ @GetMapping("pluginInfo")
+ public PluginDescriptor getPluginInfo(){
+ return pluginUtils.getPluginDescriptor();
+ }
+ @GetMapping("configBeanTest")
+ public ConfigBean.ConfigBeanTest getConfigBeanTest(){
+ return configBeanTest;
+ }
}
diff --git a/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/service/ConsoleNameImpl.java b/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/service/ConsoleNameImpl.java
index 3c86405e299fec49ceee099b75867cbe2003c3ba..6e79ff42221af1ec8d7d6f2efbc00c06ec1bfbc0 100644
--- a/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/service/ConsoleNameImpl.java
+++ b/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/service/ConsoleNameImpl.java
@@ -2,6 +2,7 @@ package com.basic.example.plugin1.service;
import com.basic.example.main.config.PluginConfiguration;
import com.basic.example.main.plugin.ConsoleName;
+import com.gitee.starblues.realize.PluginUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -15,10 +16,11 @@ import org.springframework.stereotype.Component;
public class ConsoleNameImpl implements ConsoleName {
@Autowired
- private PluginConfiguration pluginConfiguration;
+ private PluginUtils pluginUtils;
@Override
public String name() {
+ PluginConfiguration pluginConfiguration = pluginUtils.getMainBean(PluginConfiguration.class);
return "My name is Plugin1" + "->pluginArgConfiguration :" + pluginConfiguration.toString();
}
}
diff --git a/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/service/HelloService.java b/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/service/HelloService.java
index 12205b1fb12cc588788b127b14a5de836671d3ea..7bdbeba381b9a699e989e542507caa887c7206dd 100644
--- a/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/service/HelloService.java
+++ b/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/service/HelloService.java
@@ -16,7 +16,6 @@ public class HelloService {
private final PluginConfig1 pluginConfig1;
private final Service2 service2;
- @Autowired
public HelloService(PluginConfig1 pluginConfig1, Service2 service2) {
this.pluginConfig1 = pluginConfig1;
this.service2 = service2;
diff --git a/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/service/SupplierService.java b/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/service/SupplierService.java
index a698a622cec019ff8c3f5f9461d3a5cbad7fd874..eb2c76eb104d6fc5cf70c658f959f27a4178bd64 100644
--- a/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/service/SupplierService.java
+++ b/example/basic-example/plugins/basic-example-plugin1/src/main/java/com/basic/example/plugin1/service/SupplierService.java
@@ -40,6 +40,9 @@ public class SupplierService {
return key;
}
+ public String notArg(){
+ return "noArg";
+ }
public CommonReturn commonTest(String key, CommonParam commonParam){
System.out.println(commonParam);
diff --git a/example/basic-example/plugins/basic-example-plugin2/src/main/java/com/basic/example/plugin2/rest/ProxyController.java b/example/basic-example/plugins/basic-example-plugin2/src/main/java/com/basic/example/plugin2/rest/ProxyController.java
index cb269beea3e1fd68b83a4e495f3d7ef015da01e4..3bf98de9d7f5d80db95ea204ba8cb85298ea0426 100644
--- a/example/basic-example/plugins/basic-example-plugin2/src/main/java/com/basic/example/plugin2/rest/ProxyController.java
+++ b/example/basic-example/plugins/basic-example-plugin2/src/main/java/com/basic/example/plugin2/rest/ProxyController.java
@@ -28,6 +28,11 @@ public class ProxyController {
}
+ @GetMapping("noArg")
+ public String noArg(){
+ return callerService.notArg();
+ }
+
@GetMapping("add")
public Integer add(){
return callerService.add(1, 2);
diff --git a/example/basic-example/plugins/basic-example-plugin2/src/main/java/com/basic/example/plugin2/service/CallerService.java b/example/basic-example/plugins/basic-example-plugin2/src/main/java/com/basic/example/plugin2/service/CallerService.java
index 34a30fd04449548fadfe432ac9899c82a7315a01..1a156d960b68a3e73fede68b63645c2156c39204 100644
--- a/example/basic-example/plugins/basic-example-plugin2/src/main/java/com/basic/example/plugin2/service/CallerService.java
+++ b/example/basic-example/plugins/basic-example-plugin2/src/main/java/com/basic/example/plugin2/service/CallerService.java
@@ -10,7 +10,7 @@ import com.gitee.starblues.annotation.Caller;
* @author starBlues
* @version 1.0
*/
-@Caller("SupplierService")
+@Caller(value = "SupplierService")
public interface CallerService {
PluginInfo getConfig(String key);
@@ -22,6 +22,8 @@ public interface CallerService {
CommonReturn commonTest(String key, CommonParam commonParam);
+ String notArg();
+
class CallerInfo{
private String name;
private PluginInfo pluginInfo;
diff --git a/example/basic-example/plugins/basic-example-plugin2/src/main/java/com/basic/example/plugin2/service/HelloService.java b/example/basic-example/plugins/basic-example-plugin2/src/main/java/com/basic/example/plugin2/service/HelloService.java
index 7e370813adef7e34cf0a388d94ba1dca23993605..c225d13b5c7413be8b0867968afdf499b6e95be7 100644
--- a/example/basic-example/plugins/basic-example-plugin2/src/main/java/com/basic/example/plugin2/service/HelloService.java
+++ b/example/basic-example/plugins/basic-example-plugin2/src/main/java/com/basic/example/plugin2/service/HelloService.java
@@ -16,7 +16,7 @@ public class HelloService {
private final Plugin2Config plugin2Config;
private final Service2 service2;
- @Autowired
+
public HelloService(Plugin2Config plugin2Config, Service2 service2) {
this.plugin2Config = plugin2Config;
this.service2 = service2;
diff --git a/example/integration-mybatis/integration-mybatis-main/src/main/java/com/mybatis/main/config/PluginBeanConfig.java b/example/integration-mybatis/integration-mybatis-main/src/main/java/com/mybatis/main/config/PluginBeanConfig.java
index 77444a5616cfc071c773260ead6d0e741cb00c88..1c0b551965ea0e8c1ec6fded3e556be460b71bec 100644
--- a/example/integration-mybatis/integration-mybatis-main/src/main/java/com/mybatis/main/config/PluginBeanConfig.java
+++ b/example/integration-mybatis/integration-mybatis-main/src/main/java/com/mybatis/main/config/PluginBeanConfig.java
@@ -5,6 +5,7 @@ import com.gitee.starblues.extension.resources.StaticResourceExtension;
import com.gitee.starblues.integration.*;
import com.gitee.starblues.integration.application.AutoPluginApplication;
import com.gitee.starblues.integration.application.PluginApplication;
+import com.google.common.collect.Sets;
import org.pf4j.RuntimeMode;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -59,6 +60,8 @@ public class PluginBeanConfig {
.pluginRestPathPrefix("/api/plugin")
.enablePluginIdRestPathPrefix(true)
.enableSwaggerRefresh(true)
+ .enablePluginIds(Sets.newHashSet("integration-mybatis-plugin1"))
+ .disablePluginIds(Sets.newHashSet("integration-mybatis-plugin2"))
.build();
}
diff --git a/example/integration-mybatis/plugins/integration-mybatis-plugin1/pom.xml b/example/integration-mybatis/plugins/integration-mybatis-plugin1/pom.xml
index fd0225d080c242a28e24ead3fea52d675743608e..41fa0f398e298ed261f5b48b37bc050c33d2d081 100644
--- a/example/integration-mybatis/plugins/integration-mybatis-plugin1/pom.xml
+++ b/example/integration-mybatis/plugins/integration-mybatis-plugin1/pom.xml
@@ -24,26 +24,6 @@
-
-
- com.baomidou
- mybatis-plus-generator
- ${mybatis-plus.version}
-
-
-
-
- org.apache.velocity
- velocity-engine-core
- ${velocity.version}
-
-
-
- org.mybatis.spring.boot
- mybatis-spring-boot-starter
- ${mybatis-spring-boot-starter.version}
-
-
\ No newline at end of file
diff --git a/example/integration-mybatis/plugins/integration-mybatis-plugin1/src/main/java/com/mybatis/plugin1/MybatisConfig.java b/example/integration-mybatis/plugins/integration-mybatis-plugin1/src/main/java/com/mybatis/plugin1/MybatisConfig.java
index 4e57c31b1a4b7e6ee16eb9804c3132947870b7ff..fba3cfc0be6584d0f3b9b0788ed0b6265184b230 100644
--- a/example/integration-mybatis/plugins/integration-mybatis-plugin1/src/main/java/com/mybatis/plugin1/MybatisConfig.java
+++ b/example/integration-mybatis/plugins/integration-mybatis-plugin1/src/main/java/com/mybatis/plugin1/MybatisConfig.java
@@ -1,5 +1,6 @@
package com.mybatis.plugin1;
+import com.gitee.starblues.annotation.ConfigDefinition;
import com.gitee.starblues.extension.mybatis.SpringBootMybatisConfig;
import org.springframework.stereotype.Component;
@@ -11,7 +12,7 @@ import java.util.Set;
* @version 1.0
* @since 2020-12-18
*/
-@Component
+@ConfigDefinition
public class MybatisConfig implements SpringBootMybatisConfig {
@Override
diff --git a/example/integration-mybatis/plugins/integration-mybatis-plugin1/src/main/java/com/mybatis/plugin1/ResourceConfig.java b/example/integration-mybatis/plugins/integration-mybatis-plugin1/src/main/java/com/mybatis/plugin1/ResourceConfig.java
index be69126fe4a781ac54bca95ab0d28349c07df9de..17784c8cd48f01567be43ac4da7f870762da7d8e 100644
--- a/example/integration-mybatis/plugins/integration-mybatis-plugin1/src/main/java/com/mybatis/plugin1/ResourceConfig.java
+++ b/example/integration-mybatis/plugins/integration-mybatis-plugin1/src/main/java/com/mybatis/plugin1/ResourceConfig.java
@@ -1,5 +1,6 @@
package com.mybatis.plugin1;
+import com.gitee.starblues.annotation.ConfigDefinition;
import com.gitee.starblues.extension.resources.StaticResourceConfig;
import com.gitee.starblues.extension.resources.thymeleaf.SpringBootThymeleafConfig;
import com.gitee.starblues.extension.resources.thymeleaf.ThymeleafConfig;
@@ -13,7 +14,7 @@ import java.util.Set;
* @version 1.0
* @since 2020-12-19
*/
-@Component
+@ConfigDefinition
public class ResourceConfig implements StaticResourceConfig, SpringBootThymeleafConfig {
@Override
public Set locations() {
diff --git a/example/integration-mybatis/plugins/integration-mybatis-plugin1/src/main/java/com/mybatis/plugin1/config/PluginConfigBean.java b/example/integration-mybatis/plugins/integration-mybatis-plugin1/src/main/java/com/mybatis/plugin1/config/PluginConfigBean.java
new file mode 100644
index 0000000000000000000000000000000000000000..9af63cdf24d6ffa7a51c8ee1f44665d5eae3ae95
--- /dev/null
+++ b/example/integration-mybatis/plugins/integration-mybatis-plugin1/src/main/java/com/mybatis/plugin1/config/PluginConfigBean.java
@@ -0,0 +1,28 @@
+package com.mybatis.plugin1.config;
+
+import com.gitee.starblues.realize.ConfigBean;
+
+/**
+ * @author starBlues
+ * @version 1.0
+ */
+public class PluginConfigBean implements ConfigBean {
+
+ private final Plugin1Config plugin1Config;
+
+ public PluginConfigBean(Plugin1Config plugin1Config) {
+ this.plugin1Config = plugin1Config;
+ }
+
+ @Override
+ public void initialize() throws Exception {
+ System.out.println("初始化Bean");
+ System.out.println(plugin1Config);
+ }
+
+ @Override
+ public void destroy() throws Exception {
+ System.out.println("销毁Bean");
+ System.out.println(plugin1Config);
+ }
+}
diff --git a/example/integration-mybatis/plugins/integration-mybatis-plugin1/src/main/java/com/mybatis/plugin1/rest/Plugin1Controller.java b/example/integration-mybatis/plugins/integration-mybatis-plugin1/src/main/java/com/mybatis/plugin1/rest/Plugin1Controller.java
index b82a9e82321c8390b69675d94de72883dd386d8a..4e2748c8efdb0084d1ff4544cdb3883efbbd45cb 100644
--- a/example/integration-mybatis/plugins/integration-mybatis-plugin1/src/main/java/com/mybatis/plugin1/rest/Plugin1Controller.java
+++ b/example/integration-mybatis/plugins/integration-mybatis-plugin1/src/main/java/com/mybatis/plugin1/rest/Plugin1Controller.java
@@ -1,6 +1,5 @@
package com.mybatis.plugin1.rest;
-import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.mybatis.plugin1.entity.Plugin1;
import com.mybatis.plugin1.mapper.Plugin1Mapper;
import com.mybatis.plugin1.service.TranServiec;
@@ -47,7 +46,6 @@ public class Plugin1Controller {
if(!StringUtils.isEmpty(name)){
p.setName(name);
}
- GlobalConfig config = new GlobalConfig();
return pluginMapperl.getByCondition(p);
}
diff --git a/example/integration-mybatis/plugins/integration-mybatis-plugin1/src/main/java/com/mybatis/plugin1/rest/UserController.java b/example/integration-mybatis/plugins/integration-mybatis-plugin1/src/main/java/com/mybatis/plugin1/rest/UserController.java
index d1fc6045bd71471c095b228624dd8e8ec35bfe3b..6ff4acff3c7b34dcd9ee90e42922a4c10e6cdf48 100644
--- a/example/integration-mybatis/plugins/integration-mybatis-plugin1/src/main/java/com/mybatis/plugin1/rest/UserController.java
+++ b/example/integration-mybatis/plugins/integration-mybatis-plugin1/src/main/java/com/mybatis/plugin1/rest/UserController.java
@@ -1,5 +1,6 @@
package com.mybatis.plugin1.rest;
+import com.gitee.starblues.realize.PluginUtils;
import com.mybatis.main.entity.User;
import com.mybatis.main.mapper.UserMapper;
import com.mybatis.main.service.TestTestTransactional;
@@ -22,10 +23,12 @@ public class UserController {
private final UserMapper userMapper;
private final TestTestTransactional testTestTransactional;
+
+
@Autowired
- public UserController(UserMapper userMapper, TestTestTransactional testTestTransactional) {
- this.userMapper = userMapper;
- this.testTestTransactional = testTestTransactional;
+ public UserController(PluginUtils pluginUtils) {
+ this.userMapper = pluginUtils.getMainBean(UserMapper.class);
+ this.testTestTransactional = pluginUtils.getMainBean(TestTestTransactional.class);
}
@GetMapping("/list")
diff --git a/example/integration-mybatis/plugins/integration-mybatis-plugin2/src/main/java/com/mybatis/plugin2/MybatisConfig2.java b/example/integration-mybatis/plugins/integration-mybatis-plugin2/src/main/java/com/mybatis/plugin2/MybatisConfig2.java
index efa972a2f3a56ea7d17bad6a0e8e85e737eaa3d4..8daa7a8311a8b040ec04fa473b296064ec7a6051 100644
--- a/example/integration-mybatis/plugins/integration-mybatis-plugin2/src/main/java/com/mybatis/plugin2/MybatisConfig2.java
+++ b/example/integration-mybatis/plugins/integration-mybatis-plugin2/src/main/java/com/mybatis/plugin2/MybatisConfig2.java
@@ -1,5 +1,6 @@
package com.mybatis.plugin2;
+import com.gitee.starblues.annotation.ConfigDefinition;
import com.gitee.starblues.extension.mybatis.SpringBootMybatisConfig;
import org.springframework.stereotype.Component;
@@ -11,7 +12,7 @@ import java.util.Set;
* @version 1.0
* @since 2020-12-18
*/
-@Component
+@ConfigDefinition
public class MybatisConfig2 implements SpringBootMybatisConfig {
@Override
diff --git a/example/integration-mybatis/plugins/integration-mybatis-plugin2/src/main/java/com/mybatis/plugin2/Plugin2Listener.java b/example/integration-mybatis/plugins/integration-mybatis-plugin2/src/main/java/com/mybatis/plugin2/Plugin2Listener.java
index ea5dfa6e7e03c81151079add506d21cbdbbee802..4e5aebb823a74010af368fdb6017f5ddf746eeb7 100644
--- a/example/integration-mybatis/plugins/integration-mybatis-plugin2/src/main/java/com/mybatis/plugin2/Plugin2Listener.java
+++ b/example/integration-mybatis/plugins/integration-mybatis-plugin2/src/main/java/com/mybatis/plugin2/Plugin2Listener.java
@@ -2,10 +2,12 @@ package com.mybatis.plugin2;
import com.gitee.starblues.realize.BasePlugin;
import com.gitee.starblues.realize.OneselfListener;
+import com.gitee.starblues.realize.PluginUtils;
import com.gitee.starblues.utils.OrderPriority;
import com.mybatis.main.mapper.RoleMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
/**
* description
@@ -19,8 +21,9 @@ public class Plugin2Listener implements OneselfListener {
private final RoleMapper roleMapper;
- public Plugin2Listener(RoleMapper roleMapper) {
- this.roleMapper = roleMapper;
+ @Autowired
+ public Plugin2Listener(PluginUtils pluginUtils){
+ roleMapper = pluginUtils.getMainBean(RoleMapper.class);
}
@Override
diff --git a/example/integration-mybatis/plugins/integration-mybatis-plugin2/src/main/java/com/mybatis/plugin2/rest/RoleController.java b/example/integration-mybatis/plugins/integration-mybatis-plugin2/src/main/java/com/mybatis/plugin2/rest/RoleController.java
index 1d8b1e9a52b8660ec584637b8005183b7e7c1b82..dfc92a332288dfe3178e3f5a29a62a1c6fe83206 100644
--- a/example/integration-mybatis/plugins/integration-mybatis-plugin2/src/main/java/com/mybatis/plugin2/rest/RoleController.java
+++ b/example/integration-mybatis/plugins/integration-mybatis-plugin2/src/main/java/com/mybatis/plugin2/rest/RoleController.java
@@ -1,5 +1,6 @@
package com.mybatis.plugin2.rest;
+import com.gitee.starblues.realize.PluginUtils;
import com.mybatis.main.entity.Role;
import com.mybatis.main.mapper.RoleMapper;
import org.springframework.beans.factory.annotation.Autowired;
@@ -22,8 +23,8 @@ public class RoleController {
private final RoleMapper roleMapper;
@Autowired
- public RoleController(RoleMapper roleMapper) {
- this.roleMapper = roleMapper;
+ public RoleController(PluginUtils pluginUtils){
+ roleMapper = pluginUtils.getMainBean(RoleMapper.class);
}
@GetMapping("/list")
diff --git a/example/integration-mybatisplus/integration-mybatisplus-main/pom.xml b/example/integration-mybatisplus/integration-mybatisplus-main/pom.xml
index f65a1a0e3a88143d9a787314f97708abd47c6818..fce0dc9f661ac28f8bb936466c0db860d91e84c2 100644
--- a/example/integration-mybatisplus/integration-mybatisplus-main/pom.xml
+++ b/example/integration-mybatisplus/integration-mybatisplus-main/pom.xml
@@ -7,7 +7,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.0.3.RELEASE
+ 2.4.2
diff --git a/example/integration-mybatisplus/integration-mybatisplus-main/src/main/java/com/mybatisplus/main/config/PluginBeanConfig.java b/example/integration-mybatisplus/integration-mybatisplus-main/src/main/java/com/mybatisplus/main/config/PluginBeanConfig.java
index b896a397903fefc34c78dc7f41e04c202da9dc85..b9e39dd9e51a97524462c3d8e294c892dd539f12 100644
--- a/example/integration-mybatisplus/integration-mybatisplus-main/src/main/java/com/mybatisplus/main/config/PluginBeanConfig.java
+++ b/example/integration-mybatisplus/integration-mybatisplus-main/src/main/java/com/mybatisplus/main/config/PluginBeanConfig.java
@@ -17,7 +17,6 @@ import org.springframework.context.annotation.Configuration;
@Configuration
public class PluginBeanConfig {
-
/**
* 定义插件应用。使用可以注入它操作插件。
* @return PluginApplication
@@ -31,5 +30,4 @@ public class PluginBeanConfig {
));
return pluginApplication;
}
-
}
diff --git a/example/integration-mybatisplus/integration-mybatisplus-main/src/main/resources/application-dev.yml b/example/integration-mybatisplus/integration-mybatisplus-main/src/main/resources/application-dev.yml
index d07e143ec314f784c4d4d5cd3058a9bdaa71a88a..9a4d4e72bc83bc6c2d9c7fa47fdced51c3da11c0 100644
--- a/example/integration-mybatisplus/integration-mybatisplus-main/src/main/resources/application-dev.yml
+++ b/example/integration-mybatisplus/integration-mybatisplus-main/src/main/resources/application-dev.yml
@@ -16,6 +16,6 @@ mybatis-plus:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
plugin:
- runMode: prod
- pluginPath: D:\code\open-source-code\springboot-plugin-framework-parent\example\integration-mybatisplus\dist\plugins
+ runMode: dev
+ pluginPath: ./example/integration-mybatisplus/plugins
pluginConfigFilePath:
\ No newline at end of file
diff --git a/example/integration-mybatisplus/plugins/integration-mybatisplus-plugin/src/main/java/com/mybatisplus/plugin/MybatisPlusConfig.java b/example/integration-mybatisplus/plugins/integration-mybatisplus-plugin/src/main/java/com/mybatisplus/plugin/MybatisPlusConfig2.java
similarity index 41%
rename from example/integration-mybatisplus/plugins/integration-mybatisplus-plugin/src/main/java/com/mybatisplus/plugin/MybatisPlusConfig.java
rename to example/integration-mybatisplus/plugins/integration-mybatisplus-plugin/src/main/java/com/mybatisplus/plugin/MybatisPlusConfig2.java
index dea3e3f22983a9b5752f3f8cf7a2e49c5d935477..df5b71b7c7d11428f23b94808b9e9b2458b597ae 100644
--- a/example/integration-mybatisplus/plugins/integration-mybatisplus-plugin/src/main/java/com/mybatisplus/plugin/MybatisPlusConfig.java
+++ b/example/integration-mybatisplus/plugins/integration-mybatisplus-plugin/src/main/java/com/mybatisplus/plugin/MybatisPlusConfig2.java
@@ -1,9 +1,8 @@
package com.mybatisplus.plugin;
-import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
+import com.gitee.starblues.annotation.ConfigDefinition;
import com.gitee.starblues.extension.mybatis.mybatisplus.SpringBootMybatisPlusConfig;
import com.google.common.collect.Sets;
-import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import org.springframework.stereotype.Component;
import java.util.Set;
@@ -13,8 +12,8 @@ import java.util.Set;
* @version 1.0
* @since 2020-12-14
*/
-@Component
-public class MybatisPlusConfig implements SpringBootMybatisPlusConfig {
+@ConfigDefinition("")
+public class MybatisPlusConfig2 implements SpringBootMybatisPlusConfig {
@Override
public Set entityPackage() {
return Sets.newHashSet("com.mybatisplus.plugin.entity");
@@ -25,17 +24,4 @@ public class MybatisPlusConfig implements SpringBootMybatisPlusConfig {
return Sets.newHashSet("classpath:mapper/*Mapper.xml");
}
- @Override
- public void oneselfConfig(MybatisSqlSessionFactoryBean sqlSessionFactoryBean) {
- MysqlDataSource mysqlDataSource = new MysqlDataSource();
- mysqlDataSource.setURL("jdbc:mysql://127.0.0.1:3306/ac_identity_auth?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC");
- mysqlDataSource.setUser("root");
- mysqlDataSource.setPassword("root");
- sqlSessionFactoryBean.setDataSource(mysqlDataSource);
- }
-
- @Override
- public boolean enableOneselfConfig() {
- return true;
- }
}
diff --git a/example/integration-mybatisplus/plugins/integration-mybatisplus-plugin/src/main/java/com/mybatisplus/plugin/rest/AppController.java b/example/integration-mybatisplus/plugins/integration-mybatisplus-plugin/src/main/java/com/mybatisplus/plugin/rest/AppController.java
index 98905d047f1e52ed36be1ba49f68149c86d8ed34..89da14b1b921d5ae434df17df420bf9ed8425387 100644
--- a/example/integration-mybatisplus/plugins/integration-mybatisplus-plugin/src/main/java/com/mybatisplus/plugin/rest/AppController.java
+++ b/example/integration-mybatisplus/plugins/integration-mybatisplus-plugin/src/main/java/com/mybatisplus/plugin/rest/AppController.java
@@ -1,5 +1,7 @@
package com.mybatisplus.plugin.rest;
+import com.mybatisplus.plugin.A;
+import com.mybatisplus.plugin.MybatisPlusPlugin;
import com.mybatisplus.plugin.entity.App;
import com.mybatisplus.plugin.entity.PluginData;
import com.mybatisplus.plugin.mapper.AppMapper;
@@ -24,6 +26,9 @@ public class AppController {
@Autowired
private AppMapper appMapper;
+ @Autowired
+ private A a;
+
@GetMapping
public List getAll(){
@@ -31,6 +36,12 @@ public class AppController {
}
+
+ @GetMapping("a")
+ public String getA(){
+ return a.getName();
+ }
+
@GetMapping("{version}")
public List getAll(@PathVariable("version") Integer version){
return appMapper.getAppVersion(version);
diff --git a/example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/config/TkMybatisPlusConfig.java b/example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/config/TkMybatisPlusConfig.java
index 838b0bec27b73810e9603719ceb1ba9996906972..bf8b5ca6f8b889425d3b9fd36be05ad14578caad 100644
--- a/example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/config/TkMybatisPlusConfig.java
+++ b/example/integration-tkmybatis/plugins/integration-tkmybatis-plugin/src/main/java/com/tkmybatis/plugin/config/TkMybatisPlusConfig.java
@@ -1,5 +1,6 @@
package com.tkmybatis.plugin.config;
+import com.gitee.starblues.annotation.ConfigDefinition;
import com.gitee.starblues.extension.mybatis.tkmyabtis.SpringBootTkMybatisConfig;
import com.google.common.collect.Sets;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
@@ -14,7 +15,7 @@ import java.util.Set;
* @version 1.0
* @since 2020-12-14
*/
-@Component
+@ConfigDefinition
public class TkMybatisPlusConfig implements SpringBootTkMybatisConfig {
@Override
diff --git a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/README.md b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/README.md
index 6c328c67fe753300c491928a3e540ef7f3d4da1f..ecb5844e39a8f65f95dc0fc289a4d098f788caca 100644
--- a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/README.md
+++ b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/README.md
@@ -1,4 +1,9 @@
-#扩展包 - 集成SpringBoot Mybatis
+### 特性
+- 支持在插件中自定义Mapper接口、Mapper xml 以及对应的实体bean
+- 支持插件独立定义数据源
+- 支持集成 `Mybatis`
+- 支持集成 `Mybatis-Plus`
+- 支持集成`Tk-Mybatis`
### maven 仓库地址
@@ -77,11 +82,12 @@ public PluginApplication pluginApplication(){
- 如果集成`mybatis-plus`, 则实现接口:`com.gitee.starblues.extension.mybatis.SpringBootMybatisPlusConfig`
- 如果集成`tkmybatis`, 则实现接口:`com.gitee.starblues.extension.mybatis.SpringBootTkMybatisConfig`
+- 以上实现类添加注解`@ConfigDefinition`
例如集成mybatis-plus:
```java
-@Component
+@ConfigDefinition
public class MybatisConfig implements SpringBootMybatisConfig {
@Override
@@ -102,7 +108,7 @@ public class MybatisConfig implements SpringBootMybatisConfig {
```
该步骤主要定义插件中的Mapper xml的位置。该位置的定义规则如下:
-
+- 注意: 插件中的xml路径不能和主程序中的xml路径在`resources`相对一致, 比如文件名都为`mapper`, 建议使用不同名称区分开
``` text
xmlLocationsMatch:
? 匹配一个字符
@@ -205,6 +211,8 @@ public void oneselfConfig(Config config){
### 版本升级
+#### 2.4.0 版本
+- 修改扩展功能中配置实现类,必须新增`@ConfigDefinition` 注解
#### 2.2.5 版本
全新升级该扩展
@@ -221,6 +229,4 @@ public void oneselfConfig(Config config){
2. 修复 Mapper.xml 中定义的 resultType 类型无法定义的bug。
#### 2.0.3 版本
-1. 修复Mapper无法注入的bug. (由于springboot-plugin-framework 2.0.3 版本升级导致)
-
-
+1. 修复Mapper无法注入的bug. (由于springboot-plugin-framework 2.0.3 版本升级导致)
\ No newline at end of file
diff --git a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/MapperHandler.java b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/MapperHandler.java
index 0ea44708b306dbeba129b8c3d7ba6d1c964c4345..0f8e55f88661a12ded490ee226f1bbc482361b0a 100644
--- a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/MapperHandler.java
+++ b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/MapperHandler.java
@@ -1,7 +1,6 @@
package com.gitee.starblues.extension.mybatis;
import com.gitee.starblues.extension.mybatis.group.PluginMapperGroup;
-import com.gitee.starblues.factory.PluginInfoContainer;
import com.gitee.starblues.factory.PluginRegistryInfo;
import com.gitee.starblues.factory.process.pipe.bean.name.PluginAnnotationBeanNameGenerator;
import org.apache.ibatis.session.SqlSessionFactory;
@@ -15,6 +14,7 @@ import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.support.BeanNameGenerator;
import org.springframework.beans.factory.support.GenericBeanDefinition;
+import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigUtils;
import org.springframework.context.annotation.AnnotationScopeMetadataResolver;
import org.springframework.context.annotation.ScopeMetadata;
@@ -38,10 +38,8 @@ public class MapperHandler {
private final ScopeMetadataResolver scopeMetadataResolver = new AnnotationScopeMetadataResolver();
- private final GenericApplicationContext applicationContext;
- public MapperHandler(GenericApplicationContext applicationContext) {
- this.applicationContext = applicationContext;
+ public MapperHandler() {
}
/**
@@ -51,6 +49,7 @@ public class MapperHandler {
*/
public void processMapper(PluginRegistryInfo pluginRegistryInfo,
MapperHandler.ProcessMapper processMapper){
+ GenericApplicationContext applicationContext = pluginRegistryInfo.getPluginApplicationContext();
List> groupClasses = pluginRegistryInfo.getGroupClasses(PluginMapperGroup.GROUP_ID);
if(groupClasses == null || groupClasses.isEmpty()){
return;
@@ -72,7 +71,6 @@ public class MapperHandler {
try {
processMapper.process(definitionHolder, groupClass);
beanNames.add(beanName);
- PluginInfoContainer.addRegisterBeanName(pluginId, beanName);
} catch (Exception e) {
LOGGER.error("process mapper '{}' error. {}", groupClass.getName(), e.getMessage(), e);
}
@@ -101,22 +99,6 @@ public class MapperHandler {
definition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE);
}
- /**
- * 公共卸载Mapper
- * @param pluginRegistryInfo 插件信息
- * @throws Exception 卸载异常
- */
- public void unRegistryMapper(PluginRegistryInfo pluginRegistryInfo) throws Exception {
- Set beanNames = pluginRegistryInfo.getExtension(MAPPER_INTERFACE_NAMES);
- if(beanNames == null){
- return;
- }
- String pluginId = pluginRegistryInfo.getPluginWrapper().getPluginId();
- for (String beanName : beanNames) {
- applicationContext.removeBeanDefinition(beanName);
- PluginInfoContainer.removeRegisterBeanName(pluginId, beanName);
- }
- }
@FunctionalInterface
diff --git a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/MybatisProcessor.java b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/MybatisProcessor.java
index 3e6b5fb638d57cc9107ec27df3221ca247acb130..cd522b045239c0dd8ca9a7c7de67ec7b59dd3fe6 100644
--- a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/MybatisProcessor.java
+++ b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/MybatisProcessor.java
@@ -1,9 +1,8 @@
package com.gitee.starblues.extension.mybatis;
-import com.gitee.starblues.extension.ExtensionConfigUtils;
import com.gitee.starblues.factory.PluginRegistryInfo;
-import com.gitee.starblues.factory.process.pipe.PluginPipeProcessorExtend;
-import com.gitee.starblues.utils.OrderPriority;
+import com.gitee.starblues.factory.process.pipe.bean.PluginBeanRegistrarExtend;
+import com.gitee.starblues.utils.PluginBeanUtils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.mapping.DatabaseIdProvider;
import org.apache.ibatis.plugin.Interceptor;
@@ -12,11 +11,8 @@ import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
-import org.pf4j.ClassLoadingStrategy;
-import org.pf4j.PluginWrapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.core.io.Resource;
@@ -25,16 +21,11 @@ import org.springframework.core.io.Resource;
* @author starBlues
* @version 2.3
*/
-public class MybatisProcessor implements PluginPipeProcessorExtend {
+public class MybatisProcessor implements PluginBeanRegistrarExtend {
private static final Logger LOGGER = LoggerFactory.getLogger(MybatisProcessor.class);
- private final GenericApplicationContext applicationContext;
- private final MapperHandler mapperHandler;
-
- public MybatisProcessor(ApplicationContext applicationContext) {
- this.applicationContext = (GenericApplicationContext) applicationContext;
- this.mapperHandler = new MapperHandler(this.applicationContext);
+ public MybatisProcessor() {
}
@Override
@@ -42,21 +33,10 @@ public class MybatisProcessor implements PluginPipeProcessorExtend {
return "MybatisProcessor";
}
- @Override
- public OrderPriority order() {
- return OrderPriority.getHighPriority();
- }
-
- @Override
- public void initialize() throws Exception {
-
- }
-
@Override
public void registry(PluginRegistryInfo pluginRegistryInfo) throws Exception {
- PluginWrapper pluginWrapper = pluginRegistryInfo.getPluginWrapper();
-
- SpringBootMybatisConfig config = ExtensionConfigUtils.getConfig(applicationContext, pluginWrapper.getPluginId(),
+ SpringBootMybatisConfig config = PluginBeanUtils.getObjectByInterfaceClass(
+ pluginRegistryInfo.getConfigSingletons(),
SpringBootMybatisConfig.class);
if(config == null){
return;
@@ -67,7 +47,8 @@ public class MybatisProcessor implements PluginPipeProcessorExtend {
if(config.enableOneselfConfig()){
config.oneselfConfig(factory);
} else {
- PluginFollowCoreConfig followCoreConfig = new PluginFollowCoreConfig(applicationContext);
+ GenericApplicationContext mainApplicationContext = pluginRegistryInfo.getMainApplicationContext();
+ PluginFollowCoreConfig followCoreConfig = new PluginFollowCoreConfig(mainApplicationContext);
factory.setDataSource(followCoreConfig.getDataSource());
Configuration configuration = followCoreConfig.getConfiguration(SpringBootMybatisExtension.Type.MYBATIS);
factory.setConfiguration(configuration);
@@ -100,12 +81,13 @@ public class MybatisProcessor implements PluginPipeProcessorExtend {
ClassLoader defaultClassLoader = Resources.getDefaultClassLoader();
try {
- Resources.setDefaultClassLoader(pluginRegistryInfo.getPluginClassLoader(PluginRegistryInfo.ClassLoaderStrategy.PAD));
+ Resources.setDefaultClassLoader(pluginRegistryInfo.getDefaultPluginClassLoader());
SqlSessionFactory sqlSessionFactory = factory.getObject();
if(sqlSessionFactory == null){
throw new Exception("Get mybatis sqlSessionFactory is null");
}
SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory);
+ MapperHandler mapperHandler = new MapperHandler();
mapperHandler.processMapper(pluginRegistryInfo, (holder, mapperClass) -> {
mapperHandler.commonProcessMapper(holder, mapperClass, sqlSessionFactory, sqlSessionTemplate);
});
@@ -115,10 +97,5 @@ public class MybatisProcessor implements PluginPipeProcessorExtend {
}
- @Override
- public void unRegistry(PluginRegistryInfo pluginRegistryInfo) throws Exception {
- mapperHandler.unRegistryMapper(pluginRegistryInfo);
- }
-
}
diff --git a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/PluginFollowCoreConfig.java b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/PluginFollowCoreConfig.java
index 455257c1934424d6dd8bbb1eae8419be6b8e1a29..97cc0671ce734dd91f1aa4a85f2fda27c6c0c588 100644
--- a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/PluginFollowCoreConfig.java
+++ b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/PluginFollowCoreConfig.java
@@ -22,22 +22,22 @@ import java.util.*;
*/
public class PluginFollowCoreConfig {
- private final ApplicationContext applicationContext;
+ private final ApplicationContext mainApplicationContext;
- public PluginFollowCoreConfig(ApplicationContext applicationContext) {
- this.applicationContext = applicationContext;
+ public PluginFollowCoreConfig(ApplicationContext mainApplicationContext) {
+ this.mainApplicationContext = mainApplicationContext;
}
public DataSource getDataSource(){
- return applicationContext.getBean(DataSource.class);
+ return mainApplicationContext.getBean(DataSource.class);
}
public Configuration getConfiguration(SpringBootMybatisExtension.Type type){
Configuration configuration = new Configuration();
if(type == SpringBootMybatisExtension.Type.MYBATIS){
try {
- Map customizerMap = applicationContext.getBeansOfType(ConfigurationCustomizer.class);
+ Map customizerMap = mainApplicationContext.getBeansOfType(ConfigurationCustomizer.class);
if(!customizerMap.isEmpty()){
for (ConfigurationCustomizer customizer : customizerMap.values()) {
customizer.customize(configuration);
@@ -54,7 +54,7 @@ public class PluginFollowCoreConfig {
MybatisConfiguration configuration = new MybatisConfiguration();
try {
Map customizerMap =
- applicationContext.getBeansOfType(com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer.class);
+ mainApplicationContext.getBeansOfType(com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer.class);
if(!customizerMap.isEmpty()){
for (com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer customizer : customizerMap.values()) {
customizer.customize(configuration);
@@ -69,7 +69,7 @@ public class PluginFollowCoreConfig {
public Interceptor[] getInterceptor(){
Map, Interceptor> interceptorMap = new HashMap<>();
try {
- SqlSessionFactory sqlSessionFactory = applicationContext.getBean(SqlSessionFactory.class);
+ SqlSessionFactory sqlSessionFactory = mainApplicationContext.getBean(SqlSessionFactory.class);
// 先从 SqlSessionFactory 工厂中获取拦截器
List interceptors = sqlSessionFactory.getConfiguration().getInterceptors();
if(interceptors != null){
@@ -84,7 +84,7 @@ public class PluginFollowCoreConfig {
// ignore
}
// 再从定义Bean中获取拦截器
- Map beanInterceptorMap = applicationContext.getBeansOfType(Interceptor.class);
+ Map beanInterceptorMap = mainApplicationContext.getBeansOfType(Interceptor.class);
if(!beanInterceptorMap.isEmpty()){
beanInterceptorMap.forEach((k, v)->{
// 如果Class一致, 则会覆盖
@@ -99,9 +99,9 @@ public class PluginFollowCoreConfig {
}
public DatabaseIdProvider getDatabaseIdProvider(){
- String[] beanNamesForType = applicationContext.getBeanNamesForType(DatabaseIdProvider.class, false, false);
+ String[] beanNamesForType = mainApplicationContext.getBeanNamesForType(DatabaseIdProvider.class, false, false);
if(beanNamesForType.length > 0){
- return applicationContext.getBean(DatabaseIdProvider.class);
+ return mainApplicationContext.getBean(DatabaseIdProvider.class);
}
return null;
}
@@ -110,7 +110,7 @@ public class PluginFollowCoreConfig {
public LanguageDriver[] getLanguageDriver(){
Map, LanguageDriver> languageDriverMap = new HashMap<>();
try {
- SqlSessionFactory sqlSessionFactory = applicationContext.getBean(SqlSessionFactory.class);
+ SqlSessionFactory sqlSessionFactory = mainApplicationContext.getBean(SqlSessionFactory.class);
LanguageDriverRegistry languageRegistry = sqlSessionFactory.getConfiguration()
.getLanguageRegistry();
// 先从 SqlSessionFactory 工厂中获取LanguageDriver
@@ -128,7 +128,7 @@ public class PluginFollowCoreConfig {
} catch (Exception e){
// ignore
}
- Map beansLanguageDriver = applicationContext.getBeansOfType(LanguageDriver.class);
+ Map beansLanguageDriver = mainApplicationContext.getBeansOfType(LanguageDriver.class);
if(!beansLanguageDriver.isEmpty()){
beansLanguageDriver.forEach((k, v)->{
// 如果Class一致, 则会覆盖
diff --git a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/PluginResourceFinder.java b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/PluginResourceFinder.java
index 423fe0b1b30bbd34f218e29cfbf66001c0cec5c2..7dc23d21d22425ab1d0e93d679a21d380b407f24 100644
--- a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/PluginResourceFinder.java
+++ b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/PluginResourceFinder.java
@@ -37,7 +37,7 @@ public class PluginResourceFinder {
public PluginResourceFinder(PluginRegistryInfo pluginRegistryInfo) {
- this.classLoader = pluginRegistryInfo.getPluginClassLoader(PluginRegistryInfo.ClassLoaderStrategy.PAD);
+ this.classLoader = pluginRegistryInfo.getDefaultPluginClassLoader();
this.resourcePatternResolver = new PathMatchingResourcePatternResolver(classLoader);;
}
diff --git a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/SpringBootMybatisExtension.java b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/SpringBootMybatisExtension.java
index 4e5689cdaa60dd33773731d6028e57f5f83ec285..acaba4b7b26a62e8aa60a01c9247a3f7ba50314c 100644
--- a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/SpringBootMybatisExtension.java
+++ b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/SpringBootMybatisExtension.java
@@ -7,6 +7,7 @@ import com.gitee.starblues.extension.mybatis.group.PluginMapperGroup;
import com.gitee.starblues.extension.mybatis.mybatisplus.MybatisPlusProcessor;
import com.gitee.starblues.extension.mybatis.tkmyabtis.TkMybatisProcessor;
import com.gitee.starblues.factory.process.pipe.PluginPipeProcessorExtend;
+import com.gitee.starblues.factory.process.pipe.bean.PluginBeanRegistrarExtend;
import com.gitee.starblues.factory.process.pipe.classs.PluginClassGroupExtend;
import org.springframework.context.ApplicationContext;
@@ -42,11 +43,11 @@ public class SpringBootMybatisExtension extends AbstractExtension {
}
@Override
- public void initialize(ApplicationContext applicationContext) throws Exception {
+ public void initialize(ApplicationContext mainApplicationContext) throws Exception {
}
@Override
- public List getPluginClassGroup(ApplicationContext applicationContext) {
+ public List getPluginClassGroup(ApplicationContext mainApplicationContext) {
final List pluginClassGroups = new ArrayList<>();
pluginClassGroups.add(new MybatisConfigGroup());
pluginClassGroups.add(new PluginEntityAliasesGroup());
@@ -55,16 +56,16 @@ public class SpringBootMybatisExtension extends AbstractExtension {
}
@Override
- public List getPluginPipeProcessor(ApplicationContext applicationContext) {
- final List pluginPipeProcessorExtends = new ArrayList<>();
+ public List getPluginBeanRegistrar(ApplicationContext mainApplicationContext) {
+ final List pluginBeanRegistrarExtends = new ArrayList<>(3);
if(type == Type.MYBATIS_PLUS){
- pluginPipeProcessorExtends.add(new MybatisPlusProcessor(applicationContext));
+ pluginBeanRegistrarExtends.add(new MybatisPlusProcessor());
} else if(type == Type.TK_MYBATIS){
- pluginPipeProcessorExtends.add(new TkMybatisProcessor(applicationContext));
+ pluginBeanRegistrarExtends.add(new TkMybatisProcessor());
} else {
- pluginPipeProcessorExtends.add(new MybatisProcessor(applicationContext));
+ pluginBeanRegistrarExtends.add(new MybatisProcessor());
}
- return pluginPipeProcessorExtends;
+ return pluginBeanRegistrarExtends;
}
public enum Type{
diff --git a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/mybatisplus/MybatisPlusProcessor.java b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/mybatisplus/MybatisPlusProcessor.java
index 22336904d730586cbfd50ed1fecec3fcb9a86c3e..012f7c29c7aa8ddda8fcbd5c71a264bdee6fae37 100644
--- a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/mybatisplus/MybatisPlusProcessor.java
+++ b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/mybatisplus/MybatisPlusProcessor.java
@@ -6,24 +6,20 @@ import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
-import com.gitee.starblues.extension.ExtensionConfigUtils;
import com.gitee.starblues.extension.mybatis.MapperHandler;
import com.gitee.starblues.extension.mybatis.PluginFollowCoreConfig;
import com.gitee.starblues.extension.mybatis.PluginResourceFinder;
import com.gitee.starblues.factory.PluginRegistryInfo;
-import com.gitee.starblues.factory.process.pipe.PluginPipeProcessorExtend;
-import com.gitee.starblues.utils.OrderPriority;
+import com.gitee.starblues.factory.process.pipe.bean.PluginBeanRegistrarExtend;
+import com.gitee.starblues.utils.PluginBeanUtils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.mapping.DatabaseIdProvider;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.scripting.LanguageDriver;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate;
-import org.pf4j.ClassLoadingStrategy;
-import org.pf4j.PluginWrapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.core.io.Resource;
@@ -33,16 +29,12 @@ import org.springframework.core.io.Resource;
* @author starBlues
* @version 2.3
*/
-public class MybatisPlusProcessor implements PluginPipeProcessorExtend {
+public class MybatisPlusProcessor implements PluginBeanRegistrarExtend {
private static final Logger LOGGER = LoggerFactory.getLogger(MybatisPlusProcessor.class);
- private final GenericApplicationContext applicationContext;
- private final MapperHandler mapperHandler;
- public MybatisPlusProcessor(ApplicationContext applicationContext) {
- this.applicationContext = (GenericApplicationContext) applicationContext;
- this.mapperHandler = new MapperHandler(this.applicationContext);
+ public MybatisPlusProcessor() {
}
@Override
@@ -50,33 +42,23 @@ public class MybatisPlusProcessor implements PluginPipeProcessorExtend {
return "MybatisPlusProcessor";
}
- @Override
- public OrderPriority order() {
- return OrderPriority.getMiddlePriority();
- }
-
- @Override
- public void initialize() throws Exception {
-
- }
@Override
public void registry(PluginRegistryInfo pluginRegistryInfo) throws Exception {
- PluginWrapper pluginWrapper = pluginRegistryInfo.getPluginWrapper();
-
- SpringBootMybatisPlusConfig config = ExtensionConfigUtils.getConfig(applicationContext,
- pluginWrapper.getPluginId(),
+ SpringBootMybatisPlusConfig config = PluginBeanUtils.getObjectByInterfaceClass(
+ pluginRegistryInfo.getConfigSingletons(),
SpringBootMybatisPlusConfig.class);
if(config == null){
return;
}
-
final MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean();
if(config.enableOneselfConfig()){
config.oneselfConfig(factory);
} else {
- PluginFollowCoreConfig followCoreConfig = new PluginFollowCoreConfig(applicationContext);
+ PluginFollowCoreConfig followCoreConfig = new PluginFollowCoreConfig(
+ pluginRegistryInfo.getMainApplicationContext()
+ );
factory.setDataSource(followCoreConfig.getDataSource());
factory.setConfiguration(followCoreConfig.getMybatisPlusConfiguration());
Interceptor[] interceptor = followCoreConfig.getInterceptor();
@@ -92,7 +74,7 @@ public class MybatisPlusProcessor implements PluginPipeProcessorExtend {
factory.setScriptingLanguageDrivers(languageDriver);
}
// 配置mybatis私有的配置
- mybatisPlusFollowCoreConfig(factory);
+ mybatisPlusFollowCoreConfig(factory, pluginRegistryInfo.getMainApplicationContext());
}
PluginResourceFinder pluginResourceFinder = new PluginResourceFinder(pluginRegistryInfo);
@@ -108,12 +90,13 @@ public class MybatisPlusProcessor implements PluginPipeProcessorExtend {
}
ClassLoader defaultClassLoader = Resources.getDefaultClassLoader();
try {
- Resources.setDefaultClassLoader(pluginRegistryInfo.getPluginClassLoader(PluginRegistryInfo.ClassLoaderStrategy.PAD));
+ Resources.setDefaultClassLoader(pluginRegistryInfo.getDefaultPluginClassLoader());
SqlSessionFactory sqlSessionFactory = factory.getObject();
if(sqlSessionFactory == null){
throw new Exception("Get mybatis-plus sqlSessionFactory is null");
}
SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory);
+ MapperHandler mapperHandler = new MapperHandler();
mapperHandler.processMapper(pluginRegistryInfo, (holder, mapperClass) -> {
mapperHandler.commonProcessMapper(holder, mapperClass, sqlSessionFactory, sqlSessionTemplate);
});
@@ -124,40 +107,36 @@ public class MybatisPlusProcessor implements PluginPipeProcessorExtend {
}
- @Override
- public void unRegistry(PluginRegistryInfo pluginRegistryInfo) throws Exception {
- mapperHandler.unRegistryMapper(pluginRegistryInfo);
- }
- private void mybatisPlusFollowCoreConfig(MybatisSqlSessionFactoryBean factory){
- MybatisPlusProperties plusProperties = applicationContext.getBean(MybatisPlusProperties.class);
+ private void mybatisPlusFollowCoreConfig(MybatisSqlSessionFactoryBean factory,
+ GenericApplicationContext parentApplicationContext){
+ MybatisPlusProperties plusProperties = parentApplicationContext.getBean(MybatisPlusProperties.class);
GlobalConfig globalConfig = plusProperties.getGlobalConfig();
- if (this.applicationContext.getBeanNamesForType(IKeyGenerator.class, false,
+ if (parentApplicationContext.getBeanNamesForType(IKeyGenerator.class, false,
false).length > 0) {
- IKeyGenerator keyGenerator = this.applicationContext.getBean(IKeyGenerator.class);
+ IKeyGenerator keyGenerator = parentApplicationContext.getBean(IKeyGenerator.class);
globalConfig.getDbConfig().setKeyGenerator(keyGenerator);
}
- if (this.applicationContext.getBeanNamesForType(MetaObjectHandler.class,
+ if (parentApplicationContext.getBeanNamesForType(MetaObjectHandler.class,
false, false).length > 0) {
- MetaObjectHandler metaObjectHandler = this.applicationContext.getBean(MetaObjectHandler.class);
+ MetaObjectHandler metaObjectHandler = parentApplicationContext.getBean(MetaObjectHandler.class);
globalConfig.setMetaObjectHandler(metaObjectHandler);
}
- if (this.applicationContext.getBeanNamesForType(IKeyGenerator.class, false,
+ if (parentApplicationContext.getBeanNamesForType(IKeyGenerator.class, false,
false).length > 0) {
- IKeyGenerator keyGenerator = this.applicationContext.getBean(IKeyGenerator.class);
+ IKeyGenerator keyGenerator = parentApplicationContext.getBean(IKeyGenerator.class);
globalConfig.getDbConfig().setKeyGenerator(keyGenerator);
}
- if (this.applicationContext.getBeanNamesForType(ISqlInjector.class, false,
+ if (parentApplicationContext.getBeanNamesForType(ISqlInjector.class, false,
false).length > 0) {
- ISqlInjector iSqlInjector = this.applicationContext.getBean(ISqlInjector.class);
+ ISqlInjector iSqlInjector = parentApplicationContext.getBean(ISqlInjector.class);
globalConfig.setSqlInjector(iSqlInjector);
}
factory.setGlobalConfig(globalConfig);
}
-
}
diff --git a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/tkmyabtis/TkMybatisProcessor.java b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/tkmyabtis/TkMybatisProcessor.java
index 8f2689e59c84d319e321ea7a1b296ffa22ea28b0..debfb080a0697492422da32f41fb65eb24e81b7b 100644
--- a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/tkmyabtis/TkMybatisProcessor.java
+++ b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/src/main/java/com/gitee/starblues/extension/mybatis/tkmyabtis/TkMybatisProcessor.java
@@ -1,27 +1,23 @@
package com.gitee.starblues.extension.mybatis.tkmyabtis;
-import com.gitee.starblues.extension.ExtensionConfigUtils;
import com.gitee.starblues.extension.mybatis.MapperHandler;
import com.gitee.starblues.extension.mybatis.PluginFollowCoreConfig;
import com.gitee.starblues.extension.mybatis.PluginResourceFinder;
import com.gitee.starblues.extension.mybatis.SpringBootMybatisExtension;
import com.gitee.starblues.factory.PluginRegistryInfo;
-import com.gitee.starblues.factory.process.pipe.PluginPipeProcessorExtend;
-import com.gitee.starblues.utils.OrderPriority;
+import com.gitee.starblues.factory.process.pipe.bean.PluginBeanRegistrarExtend;
+import com.gitee.starblues.utils.PluginBeanUtils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.mapping.DatabaseIdProvider;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
-import org.pf4j.ClassLoadingStrategy;
-import org.pf4j.PluginWrapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.config.BeanDefinitionHolder;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.GenericBeanDefinition;
-import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.core.io.Resource;
import tk.mybatis.mapper.entity.Config;
@@ -33,17 +29,13 @@ import tk.mybatis.spring.mapper.MapperFactoryBean;
* @author starBlues
* @version 2.3
*/
-public class TkMybatisProcessor implements PluginPipeProcessorExtend {
+public class TkMybatisProcessor implements PluginBeanRegistrarExtend {
private static final Logger LOGGER = LoggerFactory.getLogger(TkMybatisProcessor.class);
- private final GenericApplicationContext applicationContext;
- private final MapperHandler mapperHandler;
private final MapperFactoryBean> mapperFactoryBean = new MapperFactoryBean