zoukankan      html  css  js  c++  java
  • Spring Boot 成长之路(一) 快速上手

    1.创建工程

    利用IntelliJ IDEA新建一个Spring Boot项目的Web工程

    2.查看初始化的spring boot项目

    工程建好之后会出现如下的目录结构:

    值得注意的第一件事是,整个项目结构遵循传统Maven项目的布局,即主要应用程序代码位于src/main/java目录里,资源都在src/main/resources目录里,测试代码则在src/test/java目录里。此刻还没有测试资源,但如果有的话,要放在src/test/resources里。
    再进一步,你会看到项目里还有不少文件。

    • pom.xml:Maven构建说明文件。
    • SpringBootHelloworldApplication:应用程序的启动引导类(bootstrap class),也是主要的Spring配置类。
    • application.properties:用于配置应用程序和Spring Boot的属性。
    • SpringBootHelloworldApplicationTests:一个基本的集成测试类。

    先让我们来看看SpringBootHelloworldApplication

    2.1 启动引导Spring

    SpringBootHelloworldApplication在Spring Boot应用程序里有两个作用:配置和启动引导。首先,这是主要的Spring配置类。虽然Spring Boot的自动配置免除了很多Spring配置,但你还需要进行少量配置来启用自动配置。

    package com.cloud;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class SpringBootHelloworldApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringBootHelloworldApplication.class, args);
        }
    }

      @SpringBootApplication开启了Spring的组件扫描和Spring Boot的自动配置功能。实际上,@SpringBootApplication将三个有用的注解组合在了一起。

    • Spring的@Configuration:标明该类使用Spring基于Java的配置。虽然本书不会写太多配置,但我们会更倾向于使用基于Java而不是XML的配置。
    • Spring的@ComponentScan:启用组件扫描,这样你写的Web控制器类和其他组件才能被自动发现并注册为Spring应用程序上下文里的Bean。本章稍后会写一个简单的Spring MVC控制器,使用@Controller进行注解,这样组件扫描才能找到它。
    • Spring Boot 的@EnableAutoConfiguration : 这个不起眼的小注解也可以称为@Abracadabra,就是这一行配置开启了Spring Boot自动配置的魔力,让你不用再写成篇的配置了。

      在Spring Boot的早期版本中,你需要在ReadingListApplication类上同时标上这三个注解,但从Spring Boot 1.2.0开始,有@SpringBootApplication就行了。
      如我所说,SpringBootHelloworldApplication还是一个启动引导类。要运行Spring Boot应用程序有几种方式,其中包含传统的WAR文件部署。但这里的main()方法让你可以在命令行里把该应用程序当作一个可执行JAR文件来运行。这里向SpringApplication.run()传递了一个
    SpringBootHelloworldApplication类的引用,还有命令行参数,通过这些东西启动应用程序。

      实际上,就算一行代码也没写,此时你仍然可以构建应用程序尝尝鲜。

      应用程序应该能正常运行,启动一个监听8080端口的Tomcat服务器。要是愿意,你可以用浏览器访问http://localhost:8080,但由于还没写控制器类,你只会收到一个HTTP 404(NOT FOUND)错误,看到错误页面。在本章结束前,这个URL将会提供一个阅读列表应用程序。
      你几乎不需要修改SpringBootHelloworldApplication.java。如果你的应用程序需要Spring Boot自动配置以外的其他Spring配置,一般来说,最好把它写到一个单独的@Configuration标注的类里。(组件扫描会发现并使用这些类的。)极度简单的情况下,可以把自定义配置加入SpringBootHelloworldApplication.java。

    2.2. 配置应用程序属性
      Initializr为你生成的application.properties文件是一个空文件。实际上,这个文件完全是可选的,你大可以删掉它,这不会对应用程序有任何影响,但留着也没什么问题。
      稍后,我们肯定有机会向application.properties里添加几个条目。但现在,如果你想小试牛刀,
      可以加一行看看:
        server.port=8000
      加上这一行,嵌入式Tomcat的监听端口就变成了8000,而不是默认的8080。你可以重新运行应用程序,看看是不是这样。
      这说明application.properties文件可以很方便地帮你细粒度地调整Spring Boot的自动配置。你还可以用它来指定应用程序代码所需的配置项。在第3章里我们会看到好几个例子,演示application.properties的这两种用法。
      要注意的是,你完全不用告诉Spring Boot为你加载application.properties,只要它存在就会被加载,Spring和应用程序代码都能获取其中的属性。
      我们差不多已经把初始化的项目介绍完了,还剩最后一样东西,让我们来看看Spring Boot应用程序是如何构建的。

    3.创建pom.xml文件

    3.1 设置spring boot的parent

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.7.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>

    Spring boot的项目必须要将 parent设置为 spring boot的 parent,该 parent包含了大量默认的配置。

     3.2 导入spring boot的web支持

        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

    3.3 添加spring boot插件

         <plugin>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-maven-plugin</artifactId>
          </plugin>

    工程创建好了之后,会生成默认的pom.xml文件,如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.cloud</groupId>
        <artifactId>spring-boot-helloworld</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>spring-boot-helloworld</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.7.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>

     4.HelloWorld实战详解

     4.1 Controller层

     HelloWorldController的代码如下:

    package com.cloud;

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

    /**
    * Created by peter on 2017-10-09.
    */
    @RestController
    public class HelloWorldController {
    @RequestMapping("/")
    public String sayHello(){
    return "Hello,World!";
    }
    }

    @RestController和@RequestMapping注解是来自SpringMVC的注解,它们不是SpringBoot的特定部分。

    (1). @RestController:提供实现了REST API,可以服务JSON,XML或者其他。这里是以String的形式渲染出结果。

    (2). @RequestMapping:提供路由信息,"/“路径的HTTP Request都会被映射到sayHello方法进行处理。

    4.2 启动应用类

    和第一段描述一样,开箱即用。如下面Application类:

    package com.cloud;

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

    @SpringBootApplication
    public class SpringBootHelloworldApplication {

    public static void main(String[] args) {
    SpringApplication.run(SpringBootHelloworldApplication.class, args);
    }
    }

    (1). @SpringBootApplication:Spring Boot 应用的标识

    (2). Application很简单,一个main函数作为主入口。SpringApplication引导应用,并将Application本身作为参数传递给run方法。具体run方法会启动嵌入式的Tomcat并初始化Spring环境及其各Spring组件。

     4.3 Controller层测试类

     一个好的程序,不能缺少好的UT。针对HelloWorldController的UT如下:

    package com.cloud;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import static org.junit.Assert.assertEquals;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class SpringBootHelloworldApplicationTests {
    
        @Test
        public void testSayHello() {
            assertEquals("Hello,World!",new HelloWorldController().sayHello());
        }
    
    }

    4.4 运行

     直接编译运行代码,然后访问 http://localhost:8080/ ,即可在页面中看到Spring Boot对你 say hello:

    Hello,World!
  • 相关阅读:
    Python解析库lxml与xpath用法总结
    安装docker时,遇到Loaded plugins...怎么办
    【AcWing】第6场周赛 B题 3734. 求和 (思维)
    CF上部分树形DP练习题
    Codeforces Round #481 (Div. 3) 经典几道思维题
    KB专题:区间DP专辑
    ZOJ 3537 Cake (凸包 + 区间DP && 最优三角形剖分)
    AtCoder Beginner Contest 171 AK!
    【算法学习笔记】分段打表
    [apue] 多进程管道读写的一些疑问
  • 原文地址:https://www.cnblogs.com/bdhk/p/7641803.html
Copyright © 2011-2022 走看看