Spring Boot 是由 Pivotal 团队提供的全新框架, 其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程. 该框架使用了特定的方式来进行配置, 从而使开发人员不再需要定义样板化的配置. 通过这种方式, Spring Boot 致力于在蓬勃发展的快速应用开发领域 (rapid application development) 成为领导者.
vSpring Boot 概念
从最根本上来讲, Spring Boot 就是一些库的集合, 它能够被任意项目的构建系统所使用. 简便起见, 该框架也提供了命令行界面, 它可以用来运行和测试 Boot 应用. 框架的发布版本, 包括集成的 CLI(命令行界面), 可以在 Spring 仓库中手动下载和安装.
创建独立的 Spring 应用程序
嵌入的 Tomcat, 无需部署 WAR 文件
简化 Maven 配置
自动配置 Spring
提供生产就绪型功能, 如指标, 健康检查和外部配置
绝对没有代码生成并且对 xml 也没有配置要求
v 搭建 Spring Boot
1. 生成模板
可以在官网 https://start.spring.io/ 生成 spring boot 的模板. 如下图
然后用 idea 导入生成的模板, 导入有疑问的可以看我另外一篇文章
2. 创建 Controller
3. 运行项目
添加注解 @ComponentScan(注解详情点这里) 然后运行
在看到 "Compilation completed successfully in 3s 676ms" 消息之后, 打开任意浏览器, 输入 http://localhost:8080/index 即可查看效果, 如下图
4. 接入 mybatis
MyBatis 是一款优秀的持久层框架, 它支持定制化 SQL, 存储过程以及高级映射.
在项目对象模型 pom.xml 中插入 mybatis 的配置
- <dependency>
- <groupId>org.mybatis.spring.boot</groupId>
- <artifactId>mybatis-spring-boot-starter</artifactId>
- <version>1.1.1</version>
- </dependency>
- <dependency>
- <groupId>MySQL</groupId>
- <artifactId>MySQL-connector-java</artifactId>
- <version>5.1.30</version>
- </dependency>
创建数据库以及 user 表
- use zuche;
- CREATE TABLE `users` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `username` varchar(255) NOT NULL,
- `age` int(10) NOT NULL,
- `phone` bigint NOT NULL,
- `email` varchar(255) NOT NULL,
- PRIMARY KEY (`id`)
- )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
- insert into users values(1,'赵',23,158,'3658561548@qq.com');
- insert into users values(2,'钱',27,136,'3658561548@126.com');
- insert into users values(3,'孙',31,159,'3658561548@163.com');
- insert into users values(4,'李',35,130,'3658561548@sina.com'
分别创建三个包, 分别是 dao/pojo/service, 目录如下
添加 User:
- package com.athm.pojo;
- /**
- * Created by toutou on 2018/9/15.
- */
- public class User {
- private int id;
- private String username;
- private Integer age;
- private Integer phone;
- private String email;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public Integer getAge() {
- return age;
- }
- public void setAge(Integer age) {
- this.age = age;
- }
- public Integer getPhone() {
- return phone;
- }
- public void setPhone(Integer phone) {
- this.phone = phone;
- }
- public String getEmail() {
- return email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- }
- View Code
添加 UserMapper:
- package com.athm.dao;
- import com.athm.pojo.User;
- import org.apache.ibatis.annotations.Mapper;
- import org.apache.ibatis.annotations.Select;
- import java.util.List;
- /**
- * Created by toutou on 2018/9/15.
- */
- @Mapper
- public interface UserMapper {
- @Select("SELECT id,username,age,phone,email FROM USERS WHERE AGE=#{age}")
- List<User> getUser(int age);
- }
- View Code
添加 UserService:
- package com.athm.service;
- import com.athm.pojo.User;
- import java.util.List;
- /**
- * Created by toutou on 2018/9/15.
- */
- public interface UserService {
- List<User> getUser(int age);
- }
- View Code
添加 UserServiceImpl
- package com.athm.service;
- import com.athm.dao.UserMapper;
- import com.athm.pojo.User;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.List;
- /**
- * Created by toutou on 2018/9/15.
- */
- @Service
- public class UserServiceImpl implements UserService{
- @Autowired
- UserMapper userMapper;
- @Override
- public List<User> getUser(int age){
- return userMapper.getUser(age);
- }
- }
- View Code
controller 添加 API 方法
- package com.athm.controller;
- import com.athm.pojo.User;
- import com.athm.service.UserService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.Web.bind.annotation.RequestMapping;
- import org.springframework.Web.bind.annotation.ResponseBody;
- import org.springframework.Web.bind.annotation.RestController;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * Created by toutou on 2018/9/15.
- */
- @RestController
- public class IndexController {
- @Autowired
- UserService userService;
- @GetMapping("/show")
- public List<User> getUser(int age){
- return userService.getUser(age);
- }
- @RequestMapping("/index")
- public Map<String, String> Index(){
- Map map = new HashMap<String, String>();
- map.put("北京","北方城市");
- map.put("深圳","南方城市");
- return map;
- }
- }
- View Code
修改租车 ZucheApplication
- package com.athm.zuche;
- import org.mybatis.spring.annotation.MapperScan;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.context.annotation.ComponentScan;
- @SpringBootApplication
- @ComponentScan(basePackages = {"com.athm.controller","com.athm.service"})
- @MapperScan(basePackages = {"com.athm.dao"})
- public class ZucheApplication {
- public static void main(String[] args) {
- SpringApplication.run(ZucheApplication.class, args);
- }
- }
- View Code
添加数据库连接相关配置, application.properties
- spring.datasource.url=jdbc:MySQL://localhost:3306/zuche
- spring.datasource.username=toutou
- spring.datasource.password=*******
- spring.datasource.driver-class-name=com.MySQL.jdbc.Driver
按如下提示运行
浏览器输入得到效果:
vgithub 地址
v 博客总结
系统故障常常都是不可预测且难以避免的, 因此作为系统设计师的我们, 必须要提前预设各种措施, 以应对随时可能的系统风险.
来源: https://www.cnblogs.com/toutou/p/9650939.html