美文网首页
第三章 一个Hello world项目

第三章 一个Hello world项目

作者: 现实目标决心 | 来源:发表于2017-12-17 00:07 被阅读0次

    课程目标:

    • 编写项目构建新型
    • 介绍项目入口
    • 编写程序代码
    • 编写测试用例
    • 配置gradle wrapper

    编写项目构建新型

    使用上一节课构建的项目。打开build.gradle文件:


    build.gradle

    这里主要是修改访问的中央仓库。国内访问国外的中央仓库是很慢的,这里使用阿里云的中央仓库,作为演示。

    // 使用了 Maven 的中央仓库(你也可以指定其他仓库)
        repositories {
            //mavenCentral()
            maven {
                url 'http://maven.aliyun.com/nexus/content/groups/public/'
            }
        }
    

    介绍项目入口

    使用eclipse导入gradle项目。这里你可能需要使用eclipse的gradle插件。可以参考这篇文件去安装:http://blog.csdn.net/wzj0808/article/details/52267852

    导入gradle项目

    程序运行的入口:

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

    这里主要的就是@SpringBootApplication注解,它是一个符合注解。里面最重要的三个注解是

    @Configuration //说明该类本身就是IoC容器的配置类,基于JavaConfig形式
    @EnableAutoConfiguration //通过@Import将所有符合自动配置条件的bean定义加载到IoC容器中
    @ComponentScan //自动扫描符合条件的组件或定义到IoC容器

    //运行一个spring的应用程序,该应用程序指定InitializrStartApplication.class作为配置类数据源
    SpringApplication.run(InitializrStartApplication.class, args);
    

    编写程序代码

    控制器编写

    编写测试用例

    测试用例里面用到了一些静态方法,导入的时候记得加上static关键字。

    package com.waylau.spring.boot.blog.initializrstart;
    
    import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
    import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
    import static org.hamcrest.Matchers.equalTo;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.http.MediaType;
    import org.springframework.test.context.junit4.SpringRunner;
    import org.springframework.test.web.servlet.MockMvc;
    import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
    
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    @AutoConfigureMockMvc
    public class HelloControllerTests {
        
        @Autowired
        private MockMvc mockMvc;
        
    
        @Test
        public void testHello() throws Exception {
            mockMvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
            .andExpect(status().isOk())
            .andExpect(content().string(equalTo("Hello world")));
        }
    
    }
    

    运行项目:


    运行项目

    运行单元测试:


    image.png

    过程中遇到无法扫描到controller注解的问题:
    http://blog.csdn.net/qq_35357656/article/details/75514704

    启动类,它必须放在和有注解的类的同一目录或者父目录才能扫描到注解类。

    将controller包移动到启动类下面的包中,启动扫描成功,单元测试成功。


    主义注解类的报名

    配置gradle wrapper

    gradle\wrapper\gradle-wrapper.properties

    将版本配置成最新版本:gradle-4.4-bin.zip

    distributionBase=GRADLE_USER_HOME
    distributionPath=wrapper/dists
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists
    distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-bin.zip
    

    然后使用控制台,去到项目根目录,运行命令


    使用wrapper构建项目

    因为服务器在国外,下载gradle包就会比较慢。

    下载gradle完成,构建完成后,可以使用命令去运行项目。


    使用命令启动项目

    gradle和gradlew的关系,可以看这篇文章。https://www.zybuluo.com/xtccc/note/275168
    简单来说,Gradlew是包装器,自动下载包装里定义好的gradle 版本,保证编译环境统一,gradle 是用本地的gradle。

    相关文章

      网友评论

          本文标题:第三章 一个Hello world项目

          本文链接:https://www.haomeiwen.com/subject/lepewxtx.html