您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页Spring Cloud入门2

Spring Cloud入门2

来源:意榕旅游网

Spring Cloud入门2

我的开发环境

  • jdk1.8
  • maven3.5.0
  • win7 位

SpringBoot简介

  • pivotal团队提供的全新的框架,其设计的目的是简化新Spring应用的初始化搭建以及开发过程,该框架使用了特定的方式进行配置,从而使开发人员不再需要定义样板话的配置,而且可以通过starter的方式轻松集成第三方的框架,去掉了XML的配置,全部用注解代替。
  • 优点
  • 搭建SpringBoot的关键

    • pom.xml

      <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>2.0.6.RELEASE</version>
      </parent>
      
      <dependencies>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-web</artifactId>
          </dependency>
      </dependencies>
      
    • main入口

      @SpringBootApplication
      public class App {
      
          public static void main(String[] args) {
              SpringApplication.run(App.class, args);
          }
      }
      
    • 控制类

      @RestController
      public class HelloController {
      
          @GetMapping("/hello")
          public String hello() {
              return "hello";
          }
      }
      
    • 配置文件

      1. Environment 的 getProperty 方法

        @RestController
        public class HelloController {
        
            // 注入对象
            @Autowired
            private Environment env;
        
            @GetMapping("/hello")
            public String hello() {
                // 读取配置
                String port = env.getProperty("server.port");
                return port;
            }
        }
        
      2. @Value

        @RestController
        public class HelloController {
        
            // 注入配置
            @Value("${server.port}")
            private String port;
        
            @GetMapping("/hello")
            public String hello() {
                return port;
            }
        }
        
      3. 自定义配置类

        @ConfigurationProperties(prefix = "net.biancheng")
        @Component
        public class MyConfig {
        
            private String name;
        
            public String getName() {
                return name;
            }
        
            public void setName(String name) {
                this.name = name;
            }
        
        }
        

         

        @RestController
        public class HelloController {
        
            @Autowired
            private MyConfig myConfig;
        
            @GetMapping("/hello")
            public String hello() {
                return myConfig.getName();
            }
        }
        

         

        net.biancheng.name=zhangsan
        
  • SpringBoot多环境配置

    • spring.profiles.active
  • 热部署
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </dependency>
    
  • actuator监控【监控和管理自身应用信息的模块】
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  • 异步
    • @Async【一定要在外部的类中去调用这个方法,如果在本类调用则不起作用】
  • 随机端口

    • server.port=${random.int[2000,8000]}
    • 代码生产没有占用的端口

      public class StartCommand {
          private Logger logger = LoggerFactory.getLogger(StartCommand.class);
      
          public StartCommand(String[] args) {
              Boolean isServerPort = false;
              String serverPort = "";
              if (args != null) {
                  for (String arg : args) {
                      if (StringUtils.hasText(arg) && arg.startsWith("--server.port")) {
                          isServerPort = true;
                          serverPort = arg;
                          break;
                      }
                  }
              }
              // 没有指定端口, 则随机生成一个可用的端口
              if (!isServerPort) {
                  int port = ServerPortUtils.getAvailablePort();
                  logger.info("current server.port=" + port);
                  System.setProperty("server.port", String.valueOf(port));
              } else {
                  logger.info("current server.port=" + serverPort.split("=")[1]);
                  System.setProperty("server.port", serverPort.split("=")[1]);
              }
          }
      }
      

       

      public static int getAvailablePort() {
          int max = 65535;
          int min = 2000;
          Random random = new Random();
          int port = random.nextInt(max)%(max-min+1) + min;
          boolean using = NetUtils.isLoclePortUsing(port);
          if (using) {
              return getAvailablePort();
          } else {
              return port;
          }
      }
      
  • 编译打包

    <build>
        <plugins>
            <!-- 打包插件 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <executable>true</executable>
                    <mainClass>net.biancheng.spring_boot_example.App</mainClass>
                </configuration>
            </plugin>
    
            <!-- 编译插件, 指定JDK版本 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
    • 启动执行
      • java–jar xx.jar

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务