SpringBoot學習筆記1 - 20181127

一.引用

  1. 做用
  • 用來簡化Spring應用的初始化搭建以及開發過程。
  • 快速項目構建,簡化配置
  • Springboot(微框架)=Spring(項目管理框架)+SpringMVC(控制器)
  1. 規範(約定俗成)
  • 在底層子包外,有一個Application.java
    入口類,一個springboot項目,有且只有一個
  • springboot的約定(就是配置,也稱」約定大於配置「)
    applicaton.yml 或 application.properties,且必須在src/main/resources根目錄
  1. springboot的特色
    ①建立獨立的spring應用
    ②嵌入Tomcat,無需部署war文件
    ③簡化Maven配置
    ④自動配置Spring
    ⑤沒有xml的配置java

  2. 開發環境要求
    ①Maven 3以上
    ②Spring FrameWork 4以上
    ③Jdk1.7以上 boot2在1.8以上
    ④springboot 1.5以上mysql

二.Springboot第一個搭建環境

  1. pom.xml依賴
<!-- springboot的父級項目依賴 -->
	<parent>
   	 	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-parent</artifactId>
    	<version>1.5.7.RELEASE</version>
	</parent>

	<!-- springboot的web依賴 -->
    <dependency>
      	<groupId>org.springframework.boot</groupId>
      	<artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- 測試 -->
    <dependency>
      	<groupId>org.springframework.boot</groupId>
      	<artifactId>spring-boot-starter-test</artifactId>
      	<!-- 只在test測試裏面運行 -->
      	<scope>test</scope>
    </dependency>
  1. 書寫springboot的入口類 Application.java
@SpringBootApplication
public class Application {
	//啓動springboot應用
    public static void main(String[] args) {
		//參數1:springboot入口類對象、參數2:main函數的參數
        SpringApplication.run(Application.class,args);
    }
}

@SpringBootApplication
修飾範圍:只能用在入口類上 惟一
做用:
①.表明當前應用是一個springboot構建的應用
②.表明這個類是springboot的入口應用程序員

  1. 書寫springboot的約定 application.yml
server:
  port: 9090
  context-path: /springboot

三.SpringBootApplication註解拆解

入口類上註解,是如下三個註解的組合web

@SpringBootApplication		//自動配置spring相關內容
@EnableAutoConfiguration	//第三方jar與springboot自動配置
@ComponentScan				//手動指定包掃描,默認掃描入口類當前包及其包下子包

在這裏插入圖片描述

注意:
@SpringBootConfiguration繼承自@Configuration,兩者功能也一致,標註當前類是配置類,
並會將當前類內聲明的一個或多個以@Bean註解標記的方法的實例歸入到spring容器中,而且實例名就是方法名。spring

其餘註解:
spring4中sql

@RestController		//基於restful風格控制器
			//使用在controller類上,至關於@Controller + @ResponseBody
			//做用:將類中全部方法的返回值以json格式響應

在這裏插入圖片描述

四.更換啓動banner圖

在resources包下,建立banner.txt,並在其中書寫內容,個人示例以下:數據庫

______          _____                                 ______          __   __   __
  / ____/ ____    / ___/  ____   __  __  _____  _____   / ____/ ____    / /  / /  / /
 / / __  / __ \   \__ \  / __ \ / / / / / ___/ / ___/  / / __  / __ \  / /  / /  / /
/ /_/ / / /_/ /  ___/ / / /_/ // /_/ / / /    (__  )  / /_/ / / /_/ / /_/  /_/  /_/
\____/  \____/  /____/ / .___/ \__,_/ /_/    /____/   \____/  \____/ (_)  (_)  (_)
                      /_/

五.Springboot的視圖解析 與 中文亂碼問題

springboot中默認的視圖解析器是:thymeleaf(view層框架)
springboot集成jsp:apache

  1. 引入springboot對jsp頁面支持依賴
<!--jstl-->
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    
    <!--引入springboot 對jsp頁面的支持-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>
  1. 經過約定,明確視圖解析器
    注意:使用main函數方式啓動默認內嵌的tomcat,不會解析jsp頁面
spring:
  mvc:
    view:	#試圖解析器
      prefix: /
      suffix: .jsp
  http:
    encoding:
      charset: utf-8 #中文亂碼問題
      force: true
  1. 項目中引入支持jsp啓動插件
<plugins>

      <!--springboot 支持jsp啓動插件-->
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
      
</plugins>
  1. 使用插件啓動,才能支持jsp頁面,右側maven中
    Pligins — springboot-boot — springboot:run
    【Lifecycle — clean 清除冗餘編譯】
    【springboot 1.5.x以後,使用內置tomcat8,編碼爲utf-8 / 以前的編碼爲iso-8859-1】
    【選中 single instance only 單例執行run,最方便】

六.springboot中約定的拆分(配置文件的拆分)

spring.profiles.active:xxx #激活哪一個文件生效(寫文件-後邊單詞便可)
圖三json

七.springboot與MyBatis集成

  1. 引入mybatis的依賴
<!--引入springboot和mybatis整合jar-->
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>1.3.2</version>
    </dependency>

    <!--引入mysql-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.38</version>
    </dependency>

    <!--druid-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.10</version>
    </dependency>
  1. 配置application.yml
    ①數據源
spring:    
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource #指定數據源
    driver-class-name: com.mysql.jdbc.Driver #指定驅動
    url: jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8 #指定url
    username: root
    password: root

②mapper配置文件的位置 和 實體起別名tomcat

mybatis:
  mapper-locations: classpath:com/abc/mapper/*Mapper.xml #指定mapper配置文件位置
  type-aliases-package: com.abc.entity #指定起別名的包
  1. 入口類上 加接口位置掃描
@SpringBootApplication
@MapperScan("com.abc.dao")
public class Application {
}

八.springboot本地測試JUnit

  1. 引入兩個測試依賴 junit4.12 和 spring-boot-start-test
<dependency>
      	<groupId>junit</groupId>
      	<artifactId>junit</artifactId>
     	<version>4.12</version>
     	<scope>test</scope>
    </dependency>
    
    <!-- 測試 -->
    <dependency>
      	<groupId>org.springframework.boot</groupId>
      	<artifactId>spring-boot-starter-test</artifactId>
      	<!-- 只在test測試裏面運行 -->
      	<scope>test</scope>
    </dependency>
  1. 建立測試類示例
//在當前類實例化啓動springboot應用
//當測試類與入口類不平級時,需手動指定入口類;要求junit4.12
@SpringBootTest(classes = Application.class)
@RunWith(SpringRunner.class)
public class TestUser {
    @Autowired
    private UserDAO userDAO;

    @Test
    public void test1(){
        User user = userDAO.selectByPrimaryKey("1");
        System.err.println(user);
    }
}

ps:解決注入dao紅色下劃線問題!
在DAO接口加以下註解:

@Mapper
@Component(value = "userDAO")
public interface UserDAO {

@Mapper
@Component:定義Spring管理Bean,經過@Component將切面定義爲Spring管理Bean,像@Service、@Controller、@Repository都是其擴展

  1. 其餘
  • JUnit是一款優秀的開源Java單元測試框架,也是目前使用率最高最流行的測試框架,開發工具Eclipse和IDEA對JUnit都有很好的支持,JUnit主要用於白盒測試和迴歸測試。
    ~ 白盒測試:把測試對象看做一個打開的盒子,程序內部的邏輯結構和其餘信息對測試人 員是公開的;
    ~ 迴歸測試:軟件或環境修復或更正後的再測試;
    ~ 單元測試:最小粒度的測試,以測試某個功能或代碼塊。通常由程序員來作,由於它須要知道內部程序設計和編碼的細節;
  • 在測試數據操做的時候,咱們不想讓測試污染數據庫,也是能夠實現的,只須要添加給測試類上添加「@Transactional」 便可,這樣既能夠測試數據操做方法,又不會污染數據庫了。

九.springboot中jsp頁面的熱部署

  1. 引入熱部署依賴(注意,先下載依賴,再配成插件)
<!--springboot 支持jsp啓動插件-->
      <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>

        <dependencies>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>springloaded</artifactId>
            <version>1.2.7.RELEASE</version>
          </dependency>
        </dependencies>

     </plugin>
  1. 開啓idea自動編譯功能
    settings — Compiler — Build project automatically或Make~
  2. 配置文件中
server:
  jsp-servlet:
    init-parameters:
      development: true #開啓jsp的熱部署配置

十.springboot 集成 FastJSON

  1. 引入依賴
<dependency>
     	 <groupId>com.alibaba</groupId>
     	 <artifactId>fastjson</artifactId>
     	 <version>1.2.49</version>
    </dependency>
  1. 在入口類中加入配置
//FastJson配置
   	 @Bean   //@Bean 將配置的東西做爲bean對象,交給工廠處理
   	 public HttpMessageConverters fastjsonHttpMessageConverter(){
        //定義一個轉換消息的對象
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();

        //添加fastjson的配置信息 好比 :是否要格式化返回的json數據
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);

        //在轉換器中添加配置信息
        fastConverter.setFastJsonConfig(fastJsonConfig);
        HttpMessageConverter<?> converter = fastConverter;
        return new HttpMessageConverters(converter);
    }
  1. FastJson也能夠利用 WebMvcConfigurerAdapter(非入口類方法)
相關文章
相關標籤/搜索