Springboot的簡單配置(IntelliJ)

1. 搭建SpringBoot

  1. 創建一個新項目,選擇Spring-boot 官方模板
    在這裏插入圖片描述

  2. 填寫項目信息
    ![在這裏插入圖片描述](https://img-blog.csdnimg.cn/2020042513484955.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3J4bDIwMTc=,size_16,color_FFFFFF,t_70

  3. 選擇插件,依賴,這裏我們選擇以下插件和依賴
    後面就是,選擇項目地址了,這裏就不再多囉嗦
    建好之後,我們的項目結構是這樣的
    在這裏插入圖片描述
    接下來讓我們調整一下,更接近真實項目中的結構

2. 項目結構調整

  1. 首先,我們將後端代碼結構調整爲這樣
    在這裏插入圖片描述
    | 包名|說明 |
    |–|--|
    |annotation|放置項目自定義註解|
    |aspect|放置切面代碼|
    |config|放置配置類|
    |constant|放置常量、枚舉等定義|
    |consist|存放常量定義|
    |enums|存放枚舉定義|
    |controller|放置控制器代碼|
    |filter|放置一些過濾、攔截相關的代碼|
    |mapper|放置數據訪問層代碼接口|
    |model|放置數據模型代碼|
    |entity|放置數據庫實體對象定義|
    |dto|存放數據傳輸對象定義|
    |vo|存放顯示層對象定義|
    |service|放置具體的業務邏輯代碼(接口和實現分離)|
    |serviceIntf|存放業務邏輯接口定義|
    |serviceImpl|存放業務邏輯實際實現|
    |utils|放置工具類和輔助代碼|
  2. 然後將前端代碼結構調整爲這樣
    在這裏插入圖片描述
名稱 說明
mapper 存放mybatis的XML映射文件(如果是mybatis項目
static 存放網頁靜態資源
js 顧名思義
css 顧名思義
img 顧名思義
template 存放網頁模板,比如thymeleaf/freemarker模板等
header 頁面頭部
model 業務頁面
default 存放默認頁面,歡迎頁或者錯誤定向頁面
bottom 頁面尾部
application.yml 基本配置文件
application-dev.yml 開發環境配置文件
application-test.yml 測試環境配置文件
application-prod.yml 生產環境配置文件

3. 編寫項目配置文件

      之前一共引用了mybatis,redis以及thymeleaf模板引擎需要配置yml以及class文件再使用

  1. 多profile切換
          我們在開發應用時,通常一個項目會被部署到不同的環境中,比如:開發、測試、生產等。其中每個環 境的數據庫地址、服務器端口等等配置都會不同,對於多環境的配置,大部分構建工具或是框架解決的 基本思路是一致的,通過配置多份不同環境的配置文件,再通過打包命令指定需要打包的內容之後進行 區分打包

application.yml

spring:
  profiles:
    active: dev
server:
  servlet:
    context-path: /demo

application-dev.yml

spring:
  profiles: dev
server:
  port: 8082

配置好後,啓動主類就是端口就是8082,而系統路徑爲/demo,不過現在啓動會報沒有配置數據層的錯誤,現在讓我們正式開始配置

  1. 配置mybatis

首先,我們需要先引入驅動,mysql的版本有很多,那麼這次我用oracle進行演示,首先引入oracle驅動,這個驅動不在mvn庫裏,只能從官網下下來再install到自己的本地庫中

        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.1.0</version>
        </dependency>

再在我們需要使用的yml中配置連接信息,以及文件配置
application-dev.yml

spring:
  profiles: dev
  datasource:
    url: jdbc:oracle:thin:@172.16.23.189:8086:orcl
    username: ZHGBSYS
    password: ZHGBSYS
    driverClassName: oracle.jdbc.driver.OracleDriver
mybatis:
  configuration:
    map-underscore-to-camel-case: true//駝峯命名
  mapper-locations: classpath:/mapper/*.xml
server:
  port: 8082

配置自己實體類和mapper文件
在這裏插入圖片描述
在這裏插入圖片描述
這裏需要提醒一點,上面的截圖是錯的,mapper方法不能重載,方法ID必須唯一,不然mybatis不能創建代理對象
在這裏插入圖片描述
最後在啓動主類中追加,對mapper的掃描
在這裏插入圖片描述
現在讓我們測試一下
先寫一個service,方便測試
在這裏插入圖片描述
在這裏插入圖片描述
啓動主類添加service層掃描
在這裏插入圖片描述
現在在測試類中編寫方法測試
在這裏插入圖片描述
測試結果:
在這裏插入圖片描述
mybatis集成完畢
2. 配置redis

  1. 配置url信息
    application.yml
spring:
  profiles:
    active: dev
server:
  servlet:
    context-path: /demo
mybatis:
  configuration:
    map-underscore-to-camel-case: true #開啓駝峯命名
  mapper-locations: classpath:/mapper/*.xml
  1. 配置 redisTemplete 默認序列化對象
package com.rxl.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import org.springframework.data.redis.connection.RedisConnectionFactory;

import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<Object, Object> template = new RedisTemplate<>();
        //設置自己的序列化工具
        //Jackson2JsonRedisSerializer<Object>(Object.class)帶雙引號
        //new StringRedisSerializer() 不帶雙引號
        template.setDefaultSerializer(new StringRedisSerializer());
        //template.setKeySerializer(new StringRedisSerializer());
        //template.setValueSerializer(new Jackson2JsonRedisSerializer<Object>(Object.class));
        template.setConnectionFactory(redisConnectionFactory);

        return template;
    }
}

在這裏插入圖片描述

  1. 編寫工具類
    添加com.alibaba.fastjson 依賴
 <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.68</version>
        </dependency>
package com.rxl.utils;

import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.alibaba.fastjson.TypeReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.util.List;

@Component
public class RedisUtil {
    @Autowired
    private RedisTemplate<Object, Object> redisTemplate;

/**
  * @description 向Redis中存入實體類對象
  * @param Key 鍵值
  * @param value 實體類
  * @return void
  * @throws JsonProcessingException json轉換異常
  * @author rxl
  * @date 2020/4/27 16:02
 */
    public void setInRedis(String Key, Object value) throws JsonProcessingException {
        if(value==null)
            return;
        redisTemplate.opsForValue().set(Key,JSON.toJSONString(value));
    }
/**
  * @description 從redis中取實體類對象
  * @param Key 鍵值
  * @param clazz 對象類型
  * @return T
  * @throws IOException 讀取異常
  * @author rxl
  * @date 2020/4/27 16:04
 */
    public <T> T getPojoFromRedis(String Key,Class<T> clazz) throws IOException {
        Object value = redisTemplate.opsForValue().get(Key);
        if (value==null)
            return null;
        return JSON.parseObject(value.toString(),clazz);
    }
/**
  * @description 從redis中取實體類對象的List集合
  * @param Key 鍵值
  * @param clazz 對象類型
  * @return java.util.List<T>
  * @throws IOException 讀取異常
  * @author rxl
  * @date 2020/4/27 16:05
 */
    public <T> List<T> getListFromRedis(String Key, Class<T> clazz) throws IOException {
        Object value = redisTemplate.opsForValue().get(Key);
        if (value==null)
            return null;
        TypeReference<List<T>> typeReference = new TypeReference<List<T>>(clazz) {};
        return JSON.parseObject(value.toString(),typeReference);
    }
}


在這裏插入圖片描述

  1. 編寫測試方法
    在這裏插入圖片描述

別忘了,在啓動主類中添加掃描
在這裏插入圖片描述
不然是不會將組件對象納入spring管理的
測試結果:
在這裏插入圖片描述
在這裏插入圖片描述

redis集成完畢

  1. 集成thymeleaf和webJars

pom.xml

 <!--前端依賴-->
            <!--thymeleaf模板引擎-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
            <!--webjars 前端資源管理-->
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>jquery</artifactId>
            <version>3.3.1-2</version>
        </dependency>

application.yml

spring:
  profiles:
    active: dev
  thymeleaf:
    prefix: classpath:/templates/
server:
  servlet:
    context-path: /demo
mybatis:
  configuration:
    map-underscore-to-camel-case: true #開啓駝峯命名
  mapper-locations: classpath:/mapper/*.xml

配置自定義變量或默認頁

package com.rxl.config;

import java.util.HashMap;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.thymeleaf.spring5.view.ThymeleafViewResolver;
@Configuration
public class ThymeleafConfig implements WebMvcConfigurer {
	@Resource
    private Environment env;//取yml中的值


/**
  * @description 設置Thymeleaf全局變量
  * @param viewResolver Thymeleaf視圖處理器
  * @return void
  * @author rxl
  * @date 2020/4/27 21:56
 */
    @Resource
    private void configureThymeleafStaticVars(ThymeleafViewResolver viewResolver) {
        if(viewResolver != null) {
            Map<String, Object> vars = new HashMap<String, Object>();
            vars.put("ctx", env.getProperty("server.servlet.context-path"));
            viewResolver.setStaticVariables(vars);
        }
        
    }

/**
  * @description 設置默認頁
  * @param registry 視圖註冊器
  * @return void
  * @author rxl
  * @date 2020/4/27 21:57
 */
     @Override
     public void addViewControllers(ViewControllerRegistry registry) {
             registry.addViewController("/index").setViewName("default/index");
     }

}

在這裏插入圖片描述
index.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:th="http://www.thymeleaf.org" lang="zh-cn">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript"
	th:src="@{/webjars/jquery/3.3.1-2/jquery.min.js}"></script>
</head>
<body>
<th:block th:inline="text">
    ctx: [(${ctx})]

</th:block>

<!--/*@thymesVar id="ctx" type="java.lang.String"*/-->
<a href="#" th:if="${ctx} != null" ><span th:text="全局變量獲取成功"></span></a>

</body>
<script type="text/javascript">
$(function () {
	var ctx = '[(${ctx})]';
    alert('jquery成功加載,且全局變量獲取成功'+ctx);
});	
</script>
</html>

在這裏插入圖片描述
試試運行結果
在這裏插入圖片描述
運行成功,集成完畢

4. 文檔整合

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.rxl.example</groupId>
    <artifactId>spring-boot_demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-boot_demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!--前端依賴-->
            <!--thymeleaf模板引擎-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
            <!--webjars 前端資源管理-->
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>jquery</artifactId>
            <version>3.3.1-2</version>
        </dependency>
        <!--控制層,web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--數據層依賴-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.1.0</version>
        </dependency>
        <!--工具插件-->
            <!--springboot熱加載插件-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
            <!--lombok管理插件-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
            <!--json處理工具-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.68</version>
        </dependency>
        <!--測試-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>

    </build>

</project>

源碼下載:
鏈接:https://pan.baidu.com/s/1zdN7FZ44mi8gAIrg7LKEmg
提取碼:rhy2

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