1. 程式人生 > >Spring boot入門(1)

Spring boot入門(1)

概念

Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。

spring boot對spring mvc、tomcat等都做了整合,只需要依賴spring boot的jar,通過註解指定主類,然後執行裡面的main方法,它就能啟動tomcat提供服務。不需要spring mvc的繁瑣配置。

使用spring boot時不需要引入spring mvc,tomcat等的依賴,只需要引入spring boot的依賴即可,它會自動尋找spring mvc,tomcat等的合適的版本引入,解決了框架中各種元件版本不一致的問題。

1.開發第一個Spring Boot應用程式

讓我們用Java開發一個簡單的“Hello World!”Web應用程式,它突出了一些Spring Boot的主要功能。我們將使用Maven來構建這個專案,因為大多數IDE都支援它

在開始之前,開啟終端以檢查您是否安裝了有效的Java和Maven版本。

$ java -version
java版“1.7.0_51”
Java(TM)SE執行時環境(版本1.7.0_51-b13)
Java HotSpot(TM)64位伺服器VM(內建24.51-b03,混合模式)
$ mvn -v
Apache Maven 3.2.3(33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T13:58:10-07:00)
Maven home:/Users/user/tools/apache-maven-3.1.1
Java版本:1.7.0_51,供應商:Oracle Corporation

有效版本要在jdk1.7版本以上,maven版本要在3.2.3以上,如我的版本:
在這裡插入圖片描述

1.1建立POM

我們需要從建立Maven pom.xml檔案開始。這pom.xml是用於構建專案的配方。開啟您喜歡的文字編輯器並新增以下內容:

<!-- 繼承預設值為Spring Boot -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.17.RELEASE</version>
	</parent>

1.2新增類路徑依賴項

於我正在開發一個Web應用程式,我們將新增一個spring-boot-starter-web依賴項

<dependencies> 
    <dependency> 
        <groupId> org.springframework.boot </ groupId> 
        <artifactId> spring-boot-starter-web </ artifactId> 
    </ dependency> 
</ dependencies>

1.3編寫程式碼

要完成我們的應用程式,我們需要建立一個Java檔案

package com.ps;

import java.util.HashMap;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
//@ResponseBody	  表示返回json字串
@SpringBootApplication
public class Mvc {
	
	@GetMapping("/")
    String home() {
        return "Hello 張三!";
    }
	
	@GetMapping("/hello")
	HashMap<String, String> hello() {
		HashMap<String,String> map = new HashMap<String, String>();
		map.put("name", "張三");
        return map;
    }
	

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Mvc.class, args);
    }
}

1.3.1 註解

@RestController:集合了@ResponseBody和@Controller兩個註解,能同時做到返回一個json物件和掃描該類所在的包下所有帶註解的類的效果

@RequestMapping 和他的衍生品 @GetMapping,@PostMapping,@PutMapping,@DeleteMapping,@PutMapping
這個註解的作用是當前臺介面呼叫Controller處理資料時候告訴控制器怎麼操作。get 對應查詢,put 對應更新,post 對應增加,delete 對應刪除。
@SpringBootApplication:主要重要是無須在寫xml配置檔案

1.3.2 執行

直接執行jvm,然後瀏覽器訪問地址
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
注意:預設埠是8080

2.spring boot整合redis

首先,在pom.xml檔案裡面加上依賴

<!-- 整合redis -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
		</dependency>

測試:

package com.ps;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Redis {
	
	@Autowired
	StringRedisTemplate str;	
	

	@GetMapping("/set")
	public void setStr() {
		str.boundValueOps("name").set("張三");
		redisTemplate.boundListOps("list").leftPushAll("張三","李四","王五");
		str.boundListOps("list").leftPushAll("張三","李四","王五");
	}
	
	@GetMapping("/get")
	public String getStr(String key) {
		
		List<String> range2 = str.boundListOps("list").range(0, 10);
		System.out.println(range2.toString());
		return str.boundValueOps("name").get();
	}
}

同時還要寫一個資原始檔:application.properties名字固定

#確定伺服器的埠
server.port=8085
#確定redis的資料庫
spring.redis.database=0
#確定redis連線的ip
spring.redis.host=192.168.0.243
#確定redis的埠
spring.redis.port=6379
#確定redis的密碼
spring.redis.password=ps123456

效果圖
在這裡插入圖片描述
在這裡插入圖片描述
注意:要先啟動redis的服務

3.spring boot整合mysql和Druid

加入依賴:

		<!-- 整合mysql -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<!-- mysql驅動包 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<!-- 使用druid連線池依賴將預設的c3p0連線池覆蓋掉 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid-spring-boot-starter</artifactId>
			<version>1.1.10</version>
		</dependency>

測試:

package com.ps;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.ColumnMapRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.druid.pool.DruidDataSource;

@RestController
public class Mysql {

	// spring boot預設使用的是c3p0連線池,但是效率沒有druid連線池好,所以在這裡我使用了druid連線池
	@Autowired   // 這裡是druid連線池
	private JdbcTemplate jdbcTemplate;
	
	@GetMapping("/getEmp")
	public List<Map<String, Object>> getMysql() {
		List<Map<String, Object>> query = jdbcTemplate.query("select sal from emp", new ColumnMapRowMapper());
		return query;	
	}
}

application.properties資原始檔里加:

spring.datasource.url=jdbc:mysql://localhost:3306/m1dn
spring.datasource.username=root
spring.datasource.password=ps123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.stat-view-servlet.login-username=druid
spring.datasource.druid.stat-view-servlet.login-password=123456
spring.datasource.druid.filter.stat.slow-sql-millis=1

效果圖:
在這裡插入圖片描述

訪問:

http://127.0.0.1:8080/druid/index.html 

這是Druid的功能
使用者和密碼就是在上面application.properties資原始檔裡的設定的druid和123456
在這裡插入圖片描述
小知識:spring boot中帶有@Configuration註解的類,可以看成是spring boot的配置檔案的類