SpringBoot简介

Java开发的劣势

  1. 开发的复杂度高;
  2. 使用Maven开发,需要管理一堆的Maven的配置依赖库;
  3. Rest 技术已经开始在行业之中广为流传,而 Java 要想实现 Rest 架构的开发(基于Spring),那么也是相当麻烦的;
  4. 现在行业之中,Spring 已经作为了绝对的 java 架构,但是如果要想在 Spring 之中整合 RabbitMQ、Kafka、ActiveMQ、MySQL、Druid、Redis、Shiro,需要编写一堆堆的*.xml 配置文件;

SpringBoot的出现为我们解决了上述的Java开发劣势,SpringBoot 的最终奉行的宗旨:简化复杂的程序开发,减少依赖的配置,废除掉所有的配置文件,让开发变得更简单纯粹,核心:“零配置”

SpringBoot的HelloWorld程序

基于官方的例子,https://projects.spring.io/spring-boot/

  1. 创建一个Maven工程。虽然SpringBoot是以WEB工程来运行的,但archetype只需选择quickstart即可。


    springboot选择的archetype
  2. 按照官方给出的要求配置一个父pom即可


    4.0.0

    
        org.springframework.boot
        spring-boot-starter-parent
        1.5.4.RELEASE
    

    cn.zgc
    helloworld
    0.0.1-SNAPSHOT
    jar

    
        1.7
        UTF-8
    

    
        
            junit
            junit
            test
        
        
            org.springframework.boot
            spring-boot-starter-web
        
    

    
        bootfirst
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    ${jdk.version}
                    ${jdk.version}
                    
                
            
        
    


  1. 编写SpringBoot的启动类
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;

@Controller
@EnableAutoConfiguration
public class SampleController {

    @RequestMapping("/")
    @ResponseBody
    String home() {
        return "Hello World!";
    }

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

@EnableAutoConfiguration注解的含义为,开启自动配置处理。这个注解告诉SpringBoot根据添加的jar依赖猜测你想如何配置Spring。由于spring-boot-starter-web添加了Tomcat和Spring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置。

  1. 启动访问

在Idea开发工具中,可以直接运行SampleController类。或者通过maven命令:spring-boot:run也可运行Springboot项目。运行起来之后在浏览器中可以直接访问服务

SpringBoot简介_第1张图片
访问Springboot服务



我们继续往工程中和SampletController类同一个包中再添加一个Controller类,代码如下:

package cn.zgc.springboot.basic;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HomeController {
    @RequestMapping("/home")
    @ResponseBody
    public String home(){
        return "home page";
    }
}

访问http://127.0.0.1:8080/index时,却出现如下页面

SpringBoot简介_第2张图片

出现这种情况,是由于HomeController没有被Spring容器加载所导致,可以通过配置Spring的包扫描路径来解决这个问题,我们在启动类SampleController中加入@ComponentScan注解即可。

@EnableAutoConfiguration
@ComponentScan("cn.zgc.springboot.basic")
public class SampleController {

另外为了简化,SpringBoot提供了@SpringBootApplication,它是个复合注解,内部已经包含@EnableAutoConfiguration和@ComponentScan。@SpringBootApplication默认的包扫描路径为当前启动类的包。所以
Spring官方建议:为了开发的方便,所有的程序类一定要在启动类所在包的子包下。

使用自己的父POM

在HelloWorld的例子中,我们看到要开发SpringBoot程序需要让工程的pom继承spring-boot-starter-parent。在实际开发中,一般是要继承自己的父pom的,这时候该如何处理呢?

首先在我们自己的父pom.xml文件中加入如下配置


     
         
             org.springframework.boot
             spring-boot-dependencies
             1.5.4.RELEASE
             pom
             import
         
     
 

然后子模块只要继承自己的父POM,同样也能为我们引入SpringBoot功能。

Restful访问路径

Restful风格的API

  • GET /product:列出所有商品
  • POST /product:新建一个商品
  • GET /product/ID:获取某个指定商品的信息
  • PUT /product/ID:更新某个指定商品的信息
  • DELETE /product/ID:删除某个商品
  • GET /product/ID/purchase :列出某个指定商品的所有投资者
  • get /product/ID/purchase/ID:获取某个指定商品的指定投资者信息

SpringBoot提供了@RestController注解,它是一个复合注解,相当于@Controller加@ResponseBody。如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器将不起作用,返回的内容就是return里的内容。

@RestController
public class HomeController {
    @RequestMapping("/home")
    public String home(){
        return "home page";
    }
}

使用内置对象

在 SpringBoot 中的控制器的形式和 SpringMVC 是一样的,所以如果现在要想在你的程序之中去使用 JSP 的内置对象,那么也可以按照与 SpringMVC 同样的方式进行。

    @RequestMapping("/home")
    public String home(HttpServletRequest request, HttpServletResponse response){
        System.out.println(request.getMethod());
        System.out.println(response.getCharacterEncoding());
        return "home page";
    }

SpringBoot代码测试

在pom.xml文件中加入相关的依赖包


    org.springframework.boot
    spring-boot-starter-test
    test


    junit
    junit
    test

测试类

@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = SampleController.class)
public class TestSampleController {
    @Autowired
    private SampleController sampleController;
    @Test
    public void testHome(){
        Assert.assertEquals(sampleController.home(),"Hello World!");
    }
}

打包发布

SpringBoot 作为微架构实现主要技术,其发布项目的方式极为简单,只需要你在你的项目中配置好插件,以及打包就可以执行了,并且这个执行不需要特别复杂的配置。

在父POM文件中加入打包插件

    
    org.springframework.boot
    spring-boot-maven-plugin
     
        cn.zgc.springboot.basic.StartSpringBootMain
    
    
        
            
                repackage
            
        
    

对需要打包的项目模块进行打包处理:clean package,打出来的是个可执行的jar包,直接运行java -jar xxx.jar就能启动SpringBoot服务。

你可能感兴趣的:(SpringBoot简介)