소스 검색

添加类管理器管理spring类

qiubo 4 년 전
부모
커밋
16f43a0220

+ 2 - 0
carbon-back/carbon-back-service/src/main/java/com/hcloud/microserver/system/CarbonSystemApplication.java

@@ -1,6 +1,7 @@
 package com.hcloud.microserver.system;
 
 
+import com.hcloud.microserver.security.annotation.EnableCustomConfig;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -15,6 +16,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
  * @author ruoyi
  */
 
+@EnableCustomConfig
 @EnableAsync
 @EnableDiscoveryClient
 @EnableTransactionManagement

+ 3 - 1
carbon-bank/carbon-bank-service/src/main/java/com/hcloud/microserver/system/bank/BankServiceApplication.java

@@ -1,5 +1,6 @@
 package com.hcloud.microserver.system.bank;
 
+import com.hcloud.microserver.security.annotation.EnableCustomConfig;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -9,8 +10,9 @@ import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 /**
- * @author xiezt
+ * @author qiubo
  */
+@EnableCustomConfig
 @EnableAsync
 @EnableDiscoveryClient
 @EnableTransactionManagement

+ 7 - 0
carbon-job/src/main/java/com/hcloud/microserver/job/PlatformJobApplication.java

@@ -1,20 +1,27 @@
 package com.hcloud.microserver.job;
 
+import com.hcloud.microserver.commoncore.util.SpringUtils;
+import com.hcloud.microserver.security.annotation.EnableCustomConfig;
+import com.hcloud.microserver.security.annotation.EnableRyFeignClients;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.SpringCloudApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Import;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
+@EnableRyFeignClients
+@EnableCustomConfig
 @EnableAsync
 @EnableDiscoveryClient
 @EnableTransactionManagement
 @MapperScan(basePackages = {"com.hcloud.microserver.mbg.mapper","com.hcloud.microserver.job.mapper"})
 @SpringBootApplication
 @SpringCloudApplication
+@Import(SpringUtils.class)
 public class PlatformJobApplication
 {
     public static void main(String[] args)

+ 82 - 0
carbon-job/src/main/java/com/hcloud/microserver/job/config/Swagger2Config.java

@@ -0,0 +1,82 @@
+package com.hcloud.microserver.job.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.*;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spi.service.contexts.SecurityContext;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *  Swagger API文档相关配置
+ * Created by macro on 2018/4/26.
+ */
+@Configuration
+@EnableSwagger2
+@EnableKnife4j
+@Import(BeanValidatorPluginsConfiguration.class)
+public class Swagger2Config {
+    @Bean
+    public Docket createRestApi(){
+        return new Docket(DocumentationType.SWAGGER_2)
+                .apiInfo(apiInfo())
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("com.hcloud.microserver.job.controller"))
+                .paths(PathSelectors.any())
+                .build()
+                .securitySchemes(securitySchemes())
+                .securityContexts(securityContexts());
+    }
+
+    private ApiInfo apiInfo() {
+        return new ApiInfoBuilder()
+                .title("重庆碳汇任务管理系统")
+                .description("重庆碳汇任务管理系统")
+                .contact(new Contact("carbon","",""))
+                .version("0.0.1")
+                .build();
+    }
+
+    private List<ApiKey> securitySchemes() {
+        //设置请求头信息
+        List<ApiKey> result = new ArrayList<>();
+        ApiKey apiKey = new ApiKey("Authorization", "Authorization", "header");
+        result.add(apiKey);
+        return result;
+    }
+
+    private List<SecurityContext> securityContexts() {
+        //设置需要登录认证的路径
+        List<SecurityContext> result = new ArrayList<>();
+        result.add(getContextByPath("/brand/.*"));
+        result.add(getContextByPath("/product/.*"));
+        result.add(getContextByPath("/productCategory/.*"));
+        return result;
+    }
+
+    private SecurityContext getContextByPath(String pathRegex){
+        return SecurityContext.builder()
+                .securityReferences(defaultAuth())
+                .forPaths(PathSelectors.regex(pathRegex))
+                .build();
+    }
+
+    private List<SecurityReference> defaultAuth() {
+        List<SecurityReference> result = new ArrayList<>();
+        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
+        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
+        authorizationScopes[0] = authorizationScope;
+        result.add(new SecurityReference("Authorization", authorizationScopes));
+        return result;
+    }
+}

+ 1 - 1
carbon-job/src/main/resources/bootstrap.yml

@@ -16,7 +16,7 @@ spring:
         server-addr: 127.0.0.1:8892
       config:
         server-addr: 127.0.0.1:8892
-        prefix: carbon-job
+        prefix: schedule
         file-extension: yml
         # 公共配置文件
         shared-dataids: carbon-common.yml

+ 26 - 0
carbon-security/src/main/java/com/hcloud/microserver/security/annotation/EnableCustomConfig.java

@@ -0,0 +1,26 @@
+package com.hcloud.microserver.security.annotation;
+
+import com.hcloud.microserver.security.config.ApplicationConfig;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+import org.springframework.context.annotation.Import;
+import org.springframework.scheduling.annotation.EnableAsync;
+
+import java.lang.annotation.*;
+
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Inherited
+// 表示通过aop框架暴露该代理对象,AopContext能够访问
+@EnableAspectJAutoProxy(exposeProxy = true)
+// 指定要扫描的Mapper类的包的路径
+@MapperScan("com.ruoyi.**.mapper")
+// 开启线程异步执行
+@EnableAsync
+// 自动加载类
+@Import({ApplicationConfig.class})
+public @interface EnableCustomConfig
+{
+
+}

+ 28 - 0
carbon-security/src/main/java/com/hcloud/microserver/security/annotation/EnableRyFeignClients.java

@@ -0,0 +1,28 @@
+package com.hcloud.microserver.security.annotation;
+
+import org.springframework.cloud.openfeign.EnableFeignClients;
+
+import java.lang.annotation.*;
+
+/**
+ * 自定义feign注解
+ * 添加basePackages路径
+ * 
+ * @author ruoyi
+ */
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@EnableFeignClients
+public @interface EnableRyFeignClients
+{
+    String[] value() default {};
+
+    String[] basePackages() default { "com.hcloud.microserver" };
+
+    Class<?>[] basePackageClasses() default {};
+
+    Class<?>[] defaultConfiguration() default {};
+
+    Class<?>[] clients() default {};
+}

+ 23 - 0
carbon-security/src/main/java/com/hcloud/microserver/security/config/ApplicationConfig.java

@@ -0,0 +1,23 @@
+package com.hcloud.microserver.security.config;
+
+import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
+import org.springframework.context.annotation.Bean;
+
+import java.util.TimeZone;
+
+/**
+ * 系统配置
+ *
+ * @author ruoyi
+ */
+public class ApplicationConfig
+{
+    /**
+     * 时区配置
+     */
+    @Bean
+    public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization()
+    {
+        return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault());
+    }
+}

+ 26 - 6
common-core/src/main/java/com/hcloud/microserver/commoncore/util/SpringUtils.java

@@ -3,8 +3,11 @@ package com.hcloud.microserver.commoncore.util;
 import org.springframework.aop.framework.AopContext;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.NoSuchBeanDefinitionException;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
 import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
 import org.springframework.stereotype.Component;
 
 /**
@@ -13,16 +16,33 @@ import org.springframework.stereotype.Component;
  * @author ruoyi
  */
 @Component
-public final class SpringUtils implements BeanFactoryPostProcessor
+public final class SpringUtils implements ApplicationContextAware
 {
-    /** Spring应用上下文环境 */
-    private static ConfigurableListableBeanFactory beanFactory;
+
+    private static ApplicationContext beanFactory;
 
     @Override
-    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException
-    {
-        SpringUtils.beanFactory = beanFactory;
+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+        if(SpringUtils.beanFactory == null) {
+            SpringUtils.beanFactory = applicationContext;
+        }
+        System.out.println("---------------------------------------------------------------------");
+
+        System.out.println("---------------------------------------------------------------------");
+
+        System.out.println("---------------com.hcloud.microserver.commoncore.util------------------------------------------------------");
+
+        System.out.println("---------------------------------------------------------------------");
     }
+//    /** Spring应用上下文环境 */
+//    private static ConfigurableListableBeanFactory beanFactory;
+//
+//    @Override
+//    @Autowired
+//    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException
+//    {
+//        SpringUtils.beanFactory = beanFactory;
+//    }
 
     /**
      * 获取对象