springboot 基礎教程

SpringBoot 是一個快速開發的框架,能夠快速的整合第三方框架,簡化XML配置,全部採用註解形式,內置Tomcat容器,幫助開發者能夠實現快速開發,SpringBoot的Web組件 默認集成的是SpringMVC框架。

SpringMVC是控制層。

1.4、SpringBoot和SpringCloud區別

SpringBoot 是一個快速開發的框架,能夠快速的整合第三方框架,簡化XML配置,全部採用註解形式,內置Tomcat容器,幫助開發者能夠實現快速開發,SpringBoot的Web組件 默認集成的是SpringMVC框架。

SpringMVC是控制層。

SpringCloud依賴與SpringBoot組件,使用SpringMVC編寫Http協議接口,同時SpringCloud是一套完整的微服務解決框架。

           org.springframework.boot            spring-boot-starter-parent            2.0.0.RELEASE                                         org.springframework.boot                  spring-boot-starter-web                  spring-boot-starter-parent作用

在pom.xml中引入spring-boot-start-parent,spring官方的解釋叫什麼stater poms,它可以提供dependency management,也就是說依賴管理,引入以後在申明其它dependency的時候就不需要version了,後面可以看到。

spring-boot-starter-web作用

springweb 核心組件

spring-boot-maven-plugin作用

如果我們要直接Main啓動spring,那麼以下plugin必須要添加,否則是無法啓動的。如果使用maven 的spring-boot:run的話是不需要此配置的。(我在測試的時候,如果不配置下面的plugin也是直接在Main中運行的。)

@RestController
在上加上RestController 表示修飾該Controller所有的方法返回JSON格式,直接可以編寫Restful接口
@EnableAutoConfiguration
註解:作用在於讓 Spring Boot   根據應用所聲明的依賴來對 Spring 框架進行自動配置
這個註解告訴Spring Boot根據添加的jar依賴猜測你想如何配置Spring。由於spring-boot-starter-web添加了Tomcat和Spring MVC,所以auto-configuration將假定你正在開發一個web應用並相應地對Spring進行設置。
 
public class HelloController {
      @RequestMapping("/hello")
      public String index() {
           return “Hello World”;
      }    
public static void main(String[] args) {
           SpringApplication.run(HelloController.class, args);
      }
}

2.7、SpringBoot啓動方式1

Springboot默認端口號爲8080

@RestController
@EnableAutoConfiguration
public class HelloController {
      @RequestMapping("/hello")
      public String index() {
           return “Hello World”;
      }    
public static void main(String[] args) {
           SpringApplication.run(HelloController.class, args);
      }
}

2.8、SpringBoot啓動方式2

@ComponentScan(basePackages = “com.itmayiedu.controller”)—控制器掃包範圍

@ComponentScan(basePackages = “com.itmayiedu.controller”)
@EnableAutoConfiguration
public class App {
      public static void main(String[] args) {
           SpringApplication.run(App.class, args);
      }
}

2.9、SpringBoot啓動方式3

@SpringBootApplication

@SpringBootApplication 被 @Configuration、@EnableAutoConfiguration、@ComponentScan 註解所修飾,換言之 Springboot 提供了統一的註解來替代以上三個註解

掃包範圍:在啓動類上加上@SpringBootApplication註解,當前包下或者子包下所有的類都可以掃到。

這是自己做demo寫的pom裏面的東西,當用到什麼的時候添加什麼

<?xml version="1.0" encoding="UTF-8"?>


4.0.0

<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>demo</name>
<description>Demo project for Spring Boot</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.3.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <!--排除自帶的logback依賴-->
        <!--    <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>-->
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
              <!--排除自帶的logback依賴-->
           <!-- <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>-->
         </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
    </dependency>
    <!-- SpringBoot 外部tomcat支持 -->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!-- springboot-log4j -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j</artifactId>
        <version>1.3.8.RELEASE</version>
    </dependency>
    <!--定義aop的依賴-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>
    <!-- ##lombok插件-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>

    <!--mabatis依賴-->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.1.1</version>
    </dependency>
    <!-- mysql 依賴 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <!-- springboot 整合 pagehelper -->
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
        <version>1.2.5</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
這是一些常用的配置

server.port=8077
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

name=itmayiedu

spring.profiles.active=prd
#打印那個包底下的sql
logging.level.com.example.mapper=debug

###datasource
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
seUnicoding=true
characterEncoding=utf-8

###這是整合pagehelper所需要的一些參數
logging.level.com.example.demo.dao=DEBUG
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
pagehelper.page-size-zero=true
這是我自己的截圖springboot的啓動

這是aop去處理一下日誌

這是利用aop去處理分頁

對應的

這是全局捕獲異常的一個例子

這個是開啓事務的例子

https://www.2cto.com/kf/201609/550158.html

SpringBootServletInitializer這個關鍵字是爲了外部tomcat運行項目

性能優化

組件自動掃描帶來的問題

默認情況下,我們會使用 @SpringBootApplication 註解來自動獲取應用的配置信息,但這樣也會給應用帶來一些副作用。使用這個註解後,會觸發自動配置( auto-configuration )和 組件掃描 ( component scanning ),這跟使用 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 三個註解的作用是一樣的。這樣做給開發帶來方便的同時,也會有三方面的影響:

1、會導致項目啓動時間變長。當啓動一個大的應用程序,或將做大量的集成測試啓動應用程序時,影響會特別明顯。

2、會加載一些不需要的多餘的實例(beans)。

3、會增加 CPU 消耗。

針對以上三個情況,我們可以移除 @SpringBootApplication 和 @ComponentScan 兩個註解來禁用組件自動掃描,然後在我們需要的 bean 上進行顯式配置:

//// 移除 @SpringBootApplication and @ComponentScan, 用 @EnableAutoConfiguration 來替代
//@SpringBootApplication
@Configuration
@EnableAutoConfiguration
public class App01 {
 
      public static void main(String[] args) {
           SpringApplication.run(App01.class, args);
      }
 
}
 
以@SpringBootApplication 啓動時間8.56秒

將Servlet容器變成Undertow

默認情況下,Spring Boot 使用 Tomcat 來作爲內嵌的 Servlet 容器

可以將 Web 服務器切換到 Undertow 來提高應用性能。Undertow 是一個採用 Java 開發的靈活的高性能 Web 服務器,提供包括阻塞和基於 NIO 的非堵塞機制。Undertow 是紅帽公司的開源產品,是 Wildfly 默認的 Web 服務器。首先,從依賴信息裏移除 Tomcat 配置:

                 org.springframework.boot                  spring-boot-starter-web                                                                    org.springframework.boot                             spring-boot-starter-tomcat                                                   然後添加 Undertow:       org.springframework.boot       spring-boot-starter-undertow SpringBoot JVM參數調優

這個根據服務器的內存大小,來設置堆參數。

-Xms :設置Java堆棧的初始化大小

-Xmx :設置最大的java堆大小

實例參數-XX:+PrintGCDetails -Xmx32M -Xms1M

本地項目調優

外部運行調優

java -server -Xms32m -Xmx32m  -jar springboot_v2.jar

服務器名稱
第一次運行
第二次運行
第三次運行
平均值
Tomcat
4773
5194
5334.7
5100
Undertow
6666
6373
6451
6496


作者:qq375891390
來源:CSDN
原文:https://blog.csdn.net/qq375891390/article/details/81666954
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章