使用springBoot搭建REATFul风格的web demo
1 Spring boot 核心特性
- 自动配置;针对常见 spring 应用程序的常见应用功能,Spring boot 自动提供相应配置
- 起步依赖;告诉springboot 需要什么功能,他就会自动引入所需的库
- Actuator;深入运行中的Spring boot 应用程序,一探究竟
开发Spring boot 项目,两种方案
1)新建一个maven项目,然后自己配置依赖,配置目录结构。
2)使用Spring initializer ,指定所需功能即可生成一个工程目录结构。
主要使用的springboot 配件
web + mysql + connector + mybatis
自己使用了之前的方法生成一个maven项目,然后配置项目。
2 pom文件配置
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.huitong</groupId> <artifactId>demo1</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>demo1 Maven Webapp</name> <url>http://maven.apache.org</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent> <properties> <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> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version> </dependency> <!--<!– 添加缓存支持 –>--> <!--<dependency>--> <!--<groupId>org.springframework.boot</groupId>--> <!--<artifactId>spring-boot-starter-cache</artifactId>--> <!--</dependency>--> <!-- 添加 redis 缓存支持 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- 添加邮件支持 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <dependency> <groupId>com.jayway.jsonpath</groupId> <artifactId>json-path</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> </dependency> <!-- Spring boot 热启动依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> </dependencies> <build> <finalName>demo1</finalName> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> </resource> </resources> <!--spring boot maven的构造插件--> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>${java.version}</source> <target>${java.version}</target> <testSource>${java.version}</testSource> <testTarget>${java.version}</testTarget> </configuration> </plugin> </plugins> </build> </project>
使用Spring boot 构建插件。
构建插件的主要功能是把项目打包成一个可执行的超级JAR(uber-JAR),包括把应用程序的所有依赖打入JAR文件内,并为JAR添加一个描述文件,其中的内容能让你用 java -jar 来运行应用程序。
POM中 spring-boot-starter-parent 具有依赖管理功能,继承很多常用库的依赖版本,在你声明依赖时就不用再去指定版本号了。
项目目录如下
3 响应对象Greeting.java
package com.huitong.demo.entity; import lombok.Data; @Data public class Greeting { private long id; private String content; public Greeting(long id, String content) { this.id = id; this.content = content; } }
4 请求controller, GreetingController.java
package com.huitong.demo.controller; import com.huitong.demo.entity.Greeting; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.concurrent.atomic.AtomicLong; @RestController public class GreetingController { private final AtomicLong counter = new AtomicLong(); @RequestMapping(value = "/demo1/greeting", method = RequestMethod.POST) public Greeting greeting(@RequestParam String name) { String s = "hello %s!"; return new Greeting( counter.incrementAndGet(), String.format(s, name)); } }
5 生成可执行程序,Demo1Application.java
package com.huitong; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Demo1Application { public static void main(String[] args) { SpringApplication.run(Demo1Application.class, args); } }
@SpringBootApplication 开启了Spring的组件扫描和Spring Boot的自动配置功能。 @SpringBootApplication 将三个有用的注解组合在了一起。
-
Spring的 @Configuration :标明该类使用Spring基于Java的配置。虽然本书不会写太多配置,但我们会更倾向于使用基于Java而不是XML的配置。
-
Spring的 @ComponentScan :启用组件扫描,这样你写的Web控制器类和其他组件才能被自动发现并注册为Spring应用程序上下文里的Bean。
-
Spring Boot 的 @EnableAutoConfiguration : 这 个 不 起 眼 的 小 注 解 也 可 以 称 为@Abracadabra ,就是这一行配置开启了Spring Boot自动配置的魔力,让你不用再写成篇的配置了。
5.2 如果应养程序需要使用除了Spring boot 自动配置以外的配置,需要使用将配置写到一个单独的@Configuration 标注的类里。(组件扫描会发现并使用这些类的。)
至此就创建完成了,只需启动Demo1Application 即可。可以看到如下
进而可以进行测试验证是否成功。
6 整合mybatis 数据持久化
6.1 需要配置两个地方
1)在spplication.xml文件中,配置mapper-location
# mybatis 配置 mybatis.mapper-locations=classpath*:/com/huitong/**/mybatis/*.xml
2)在启动java类中配置mapperScan
@MapperScan(basePackages = {"com.huitong.*.mybatis"})
6.2 实际操作接口编写
1)mapper接口文件
package com.huitong.persistence.adapter.mybatis; import com.huitong.entity.Student; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @Mapper public interface StudentMapper { Student getStudentById(@Param("id") Integer id); }
2)对应的xml文件sql语句,在同一目录下的情况
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.huitong.persistence.adapter.mybatis.StudentMapper"> <select id="getStudentById" resultType="com.huitong.entity.Student"> SELECT * FROM student WHERE id = #{id} </select> </mapper>
需要注意:
使用maven默认构建方法是不会将java源码包下的配置文件(xml、properties)文件编译到target文件夹的classes文件夹下,需要在pom文件中进行编译配置
详细信息可以参看之前博客springboot 多模块 maven 项目构建jar 文件配置
http://www.cnblogs.com/zhaopengcheng/p/8616762.html
如果觉得有用,想赞助一下请移步赞助页面:赞助一下