SpringBoot的概念和功能介紹

本篇內(nèi)容介紹了“Spring Boot的概念和功能介紹”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)公司主要從事做網(wǎng)站、網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)珠山,10年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

Spring Boot學習筆記

一、Spring Boot 概述

1.Spring Boot的誕生

Spring Boot的目的就是對spring的缺點進行改善和優(yōu)化,基于約定、優(yōu)于配置的思想使得開發(fā)人員不必在配置和業(yè)務(wù)邏輯之間進行思維切換,全身心投入到業(yè)務(wù)邏輯的代碼編寫當中,從而大大提高開發(fā)效率,縮短項目周期。

2.Spring Boot的特點

  • 基于spring的開發(fā)提供更快捷的入門體驗

  • 開箱即用,沒有代碼生成,也無需XML配置??梢酝ㄟ^修改默認配置來滿足特定需求

  • 提供了一些大型項目中的常見的非功能型特性,入嵌入式服務(wù)器、安全、指標、健全監(jiān)測、外部配置等

  • Spring Boot不是對spring功能上的增強,而是提供了一種快速使用spring的方式

3.Spring Boot的核心功能

  • 起步依賴

    本質(zhì)上是一個Maven項目對象模型(Project Object Model,POM),定義了對其它庫的傳遞依賴,這些東西加在一起,即可支持某項能。
    簡單地說,就是將具備某些功能的坐標打包到一起,并提供一些默認的功能。

  • 自動配置

    本質(zhì)上是應(yīng)用程序啟動的過程中,考慮了眾多因素,才決定spring配置應(yīng)該用哪一個,該過程是spring自動完成的。


二、Spring Boot快速入門

(1).環(huán)境搭建

方式1:
1.創(chuàng)建一個普通的Maven工程
2.在pom.xml中導(dǎo)入起步依賴:springboot的起步依賴web的啟動依賴
<!--1 springboot項目都要繼承springboot的起步依賴-->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.1.RELEASE</version>
</parent>

<!--2 SpringBoot要集成SpringMVC進行Controller的開發(fā),所以項目要導(dǎo)入web的啟步依賴-->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
3.編寫應(yīng)用程序的引導(dǎo)類

要通過springboot的引導(dǎo)類啟動springboot項目才可以在瀏覽器進行訪問。

package com.wsc;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * springboot的引導(dǎo)類,程序的入口
 */
@SpringBootApplication
public class MySpringBootApplication {
    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class);
    }
}
4.編寫controller

在springboot的引導(dǎo)類MySpringBootApplication的同級包或者子包中創(chuàng)建controller

package com.wsc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * springmvc的控制器
 */
@Controller
public class QuickStartController {

    @RequestMapping("/quick")
    @ResponseBody
    public String quickStart(){
        return "spring boot 啟動了。。。";
    }
}
5.測試

啟動引導(dǎo)類,然后在瀏覽器中訪問http://localhost:8080/quick

測試成功后顯示如下
Spring Boot的概念和功能介紹
方式2:
idea創(chuàng)建maven工程-->選擇Spring Initializr-->點擊next-->修改Project Matadata的參數(shù)-->next-->
選擇對應(yīng)依賴以及springboot的版本-->next檢查項目名-->finish

(2).入門程序代碼解析

  • @SpringBootApplication:標注該類為SpringBoot的啟動類,該注解具備多種功能

  • SpringApplication.run(MySpringBootApplication.class) 代表運行SpringBoot的啟動類,參數(shù)為SpringBoot 啟動類的字節(jié)碼對象

(3).設(shè)置springboot熱部署

1.熱部署的概念

在idea中設(shè)置springboot的熱部署,使得我們在開發(fā)程序的過程中,如果修改了類、頁面等資源,不用重啟服務(wù)器,代碼也能生效。

2.實現(xiàn)方式

在 pom.xml 中添加如下配置 即可

<!--熱部署配置-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

注意:IDEA進行SpringBoot熱部署失敗原因 出現(xiàn)這種情況,并不是熱部署配置問題,其根本原因是因為Intellij IEDA默認情況下不會自動編譯,需要對IDEA進 行自動編譯的設(shè)置,如下:

首先進入file->setting

Spring Boot的概念和功能介紹

然后 Shift+Ctrl+Alt+/,選擇Registry

Spring Boot的概念和功能介紹


三、Spring Boot原理分析

  • 起步依賴:點開起步依賴的jar包,查看源碼解析,里面有許多的jar包的依賴

  • 自動配置:查看@SpringBootApplication的源碼,里面整合了許多spring的配置


四、Spring Boot的配置文件

(1).Spring Boot配置文件的類型

springboot是基于約定的,所有有很多配置都有默認值,但如果想使用自己的配置替換默認配置的話,就可以使用application.properties或者application.yml(application.yaml)進行配置。

springboot默認會從Resources目錄下加載application.properties或application.yml(application.yaml)文件

1. application.properties
#修改服務(wù)器的端口號
server.port=8081
#修改web應(yīng)用的名稱
server.servlet.context-path=/demo
2.application.yml(等同于application.yaml)
#普通數(shù)據(jù)的配置
name: zhansan

#對象的配置
person:
  name: lisi
  age: 18
  addr: beijing
#行內(nèi)對象的配置
#person: {name: zhansan,age: 18,addr: beijing}

#配置數(shù)組、collection集合(普通字符串)
city:
  - beijing
  - tianjiang
  - shanghai
  - shenzhen
city2: [beijing,tianjing,shanhai,shenzhen]

#配置數(shù)組、collection集合(對象數(shù)據(jù))
student:
  - name: zhansan
    age: 12
    addr: beijing
  -name: lisi
   age: 13
   addr: shenzhen
student2: [{name: zhangsan,age: 12,addr: beijing},{name: lisi,age: 14,addr: shenzhen}]


#配置map集合
map:
  key1: value1
  key2: value2

server:
  port: 8082

(2).配置文件與配置類的映射關(guān)系

如何從配置文件中拿出屬性的值注入到配置類中對應(yīng)的成員上。

1.使用注解@Value
@Controller
public class QuickController2 {
    @Value("${name}") //直接在成員上添加@Value注解,無需get、set方法
    private String name;
    @Value("${person.addr}")
    private String addr;

    @RequestMapping("/quick2")
    @ResponseBody
    public String quick2(){

        return "name:"+name+",addr:"+addr;
    }
}
2.使用注解@ConfigurationProperties
@Controller
@ConfigurationProperties(prefix = "person")//在配置類上添加@ConfigurationProperties
public class QuickController3 {

    private String name;
    private String addr;

    //必須添加屬性對應(yīng)的get、set方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    @RequestMapping("/quick3")
    @ResponseBody
    public String quick3(){

        return "name:"+name+",addr:"+addr;
    }
}

五、Spring Boot整合其他技術(shù)

(1).Spring Boot整合Spring MVC

在pom.xml中添加web功能的起步依賴即可,底層傳遞了springmvc的依賴

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

(2).Spring Boot整合 Spring

springboot并沒有增強spring的功能,只是提供了一種快速使用spring的方式

springboot的父工程的起步依賴,已經(jīng)整合了spring,并對spring的配置進行了默認配置優(yōu)化


(3).Spring Boot整合Mybatis

整合步驟如下:

1.添加mybatis的起步依賴(pom.xml)
    <!--mybatis的起步依賴-->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.0.0</version>
    </dependency>		
2.添加數(shù)據(jù)庫驅(qū)動坐標(pom.xml)
<!-- MySQL連接驅(qū)動  不用添加版本 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
3.添加數(shù)據(jù)庫連接信息(resources/application.properties)
#DB Configuration:
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
4.創(chuàng)建用戶表

在test數(shù)據(jù)庫中創(chuàng)建user表

-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(50) DEFAULT NULL,
`password` VARCHAR(50) DEFAULT NULL,
`name` VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'zhangsan', '123', '張三');
INSERT INTO `user` VALUES ('2', 'lisi', '123', '李四');
5.添加實體類Bean
package com.wsc.domain;

import org.springframework.web.bind.annotation.InitBinder;

public class User {

    private Integer id;
    private String username;
    private String password;
    private String name;

    //getter setter.....

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", name='" + name + '\'' +
                '}';
    }
}
6.編寫Mapper(等同于Dao)
package com.wsc.mapper;

import com.wsc.domain.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
@Mapper //@Mapper標記該類是一個mybatis的mapper接口,可以被spring boot自動掃描到spring上下文中
public interface UserMapper {

    public List<User> queryUserList();
}
7.配置Mapper映射配置文件(application.properties相當于主配置文件,需要在其中添加映射配置文件)

在src-->main-->resources下創(chuàng)建目錄mapper-->在mapper下創(chuàng)建UserMapper.xml,其內(nèi)容如下

<?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" >
<mapper namespace="com.itheima.mapper.UserMapper">
    <select id="queryUserList" resultType="user">
    	select * from user
    </select>
</mapper>
8.在application.properties中添加mybatis信息,添加映射配置文件

目的是將springboot 和 mybatis 產(chǎn)生關(guān)聯(lián)

#spring集成Mybatis環(huán)境
#pojo別名掃描包
mybatis.type-aliases-package=com.itheima.domain
#加載Mybatis映射文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
9.編寫controller
package com.wsc.controller;

import java.util.List;

@Controller
public class MybatisController {
    @Autowired
    private UserMapper userMapper;//userMapper編譯期會報錯,因為項目沒有運行無法自動生成mapper

    @RequestMapping("/query")
    @ResponseBody
    public List<User> queryUserList(){
        return userMapper.queryUserList();
    }

    @RequestMapping("/test")
    @ResponseBody
    public String testMybatis(){
        return "集成mybatis框架";
    }
}
10.測試
訪問瀏覽器 http://localhost:8080/query
Spring Boot的概念和功能介紹

(4).SpringBoot整合Junit

1.用idea創(chuàng)建時會自動生成test功能的起步依賴,若沒有,則手動在pom.xml中手動導(dǎo)入test功能的起步依賴
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
2.編寫測試類
package com.wsc;

import com.wsc.domain.User;
import com.wsc.mapper.UserMapper;

import java.util.List;

/**
 * springbooot單元測試
 */
@RunWith(SpringRunner.class) //用誰運行springboot的引導(dǎo)類
@SpringBootTest(classes = SpringbootMybatisApplication.class)//測試引導(dǎo)類的字節(jié)碼
public class MybatisTest {
    @Autowired
    private UserMapper userMapper;

    @Test
    public void testQueryUserList() {
        List<User> users = userMapper.queryUserList();
        System.out.println(users);
    }
}

(5).SpringBoot整合Spring Data JPA

1.添加spring data jpa的起步依賴(pom.xml)
<!-- springBoot JPA的起步依賴 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>		
2.添加數(shù)據(jù)庫驅(qū)動坐標(pom.xml)
<!-- MySQL連接驅(qū)動  不用添加版本 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
3.添加數(shù)據(jù)庫連接信息(resources/application.properties)
#DB Configuration:
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
4.創(chuàng)建用戶表

在test數(shù)據(jù)庫中創(chuàng)建user表

-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(50) DEFAULT NULL,
`password` VARCHAR(50) DEFAULT NULL,
`name` VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'zhangsan', '123', '張三');
INSERT INTO `user` VALUES ('2', 'lisi', '123', '李四');
5.添加實體類Bean
package com.wsc.domain;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {
    @Id//主鍵
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String username;
    private String password;
    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    //get set 方法.....

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", name='" + name + '\'' +
                '}';
    }
}
6.編寫Repository(等同于Dao和Mapper)
package com.wsc.repository;
import com.wsc.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
 * 等價于mapper 和dao
 */
public interface UserRepository extends JpaRepository<User,Long> {
    public List<User> findAll();
}
7.在application.properties中集成spring data jpa信息
#springboot集成springdata jpa
#JPA Configuration:
spring.jpa.database=MySQL
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
9.編寫測試類
package com.wsc;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootDataJpaApplication.class)
public class SpringDataJpaTest {
    @Autowired
    private UserRepository userRepository;

    @Test
    public void testFindAll() {
        List<User> all = userRepository.findAll();
        System.out.println(all);
    }
}
10.單元測試
控制臺輸出:
Spring Boot的概念和功能介紹

注意:jdk9要手動導(dǎo)入依賴

<!--jdk9需要導(dǎo)入如下坐標-->
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>

(6).SpringBoot整合Spring Cloud

(7).SpringBoot整合redis

1.添加redis的起步依賴(pom.xml)
<!-- 添加redis的起步依賴 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.在application.properties中配置redis的連接信息
#Redis
spring.redis.host=127.0.0.1
spring.redis.port=6379
3.編寫測試類

注入RedisTemplate測試redis操作

package com.wsc;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootDataJpaApplication.class)
public class RedisTest {
    @Autowired
    private UserRepository userRepository;

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    @Test
    public void test() throws JsonProcessingException {
        //1.從redis中查詢
        String userListJson = redisTemplate.boundValueOps("user.findAll").get();
        //2.若redis中沒有,從數(shù)據(jù)庫中查詢
        if (null==userListJson){
            //3.從數(shù)據(jù)庫中查詢
            List<User> all = userRepository.findAll();
            //4.將list對象序列化為json字符串  jackson解析引擎
            ObjectMapper objectMapper = new ObjectMapper();
            userListJson = objectMapper.writeValueAsString(all);
            //5.將json字符串存入redis
            redisTemplate.boundValueOps("user.findAll").set(userListJson);
            System.out.println("===從數(shù)據(jù)庫中查詢===");
        }else {
            System.out.println("===從redis中查詢===");
        }
        System.out.println(userListJson);
    }
}

“Spring Boot的概念和功能介紹”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

本文名稱:SpringBoot的概念和功能介紹
網(wǎng)站URL:http://bm7419.com/article42/gighhc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、用戶體驗、ChatGPT、網(wǎng)站導(dǎo)航、域名注冊云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設(shè)