使用Spring boot快速搭建简洁高效的web应用(一)

Spring的繁琐的配置简直是每个项目开始的时候都会吐槽的地方,特别是对于较为小型的项目,或者是个人项目,过于繁琐的配置就更显得多余了。Spring boot是Spring推出的一个轻量化web框架,主要解决了Spring对于小型项目饱受诟病的配置和开发速度问题。

来自Spring官网对Spring boot的介绍:

Takes an opinionated view of building production-ready Spring applications. Spring Boot favors convention over configuration and is designed to get you up and running as quickly as possible.

大概意思就是Spring boot是一个简化了配置的Spring,专门为快速开发而设计。

一、入门示例程序

1、添加pom依赖

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.3.RELEASE</version>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

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


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


2、编写控制器和启动程序

1. 控制器和SpringMVC中一样,通过添加注解的方式配置。代码如下:

package control;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * Created by zachary on 16/8/8.
 */
@RestController  //声明为控制器
@EnableAutoConfiguration //自动配置
public class Control {
    @RequestMapping("/") //请求路径,和Spring一样
    public String Hello(){
        return "Hello Spring boot!";
    }
    @RequestMapping("/user/{username}") //带参数的请求路径
    public String User(@PathVariable String username){
        return "Hello "+username;
    }
}

2. 启动程序作为程序入口,包含一个主方法,因为Spring boot 自带容器(默认为tomcat),所以直接运行这个主方法就可以在浏览器中直接访问程序,当然,还需要添加相应注解使上面配置好的控制器可以被自动扫描添加。

这里有个坑:启动程序必须包含在一个包中,如果直接放在/src/main/java中,自动扫描其它控制器会失效,具体原因等查到了会写上来

package control;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration //相当于传统的xml配置文
@ComponentScan //表示将该类自动发现(扫描)并注册为Bean,可以自动收集所有的Spring组件,包括@Configuration类。我们经常使用@ComponentScan注解搜索beans,并结合@Autowired注解导入。
@EnableAutoConfiguration

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

二、注解详解

Spring boot 中常用的注解如下:

  • @ResponseBody
    用该注解修饰的函数,会将结果直接填充到HTTP的响应体中,一般用于构建RESTful的api;

  • @Controller
    用于定义控制器类,在spring 项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层)。

  • @RestController
    @ResponseBody和@Controller的合集

  • @RequestMapping
    提供路由信息,负责URL到Controller中的具体函数的映射。

  • @EnableAutoConfiguration
    Spring Boot自动配置(auto-configuration):尝试根据你添加的jar依赖自动配置你的Spring应用。例如,如果你的classpath下存在HSQLDB,并且你没有手动配置任何数据库连接beans,那么我们将自动配置一个内存型(in-memory)数据库”。你可以将@EnableAutoConfiguration或者@SpringBootApplication注解添加到一个@Configuration类上来选择自动配置。如果发现应用了你不想要的特定自动配置类,你可以使用@EnableAutoConfiguration注解的排除属性来禁用它们.

  • @ComponentScan
    表示将该类自动发现(扫描)并注册为Bean,可以自动收集所有的Spring组件,包括@Configuration类。我们经常使用@ComponentScan注解搜索beans,并结合@Autowired注解导入。

  • @Configuration
    相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。

  • @SpringBootApplication
    相当于@EnableAutoConfiguration、@ComponentScan和@Configuration的合集。

  • @Import
    用来导入其他配置类。

  • @ImportResource
    用来加载xml配置文件。

  • @Autowired
    自动导入依赖的bean

  • @Service
    一般用于修饰service层的组件

  • @Repository
    使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。

三、部署到tomcat

由此看来,Spring boot确实大大简化了以往的Spring开发,个人认为今后在小型系统中,使用Spring boot毫无疑问。
因为Spring boot自带容器,所以开发完成后将项目部署到tomcat中还需要几步简单的操作:我将在近期更新。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容