[SpringBoot Usage] SpringBoot (1) QuickStart

前言

使用SpringBoot已经好几个年头了, 一直没总结其相关的使用及其技巧, 本次, 时间充裕, 正好总结下相关的使用技巧, 方便后面项目的快速搭建和参照.

本章是SpringBoot使用系列的第一篇, quickStart,


前置操作

  • JDK
  • Maven
  • IDEA

相关操作 - QuickStart

添加相关依赖包.

因为使用JDK8作为主开发环境, 所以未使用最新的SpringBoot 3.0. 本章教学的内容皆使用SpringBoot 2.3.12RELEASE作为主要的SpringBoot版本.

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <springboot.version>2.3.12.RELEASE</springboot.version>
        <lombock.version>1.18.12</lombock.version>
    </properties>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
启动类
package com.yanxml.arsenal.springboot.quickstart;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication(scanBasePackages = {"com.yanxml.arsenal.springboot"})

public class Application {

    public static void main(String[] args) {
        SpringApplication application =  new SpringApplication(Application.class);
        application.run(args);
    }
}

其中主要出现了1个注解, @SpringBootApplication注解.

  • SpringBootApplication是几个符合标签组合而成. 其scanBasePackages主要指定需要自动注入Bean需要扫描的包名.
  • application.run(args);. 如果我们在启动的使用, 在args内进行传参, 我们是可以通过Envionment这个类的单例Bean获取到的.
Controller demo类
package com.yanxml.arsenal.springboot.quickstart.controller;

import org.springframework.web.bind.annotation.*;

/**
 * HelloWorld Controller.
 *
 * @author seanyanxml
 * @date 2023-01-31
 */

@RestController
@RequestMapping(path = "/helloworld")
public class HelloWorldController {

    @RequestMapping(path = "/get", method = RequestMethod.GET)
    public String testGetMethod() {
        return "hello";
    }

}

其中主要出现了2个标签@RequestMapping注解, @RestController注解,

  • @RestController也是由多个注解组合而成.
  • @RequestMapping, 主要包括, 映射方法的地址, 映射方法的HTTPMethod的类型等功能. 在SpringMVC时代, 都是需要手动指定映射关系, SpringBoot的出现简化了手动编写的过程.
application.yml 配置文件
server:
  port: 8080
  servlet:
    context-path: /arsenal-springboot

本章由于是项目的启动初始, 所以相关的配置较少. 只有2个相关的配置.

  • server.port用于指定springboot-web程序使用的端口号.
  • server.servlet 用于指定springboot-web程序的访问地址的统一前缀.

启动 & 测试

run Application.class
D:\develop\jdk\jdk_8\bin\java.exe -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always "-javaagent:D:\develop\IDEA\IntelliJ IDEA 2021.1.3\lib\idea_rt.jar=6930:D:\develop\IDEA\IntelliJ IDEA 2021.1.3\bin" -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -Dfile.encoding=UTF-8 -classpath D:\develop\jdk\jdk_8\jre\lib\charsets.jar;D:\develop\jdk\jdk_8\jre\lib\deploy.jar;D:\develop\jdk\jdk_8\jre\lib\ext\access-bridge-64.jar;D:\develop\jdk\jdk_8\jre\lib\ext\cldrdata.jar;D:\develop\jdk\jdk_8\jre\lib\ext\dnsns.jar;D:\develop\jdk\jdk_8\jre\lib\ext\jaccess.jar;D:\develop\jdk\jdk_8\jre\lib\ext\jfxrt.jar;D:\develop\jdk\jdk_8\jre\lib\ext\localedata.jar;D:\develop\jdk\jdk_8\jre\lib\ext\nashorn.jar;D:\develop\jdk\jdk_8\jre\lib\ext\sunec.jar;D:\develop\jdk\jdk_8\jre\lib\ext\sunjce_provider.jar;D:\develop\jdk\jdk_8\jre\lib\ext\sunmscapi.jar;D:\develop\jdk\jdk_8\jre\lib\ext\sunpkcs11.jar;D:\develop\jdk\jdk_8\jre\lib\ext\zipfs.jar;D:\develop\jdk\jdk_8\jre\lib\javaws.jar;D:\develop\jdk\jdk_8\jre\lib\jce.jar;D:\develop\jdk\jdk_8\jre\lib\jfr.jar;D:\develop\jdk\jdk_8\jre\lib\jfxswt.jar;D:\develop\jdk\jdk_8\jre\lib\jsse.jar;D:\develop\jdk\jdk_8\jre\lib\management-agent.jar;D:\develop\jdk\jdk_8\jre\lib\plugin.jar;D:\develop\jdk\jdk_8\jre\lib\resources.jar;D:\develop\jdk\jdk_8\jre\lib\rt.jar;D:\repository\arsenal-public\arsenal-springboot-usage\arsenal-springboot-quickstart\target\classes;C:\Users\sean\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.3.12.RELEASE\spring-boot-starter-web-2.3.12.RELEASE.jar;C:\Users\sean\.m2\repository\org\springframework\boot\spring-boot-starter\2.3.12.RELEASE\spring-boot-starter-2.3.12.RELEASE.jar;C:\Users\sean\.m2\repository\org\springframework\boot\spring-boot\2.3.12.RELEASE\spring-boot-2.3.12.RELEASE.jar;C:\Users\sean\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.3.12.RELEASE\spring-boot-autoconfigure-2.3.12.RELEASE.jar;C:\Users\sean\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.3.12.RELEASE\spring-boot-starter-logging-2.3.12.RELEASE.jar;C:\Users\sean\.m2\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;C:\Users\sean\.m2\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;C:\Users\sean\.m2\repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;C:\Users\sean\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.13.3\log4j-to-slf4j-2.13.3.jar;C:\Users\sean\.m2\repository\org\apache\logging\log4j\log4j-api\2.13.3\log4j-api-2.13.3.jar;C:\Users\sean\.m2\repository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;C:\Users\sean\.m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;C:\Users\sean\.m2\repository\org\springframework\spring-core\5.2.15.RELEASE\spring-core-5.2.15.RELEASE.jar;C:\Users\sean\.m2\repository\org\springframework\spring-jcl\5.2.15.RELEASE\spring-jcl-5.2.15.RELEASE.jar;C:\Users\sean\.m2\repository\org\yaml\snakeyaml\1.26\snakeyaml-1.26.jar;C:\Users\sean\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.3.12.RELEASE\spring-boot-starter-json-2.3.12.RELEASE.jar;C:\Users\sean\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.11.4\jackson-databind-2.11.4.jar;C:\Users\sean\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.11.4\jackson-annotations-2.11.4.jar;C:\Users\sean\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.11.4\jackson-core-2.11.4.jar;C:\Users\sean\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.11.4\jackson-datatype-jdk8-2.11.4.jar;C:\Users\sean\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.11.4\jackson-datatype-jsr310-2.11.4.jar;C:\Users\sean\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.11.4\jackson-module-parameter-names-2.11.4.jar;C:\Users\sean\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.3.12.RELEASE\spring-boot-starter-tomcat-2.3.12.RELEASE.jar;C:\Users\sean\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.46\tomcat-embed-core-9.0.46.jar;C:\Users\sean\.m2\repository\org\glassfish\jakarta.el\3.0.3\jakarta.el-3.0.3.jar;C:\Users\sean\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.46\tomcat-embed-websocket-9.0.46.jar;C:\Users\sean\.m2\repository\org\springframework\spring-web\5.2.15.RELEASE\spring-web-5.2.15.RELEASE.jar;C:\Users\sean\.m2\repository\org\springframework\spring-beans\5.2.15.RELEASE\spring-beans-5.2.15.RELEASE.jar;C:\Users\sean\.m2\repository\org\springframework\spring-webmvc\5.2.15.RELEASE\spring-webmvc-5.2.15.RELEASE.jar;C:\Users\sean\.m2\repository\org\springframework\spring-aop\5.2.15.RELEASE\spring-aop-5.2.15.RELEASE.jar;C:\Users\sean\.m2\repository\org\springframework\spring-context\5.2.15.RELEASE\spring-context-5.2.15.RELEASE.jar;C:\Users\sean\.m2\repository\org\springframework\spring-expression\5.2.15.RELEASE\spring-expression-5.2.15.RELEASE.jar;C:\Users\sean\.m2\repository\org\projectlombok\lombok\1.18.12\lombok-1.18.12.jar com.yanxml.arsenal.springboot.quickstart.Application

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::       (v2.3.12.RELEASE)

2023-01-31 23:55:40.836  INFO 6296 --- [           main] c.y.a.springboot.quickstart.Application  : Starting Application on LAPTOP-BQK5NDTK with PID 6296 (D:\repository\arsenal-public\arsenal-springboot-usage\arsenal-springboot-quickstart\target\classes started by sean in D:\repository\arsenal-public\arsenal-springboot-usage)
2023-01-31 23:55:40.836  INFO 6296 --- [           main] c.y.a.springboot.quickstart.Application  : No active profile set, falling back to default profiles: default
2023-01-31 23:55:41.508  INFO 6296 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2023-01-31 23:55:41.524  INFO 6296 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2023-01-31 23:55:41.524  INFO 6296 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.46]
2023-01-31 23:55:41.696  INFO 6296 --- [           main] o.a.c.c.C.[.[.[/arsenal-springboot]      : Initializing Spring embedded WebApplicationContext
2023-01-31 23:55:41.696  INFO 6296 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 813 ms
2023-01-31 23:55:41.821  INFO 6296 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2023-01-31 23:55:41.946  INFO 6296 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path '/arsenal-springboot'
2023-01-31 23:55:41.961  INFO 6296 --- [           main] c.y.a.springboot.quickstart.Application  : Started Application in 1.388 seconds (JVM running for 2.334)
测试HelloWorld
  • 访问地址 Get方法
    localhost:8080/arsenal-springboot//helloworld/get
  • 可以获取如下回复
hello

猜你喜欢

转载自blog.csdn.net/u010416101/article/details/128825309
今日推荐