SpringBoot简介
定义
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.Spring Boot现在已经成为Java开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成。成为SpringBoot全家桶。
特点
- 创建独立的春天应用程序
- 嵌入的Tomcat的,无需部署WAR文件
- 简化Maven的配置
- 自动配置春天
- 提供生产就绪型功能,如指标,健康检查和外部配置
创建第一个SpringBoot实例
1.创建Maven的工程
创建Maven工程,创建简单项目,类型为jar
修改JDK版本必须1.8以上,springboot基本上废除了1.6,1.7
2.全新构建方式的pom.xml
传统构建Maven的项目,POM中的依赖包繁多,升级一个罐子版本时,会引发新的冲突,调试许久。而SpringBoot接管了罐子的版本,它构建好一套,这套中各罐子的版本已经测试好,开发者再无需去关注每个依赖包的版本及冲突问题。从而简化开发。
再者,它启动也非常快,直接运行一个类,使用的tomcat的Maven的插件。开发调试时效率提高。
<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>com.tedu</groupId>
<artifactId>sc-hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
3. 创建的HelloController
使用@RestController替代@Controller和@ResponseBody(返回JSON串)
package com.tedu.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("hello")
public String hello(){
return "hello springboot";
}
}
4.全新运行方式
注意:必须加@SpringBootApplication注解,同时必须有包名
package com.tedu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class RunApplication {
public static void main(String[] args) {
SpringApplication.run(RunApplication.class, args);
}
}
直接运行的jar启动网络服务
1.修改的pom.xml
在pom.xml中中增加插件插件,忘记加会报“清单找不到”异常。
<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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
</parent>
<groupId>com.tedu</groupId>
<artifactId>hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<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>
</project>
2.执行的jar包
D:\ java \ ws \ stu \ hello \ target> D:\ java \ env \ jdk1.8 \ bin \ java -jar hello-0.0.1-SNAPSHOT.jar
SpringBoot和MyBatis的整合
系统架构图
创建数据库表
创建mybatisdb数据库,设置UTF-8字符集。
创建用户表:
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`ID` int(11) NOT NULL,
`NAME` varchar(30) DEFAULT NULL,
`BIRTHDAY` datetime DEFAULT NULL,
`ADDRESS` varchar(200) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
增加数据:
insert into `user`(`ID`,`NAME`,`BIRTHDAY`,`ADDRESS`) values
(1,'夏言','1573-01-01 00:00:00','桂州村'),
(2,'严嵩','1587-01-01 00:00:00','分宜县城介桥村'),
(3,'徐阶','1580-01-01 00:00:00','明松江府华亭县'),
(4,'高拱','1566-01-01 00:00:00','河南省新郑市高老庄村'),
(5,'张居正','1558-01-01 00:00:00','江陵');
创建Maven的工程
创建Maven工程,创建简单项目,类型为jar
pom.xml的文件上添加依赖
<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.tedu</groupId>
<artifactId>sc-mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>sc-mybatis</name>
<url>http://maven.apache.org</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<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>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-parameter-names</artifactId>
</dependency>
<!-- alibaba的druid数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
</project>
关系编写User.java实体类
创建POJO对象
package cn.tedu.model;
import java.util.Date;
public class User {
private Integer id;
private String name;
private Date birthday;
private String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
编辑UserMapper.xml
<?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">
<!-- namespace命名空间,唯一特性 -->
<mapper namespace="cn.tedu.mapper.UserMapper">
<select id="find" resultType="User">
select id,name,birthday,address from user
</select>
</mapper>
UserMapper.java接口
package cn.tedu.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import cn.tedu.model.User;
//注解和xml方式混合
public interface UserMapper {
//调用xml方式
public List<User> find();
//调用注解方式
@Select("select * from user where id=#{id}")
public User get(@Param("id") Integer id);
}
UserService.java
package cn.tedu.service;
import java.util.List;
import cn.tedu.model.User;
public interface UserService {
public List<User> find();
public User get(Integer id);
}
UserServiceImpl.java
package cn.tedu.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.tedu.mapper.UserMapper;
import cn.tedu.model.User;
import cn.tedu.service.UserService;
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserMapper userMapper;
public List<User> find() {
return userMapper.find();
}
public User get(Integer id){
return userMapper.get(id);
}
}
UserController.java
使用@RestController替代@Controller和@ResponseBody(返回JSON串)
package cn.tedu.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import cn.tedu.model.User;
import cn.tedu.service.UserService;
@RestController
@RequestMapping(value = "/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/find")
public List<User> find() {
return userService.find();
}
@RequestMapping("/get/{id}")
public User get(@PathVariable Integer id){
return userService.get(id);
}
}
编写application.yml
全局配置文件,YML为新的配置文件方式,注意其中格式为空格,不能有标签。
配置端口,配置数据源,配置MyBatis的全局配置。
注意:如果端口,启动时日志显示8080,说明此文件未加载检查原因一般是文件名或者路径不正确。
server:
port: 8070
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/mybatisdb
username: root
password: root
mybatis:
typeAliasesPackage: cn.tedu.model
mapperLocations: classpath:mappers/*.xml
编写RunApplication.java
package cn.tedu;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("cn.tedu.mapper") //扫描Mybatis接口文件
public class RunApplication {
public static void main(String[] args) {
SpringApplication.run(RunApplication.class, args);
}
}
最后访问: http:// localhost:8070 / user / find或者 http:// localhost:8070 / user / get / 5即可得到结果