詳解Intellij IDEA搭建SpringBoot

Java團長_發表於2018-10-08

前言


Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力於在蓬勃發展的快速應用開發領域(rapid application development)成為領導者。


Spring Boot概念


從最根本上來講,Spring Boot就是一些庫的集合,它能夠被任意專案的構建系統所使用。簡便起見,該框架也提供了命令列介面,它可以用來執行和測試Boot應用。框架的釋出版本,包括整合的CLI(命令列介面),可以在Spring倉庫中手動下載和安裝。


  • 建立獨立的Spring應用程式

  • 嵌入的Tomcat,無需部署WAR檔案

  • 簡化Maven配置

  • 自動配置Spring

  • 提供生產就緒型功能,如指標,健康檢查和外部配置

  • 絕對沒有程式碼生成並且對XML也沒有配置要求


搭建Spring Boot


1. 生成模板


可以在官網(https://start.spring.io/)生成spring boot的模板。如下圖:


640


然後用idea匯入生成的模板。


640


2. 建立Controller


640


3. 執行專案


新增註解 @ComponentScan然後執行。


640


在看到"Compilation completed successfully in 3s 676ms"訊息之後,開啟任意瀏覽器,輸入 http://localhost:8080/index 即可檢視效果,如下圖:


640


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, 目錄如下:


640


新增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{
   @Autowired
   UserMapper userMapper;

   @Override
   public 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 {
   @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;
   }
}


修改租車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


按如下提示執行


640


瀏覽器輸入得到效果:


640


GitHub地址


https://github.com/toutouge/javademo/tree/master/zuche_test/zuche


總結


系統故障常常都是不可預測且難以避免的,因此作為系統設計師的我們,必須要提前預設各種措施,以應對隨時可能的系統風險。


PS:如果覺得我的分享不錯,歡迎大家隨手點贊、轉發。


Java團長

專注於Java乾貨分享

640

掃描上方二維碼獲取更多Java乾貨

相關文章