最近公司有一個內部比賽(黑客馬拉松),報名參加了這么一個賽事,在準備參賽作品的同時,由于參賽服務器需要自己搭建且比賽產生的代碼不能外泄的,所以借著這個機會,本地先寫了個測試的demo,來把tomcat部署相關的知識從0到1重新捋一遍。就當備忘錄了。
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
可以在官網https://start.spring.io/生成spring boot的模板。如下圖
然后用idea導入生成的模板,導入有疑問的可以看我另外一篇文章
?
添加注解 @ComponentScan
(注解詳情點這里) 然后運行
在看到"Compilation completed successfully in 3s 676ms"消息之后,打開任意瀏覽器,輸入 http://localhost:8080/index 即可查看效果,如下圖
?
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;} }
添加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); }
添加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); }
添加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{@AutowiredUserMapper userMapper;@Overridepublic List<User> getUser(int age){return userMapper.getUser(age);} }
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 {@AutowiredUserService 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;} }
修改租車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);} }
添加數據庫連接相關配置,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
按如下提示運行
瀏覽器輸入得到效果:
v博客總結
系統故障常常都是不可預測且難以避免的,因此作為系統設計師的我們,必須要提前預設各種措施,以應對隨時可能的系統風險。
v源碼地址
https://github.com/toutouge/javademo/tree/master/hellospringboot
作 者:請叫我頭頭哥
出 處:http://www.cnblogs.com/toutou/
關于作者:專注于基礎平臺的項目開發。如有問題或建議,請多多賜教!
版權聲明:本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
特此聲明:所有評論和私信都會在第一時間回復。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信我
聲援博主:如果您覺得文章對您有幫助,可以點擊文章右下角【推薦】一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!