• Spring Boot初识(1)-了解Spring Boot


    写在前面:半年工作经验的Java程序员一枚,奈何公司用的是自研的Web框架和RPC框架,本着good good study,day day up的精神和为以后发展的考虑觉得自己需要学点开源的东西,写的文章主要是自己的认识和踩过的坑,如果觉得我哪里写的不正确欢迎指教。

    一.本文介绍

        首先在阅读这篇文章前我要先说一下学习Spring Boot需要的基础,首当其充需要有Java基础,倒是没必要精通,但起码要知道继承封装多态,或是equals和==有什么区别(==对于基本类型来说比较的是值,对于引用类型比较的是内存地址,两个相同的对象即使属性值都一样但内存地址可能也不是一样的;equals如果不重写的话和==是一样的,String、Integer等对equals进行了重写比较的也是值)。其次就是Maven了,Maven作为项目管理工具最主要是对项目依赖关系的管理,Maven出现之前一个Java项目需要把各种jar包放到项目中,这就会导致项目本身臃肿或者出现难以解决的版本冲突,Maven通过groupId、artifactId、version作为一个条件唯一确定一个需要的jar包。最后如果你用过Spring那是极好的了,因为Spring Boot本着"约束大于配置"的理念就是对Spring的进一步封装,没用过也没关系因为Spring Boot使用起来容易上手。

    二.为什么使用Spring Boot

        JavaWeb项目的开发由最初的Servlet+Jsp到后来Spring的出现可谓是一大进步,但Spring复杂的配置同样让人头疼,Spring Boot主要依赖一个配置文件就可以完成Web项目启动,而且不需要依赖外部的Web容器或插件就可以运行,五分钟足够用Spring Boot写一个Hello World出来了。Spring Boot让开发人员不必把精力浪费在框架搭建上而是专注于业务的开发,我认为这是最大的一点好处,当然我觉得越简单的东西可能坑也越多,前面说过Spring Boot是基于“约束大于配置”,如果不遵循约束又不了解Spring Boot的底层实现就会出一些莫名其妙的问题,我已经踩过一些坑了。

    三.开始第一个Spring Boot的Hello World

        我用的是IDEA作为开发工具,一般创建Spring Boot项目首先可以从官网直接下载模板使用,或者是IDEA的Spring initilalizr功能(这个需要fanqiang),不过我觉得没有这个必要,直接建一个Maven项目把Spring Boot相关的依赖加进去就好了。

        1.先新建一个Maven项目

        

        

        输入GroupId、ArtifactId后直接点Finish就好了

        2.我们要加入Spring Boot的相关依赖       

    <?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>cn.test</groupId>
        <artifactId>first</artifactId>
        <version>1.0-SNAPSHOT</version>
        <!-- Spring Boot引入的依赖,提供了一些默认配置 -->
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.3.RELEASE</version>
            <relativePath/>
        </parent>
        <dependencies>
            <!-- 支持Web需要引入的依赖 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        </dependencies>
    
    </project>

         只需要这两个依赖就能够支持最简单的Web功能,现在暂时还不用使用配置文件(以后连数据库或者支持输出日志到文件再使用)。整个demo如下:

       

    package cn.test;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class DemoApplication {
        public static void main(String[] args) {
             SpringApplication.run(DemoApplication.class, args);
        }
    }
    package cn.test.controller;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class TestController {
    
        @RequestMapping("/test")
        public String test(){
            return "Spring Boot Demo";
        }
    }

        3.运行DemoApplication里的Main函数输出如下日志:

     

        使用了内置的Tomcat并启动了8080端口,访问http://localhost:8080/test效果如下:

        

        至此一个最简单的基于Spring Boot的demo已经完成了,说一下我遇到的坑点:

    1. DemoApplication作为Spring Boot的启动类必须放在某个包下否则会报错,并且Spring Boot会递归扫描DemoApplication所在包下的文件
    2. DemoApplication里的@SpringBootApplication是Spring Boot启动的关键注解必不可少
    3. TestController里的@RestController注解的作用有两个,首先是把TestController这个类里的标了@RequestMapping注解的方法暴露出去让你在地址栏里敲对应的URL能访问到,其次就是把返回的数据以字符串形式展示。
    4. @RequestMapping注解就是规定一个标识,并把标识与方法绑定

     四.总结

        到这里我们已经有一个基于Spring Boot的Web框架了,如果用过Spring的话可以看到实现同样的功能Spring Boot远比Spring要简单的多,这其中的关键第一个是spring-boot-starter-parent这个依赖,第二个是@SpringBootApplication这个启动注解,后续会把Spring Boot与Mybatis相结合实现简单的增删改查,与Swagger2相结合自动生成接口文档。

      

    
    

        

        

  • 相关阅读:
    数据模型Model(I)
    泛型
    iOS开发之widget实现
    ios断点续传:NSURLSession和NSURLSessionDataTask实现
    iOS 直播类APP开发流程解析
    iOS实现电话状态监听 CoreTelephony
    iOS9全新的联系人相关框架——Contacts Framework
    iOS开发集成微信支付
    如何在 Git 里撤销(几乎)任何操作
    iOS开发网络缓存原理
  • 原文地址:https://www.cnblogs.com/blythe/p/10258563.html
Copyright © 2020-2023  润新知