• spring Initializr 笔记


    1. 根据项目,修改Application.properties, 

    需要继承类ProjectContributor,并且对外公布为@Bean

    public class ApplicationPropertiesContributor implements ProjectContributor {
    
        private ProjectDescription description;
    
        public ApplicationPropertiesContributor(ProjectDescription description) {
            this.description = description;
        }
    
        private final String relativePath = "src/main/resources/application.properties";
        private final String resourcePattern = "classpath:configuration/application.properties";
    
        private final PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
    
        @Override
        public void contribute(Path projectRoot) throws IOException {
    
            Path output = projectRoot.resolve(this.relativePath);
            if (!Files.exists(output)) {
                Files.createDirectories(output.getParent());
                Files.createFile(output);
            }
    
         //将现有配置项中Application.properties复制到target路径,然后Append自定义配置 Resource resource
    = this.resolver.getResource(this.resourcePattern); FileCopyUtils.copy(resource.getInputStream(), Files.newOutputStream(output, StandardOpenOption.APPEND)); if (this.description.getRequestedDependencies().containsKey("nacos-discovery")) { try (PrintWriter writer = new PrintWriter(Files.newBufferedWriter(output, StandardOpenOption.APPEND))) { writer.println(); writer.println("spring.cloud.nacos.discovery.username=nacos"); writer.println("spring.cloud.nacos.discovery.password=nacos"); writer.println("spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848"); writer.println("spring.cloud.nacos.discovery.namespace=public"); } } } }

    2. 如果需要对启动Main方法做私有化定制,需要实现 MainApplicationTypeCustomizer,如pom引入了openFeign依赖,则需要在main方法中添加注解@EnableFeignClients

        @Bean
        public MainApplicationTypeCustomizer<TypeDeclaration> nacosDiscoveryApplicationAnnotator(ProjectDescription projectDescription, Build build) {
            return typeDeclaration -> {
                if (projectDescription.getRequestedDependencies().containsKey("nacos-discovery")) {
                    typeDeclaration
                            .annotate(Annotation.name("org.springframework.cloud.client.discovery.EnableDiscoveryClient"));
                }
                if (build.dependencies().has("cloud-feign")) {
                    typeDeclaration
                            .annotate(Annotation.name("org.springframework.cloud.openfeign.EnableFeignClients"));
                }
            };
        }

    最终直接结果如下:

    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableFeignClients
    public class NacosConfigDemoApplication {
      public static void main(String[] args) {
        SpringApplication.run(NacosConfigDemoApplication.class, args);
      }
    
    }

    3.通过实现 HelpDocumentCustomizer, 实现在Help.md中添加自定义信息,如:

    public class LixiangHelpDocumentCustomizer implements HelpDocumentCustomizer {
        private ProjectDescription projectDescription;
    
        public LixiangHelpDocumentCustomizer(ProjectDescription projectDescription) {
            this.projectDescription = projectDescription;
        }
    
        @Override
        public void customize(HelpDocument document) {
    
            if (projectDescription.getRequestedDependencies().containsKey("nacos-config")) {
                document.gettingStarted().addGuideLink("https://github.com/alibaba/spring-cloud-alibaba/tree/master/spring-cloud-alibaba-examples/nacos-example/nacos-config-example",
                        "Nacos Configuration Example");
                document.getWarnings().addItem("如果spring-boot版本高于2.4.0,并且配置未生效的话, 请在systerm.Envrionment中尝试配置如下属性'spring.cloud.bootstrap.enabled=true'.");
            }
            if (projectDescription.getRequestedDependencies().containsKey("nacos-discovery")) {
                document.gettingStarted().addGuideLink("https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/readme.md",
                        "Nacos Service Discovery Example");
            }
        }
    }

      

  • 相关阅读:
    k8s官网 基础知识入门教程
    Mac安装minikube
    docker下创建crontab定时任务失败
    docker save提示no space left on device错误
    cx_Oracle读写clob
    Ossec添加Agent端流程总结
    ossec变更alert等级及配置邮件预警
    linux安全配置检查脚本_v0.5
    linux命令返回值的妙用
    Shell脚本判断内容为None的方式
  • 原文地址:https://www.cnblogs.com/snow-man/p/15286613.html
Copyright © 2020-2023  润新知