自己學習整理的springboot demo小知識(包含corejava),git不斷更新

git地址:

https://github.com/huiyunfei/studyDemo

 

#這裏記錄restfuldemo搭建過程,只記錄大概過程步驟,具體代碼在git,可能會慢慢不斷更新。(搭建過程省略,編譯工具都可以一鍵生成的)

1:Transational事務配置記錄
1-1:主啓動文件添加@EnableTransactionManagement註解開啓事務
1-2:對應service的方法上添加@Transational註解(一般推薦在service.方法上)
事務不起作用記得檢查MySQL的引擎是否是innnoDB,方法是否public,異常是否是運行時異常or error。

2:多環境配置
添加application-xxx.yml配置文件,在主application.yml添加spring.profiles.active(這裏可以${}動態讀取開發工具的變量)
例如idea可以直接在啓動配置裏添加--DEPLOY=dev變量

3:集成mybatis
3-1:pom文件添加mybatis-spring-boot-starter依賴jar
3-2:啓動類添加@MapperScan("com.example.restdemo.mapper")//此處添加註解後dao接口無需再添加@mapper(該註解不需要xml文件可以直接方法上寫sql) @repository註解
3-3:#mybatis配置。通常,若mybatis配置信息較少,只是針對基本配置無需複雜配置,則只需在application.yml文件中配置即可,否則最好配置在 mybatis-config.xml中
    mybatis:
      typeAliasesPackage: com.example.restdemo.entity
      mapperLocations: classpath:mapper/*.xml
      #configLocation: classpath:/mybatis-config.xml
3-4:配置文件添加數據源配置
    spring:
      #數據源
      datasource:
        url: jdbc:mysql://localhost:3306/test??useUnicode=true&characterEncoding=UTF-8
        username: root
        password:
        driver-class-name: com.mysql.jdbc.Driver
 
 4:添加logback.xml日誌記錄
 添加依賴jar包
 <!-- lombok依賴-->
<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
</dependency>
<!--Slf4j 依賴-->
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>jcl-over-slf4j</artifactId>
</dependency>
<!-- logback 依賴 是slf4j的實現-->
<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-classic</artifactId>
</dependency>
使用類添加@Slf4j註解,idea添加lombok插件可以直接log.使用
 配置文件添加 #控制檯打印sql
     logging:
         level:
           com:
             example:
               restdemo:
                 mapper: DEBUG

5:配置德魯伊數據源
5-1:添加依賴
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.0.18</version>
</dependency>
5-2:配置文件添加參數
#數據源
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8
    username: root
    password:
    driverClassName: com.mysql.jdbc.Driver
  ###################以下爲druid增加的配置###########################
    type: com.alibaba.druid.pool.DruidDataSource
  # 下面爲連接池的補充設置,應用到上面所有數據源中
  # 初始化大小,最小,最大
    initialSize: 5
    minIdle: 5
    maxActive: 20
  # 配置獲取連接等待超時的時間
    maxWait: 60000
  # 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連接,單位是毫秒
    timeBetweenEvictionRunsMillis: 60000
  # 配置一個連接在池中最小生存的時間,單位是毫秒
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
  # 打開PSCache,並且指定每個連接上PSCache的大小
    poolPreparedStatements: true
    maxPoolPreparedStatementPerConnectionSize: 20
  # 配置監控統計攔截的filters,去掉後監控界面sql無法統計,'wall'用於防火牆
    filters: stat,wall
  # 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
  # 合併多個DruidDataSource的監控數據
  #spring.datasource.useGlobalDataSourceStat: true
  ###############以上爲配置druid添加的配置########################################
5-3:添加DruidDBConfig配置文件和DruidConfig配置文件

 

 

6:配置swagger
6-1:配置pom文件jar
<!-- swagger -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.6.1</version>
        </dependency>
        <!-- swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.6.1</version>
        </dependency>
6-2:
controller類、方法添加對應註解
備註:遇到一個問題到現在沒解決,就是自定義對象接收參數,按照其他教程都是在對象類上邊添加@ApiModel註解,然後參數使用@ApiModelProperty註解,
很奇怪,我只要一加ApiModel註解swagger上就一個參數也看不到,去掉就正常。匪夷所思。。。
json對象之前我們都手動轉爲封裝類就是爲了swagger,沒找到方便操作的自定義jsonobject和map接收參數的註解。後續有的話再補充
7:配置自定義過濾器
依賴於servlet容器,基於函數回調,主要用於對請求做預處理,判斷是否登陸,請求URL權限,過濾字符等,缺點是一個過濾器實例只能在容器初始化時調用一次。
7-1:直接在類上使用@Component @WebFilter註解使用,執行順序按文件名的首字母來
7-2:添加在configuration中使用bean註解(支持使用第三方過濾器)MyFilterConfig

8:配置自定義監聽器
依賴於servlet容器,Listeeshi是servlet規範中定義的一種特殊類。
用於監聽servletContext、HttpSession和servletRequest等域對象的創建和銷燬事件。
監聽域對象的屬性發生修改的事件。用於在事件發生前、發生後做一些必要的處理。一般是獲取在線人數等業務需求。
8-1:直接在類上使用@Component @WebListener註解使用。
8-2:添加在configuration中使用bean註解 

9:配置自定義攔截器
依賴於SpringMVC框架,基於java反射,缺點只能對controller請求進行攔截,屬於面向切面編程(AOP)的一種方法級別的運用,在調用方法前、方法後做操作
9-1:新建攔截器類implements HandlerInterceptor,並重寫三個方法
9-2:提供攔截器配置類extends WebMvcConfigurerAdapter

執行順序: 
request-->filterPre(進入過濾器,執行chain.doFilter之前)-->service(springmvc的doService方法)-->dispatcher(springmvc請求分發)
-->preHandle(進入攔截器,執行controller之前)-->controller-->postHandle(執行完controller,return view之前)
-->afterCompletion(return view之後,filter返回客戶端之前)-->filterAfter(服務端完全執行完,返回給客戶端之前)

10:添加mybatis一對多關係
10-1:可以不修改原始pojo,添加一那一方的關聯pojo,繼承原始pojo,添加關聯關係List<TestUser> testUsers;
10-2:mapper文件添加一那一方的collection標籤,column是多那一方表中保存一這一方的列名,javaType是ArrayList,ofType是多方的pojo,select是find多方By一方列名
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章