亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Boot的概念和功能介紹

發布時間:2021-06-25 11:35:35 來源:億速云 閱讀:167 作者:chen 欄目:大數據

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

Spring Boot學習筆記

一、Spring Boot 概述

1.Spring Boot的誕生

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

2.Spring Boot的特點

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

  • 開箱即用,沒有代碼生成,也無需XML配置。可以通過修改默認配置來滿足特定需求

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

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

3.Spring Boot的核心功能

  • 起步依賴

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


  • 自動配置

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



二、Spring Boot快速入門

(1).環境搭建

方式1:
1.創建一個普通的Maven工程
2.在pom.xml中導入起步依賴: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的開發,所以項目要導入web的啟步依賴-->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
3.編寫應用程序的引導類

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

package com.wsc;

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

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

在springboot的引導類MySpringBootApplication的同級包或者子包中創建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.測試

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

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

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

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

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

(3).設置springboot熱部署

1.熱部署的概念

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

2.實現方式

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

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

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

首先進入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
#修改服務器的端口號
server.port=8081
#修改web應用的名稱
server.servlet.context-path=/demo
2.application.yml(等同于application.yaml)
#普通數據的配置
name: zhansan

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

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

#配置數組、collection集合(對象數據)
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).配置文件與配置類的映射關系

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

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;

    //必須添加屬性對應的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整合其他技術

(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的父工程的起步依賴,已經整合了spring,并對spring的配置進行了默認配置優化


(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.添加數據庫驅動坐標(pom.xml)
<!-- MySQL連接驅動  不用添加版本 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
3.添加數據庫連接信息(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.創建用戶表

在test數據庫中創建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下創建目錄mapper-->在mapper下創建UserMapper.xml,其內容如下

<?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 產生關聯

#spring集成Mybatis環境
#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創建時會自動生成test功能的起步依賴,若沒有,則手動在pom.xml中手動導入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的引導類
@SpringBootTest(classes = SpringbootMybatisApplication.class)//測試引導類的字節碼
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.添加數據庫驅動坐標(pom.xml)
<!-- MySQL連接驅動  不用添加版本 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
3.添加數據庫連接信息(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.創建用戶表

在test數據庫中創建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要手動導入依賴

<!--jdk9需要導入如下坐標-->
<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中沒有,從數據庫中查詢
        if (null==userListJson){
            //3.從數據庫中查詢
            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("===從數據庫中查詢===");
        }else {
            System.out.println("===從redis中查詢===");
        }
        System.out.println(userListJson);
    }
}

“Spring Boot的概念和功能介紹”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新昌县| 山丹县| 临江市| 会泽县| 滁州市| 盐池县| 唐海县| 封开县| 神农架林区| 蚌埠市| 台南市| 宜黄县| 弥勒县| 合阳县| 临汾市| 尼玛县| 宜昌市| 会泽县| 江孜县| 临汾市| 和田市| 漾濞| 洞头县| 城市| 县级市| 荥阳市| 衡南县| 即墨市| 久治县| 阿城市| 鲁甸县| 麟游县| 漯河市| 广安市| 东乌| 百色市| 东光县| 沧州市| 安福县| 白朗县| 神池县|