Solo  当前访客:0 开始使用

Y 的个人博客

Java/C#/Linux

Spring Boot 快速入门之基础篇(一) 有更新!

2019-03-21 13:48:32 yang17762622
0  评论    69  浏览

一、前言

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

二、特点

  1. 创建独立的Spring应用程序

  2. 嵌入的Tomcat,无需部署WAR文件

  3. 简化Maven配置

  4. 自动配置Spring

  5. 提供生产就绪型功能,如指标,健康检查和外部配置

  6. 绝对没有代码生成并且对XML也没有配置要求

三、环境搭建

3.1 创建项目

1.创建新项目, 选择“Spring Initializr” ,点击“Next”

image.png

2.填写包名和项目名称后,点击“Next”

image.png

3.根据自己的项目选择对应的依赖,我这里只选择了一个web,后续的自己添加,点击“Next”

image.png

4.填写项目名称和项目路径等,点击“Finish”
image.png

5.删除.mvn文件夹和mvnw、mvnw.cmd两个文件,基本项目的目录结构就已经完成了

image.png

3.2 HelloWorld

创建controller包,新建一个HelloController类

package com.y.springboot.springboot.controller;


import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @RequestMapping(value = "/helloworld",method = RequestMethod.GET)
    public String helloworld(){
        return "Hello World!";
    }
}

选择SpringBootApplcation后右键点击’Run SpringBootApplcation’ 启动项目,看到Started SpringbootApplication in 2.022 seconds (JVM running for 3.321) 类似字样表示启动成功

打开浏览器访问 http://localhost:8080/helloworld ,结果如下:

image.png

四、热部署

热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。

pom.xml中添加依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
    </build>

若热部署无效,则执行以下步骤:
1. File -> Settings ->Build ,Execution ,Deployment ->Compiler 勾选 Build project automatically
2. ctrl+alt+shift+/ 找到 Registry 勾选 compiler.automake.allow.when.app.running

image.png

image.png

效果演示

1.gif

五、多环境

在resources下创建三个文件应用于不同环境下的配置信息:

application-dev.properties //开发环境
application-prod.properties //测试环境
application-test.properties //测试环境

在application.properties中配置公共信息以及切换对应的配置文件

spring.profiles.active=dev

修改spring.profiles.active的值,达到切换环境的目的。演示图如下:

2.gif

六、日志配置(logback官方推荐使用)

spring boot 默认会加载 classpath:logback-spring.xml 或者 classpath:logback-spring.groovy
如需自定义名称,在application.properties中配置logging.config属性即可。

在resources创建logback-spring.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<configuration>
    <!-- 文件输出格式 -->
    <property name="PATTERN" value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%thread] %c [%L] -| %msg%n" />
    <!-- test文件路径 -->
    <property name="TEST_FILE_PATH" value="d:/test.log" />
    <!-- pro文件路径 -->
    <property name="PRO_FILE_PATH" value="/root/prod.log" />

    <!-- 开发环境 -->
    <springProfile name="dev">
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>${PATTERN}</pattern>
            </encoder>
        </appender>
        <!-- 指定包打印sql-->
        <logger name="com.y.springboot.mapper" level="debug" />
        <root level="info">
            <appender-ref ref="CONSOLE" />
        </root>
    </springProfile>

    <!-- 测试环境 -->
    <springProfile name="test">
        <!-- 每天产生一个文件 -->
        <appender name="TEST-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 文件路径 -->
            <file>${TEST_FILE_PATH}</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 文件名称 -->
                <fileNamePattern>${TEST_FILE_PATH}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
                <!-- 文件最大保存历史数量 -->
                <MaxHistory>100</MaxHistory>
            </rollingPolicy>
            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>${PATTERN}</pattern>
            </layout>
        </appender>
        <logger name="com.tes.sys.onlineedu" level="debug" />
        <root level="info">
            <appender-ref ref="TEST-FILE" />
        </root>
    </springProfile>

    <!-- 生产环境 -->
    <springProfile name="prod">
        <appender name="PROD_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${PRO_FILE_PATH}</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${PRO_FILE_PATH}/warn.%d{yyyy-MM-dd}.log</fileNamePattern>
                <MaxHistory>100</MaxHistory>
            </rollingPolicy>
            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>${PATTERN}</pattern>
            </layout>
        </appender>
        <!--<root level="warn">-->
            <!--<appender-ref ref="PROD_FILE" />-->
        <!--</root>-->
        <logger name="com.tes.sys.com.healthsafe.mapper" level="debug" />
        <root level="info">
            <appender-ref ref="PROD_FILE" />
        </root>
    </springProfile>
</configuration>

七、打包运行

7.1 jar

在默认情况下,springboot打包成的jar形式。通过maven ->package 生成jar包,可以直接java -jar运行
打包效果如下:

11.png

7.2 war

打包成部署的 war 包,需要让SpringbootApplication 类继承 SpringBootServletInitializer 并重写 configure 方法,如下:

package com.y.springboot.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class SpringbootApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SpringbootApplication.class);
    }
    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
    }

}

pom.xml文件修改:

<packaging>war</packaging>

打包效果如下:

22.png

,

发表评论

TOP