<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      若依升級spring boot3過程

      一、為何要升級到spring boot3?

      因為新發布的spring boot3本身就支持spring native了,意味著可以用更小的內存和更快的啟動速度,而更小的內存意味著服務器可以運行更多的項目,節約成本。所以第一步,先升級到spring boot3,不要再用之前舊的低于spring boot3版本的方式去實現spring native了。本文以若依前后端分離單體版為演示版本。

      二、升級步驟

      1、安裝jdk17
      低版本jdk不支持,必須至少采用jdk17

      https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe
      2、下載若依

      https://github.com/yangzongzhuan/RuoYi-Vue-fast

      3、導入項目,修改jdk
      idea需用2022.2或更高版本

      先修改pom文件spring boot版本,改為3.0.2

      然后再導入

      最后修改jdk版本,怎么修改jdk就不贅述了

      4、javaee轉jakara

      使用idea自帶的轉換功能

       

       

      5、再次修改pom

      這時候會有一些報錯,需要修改pom

       fork配置注釋掉

      <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <configuration>
             <!-- <fork>true</fork>  如果沒有該配置,devtools不會生效 -->
          </configuration>
      </plugin>

      缺失javax.xml.bing,則添加依賴

      <dependency>
          <groupId>javax.xml.bind</groupId>
          <artifactId>jaxb-api</artifactId>
          <version>2.3.0</version>
      </dependency>

      6、spring boot3對應的spring security6,需采用新的配置方式,

      SecurityConfig.java文件改為以下,且路徑通配符**需改為*

      package com.ruoyi.framework.config;
      
      import com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter;
      import com.ruoyi.framework.security.handle.AuthenticationEntryPointImpl;
      import com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      import org.springframework.http.HttpMethod;
      import org.springframework.security.authentication.AuthenticationManager;
      import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
      import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
      import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
      import org.springframework.security.config.annotation.web.builders.HttpSecurity;
      import org.springframework.security.config.http.SessionCreationPolicy;
      import org.springframework.security.core.userdetails.UserDetailsService;
      import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
      import org.springframework.security.web.SecurityFilterChain;
      import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
      import org.springframework.security.web.authentication.logout.LogoutFilter;
      import org.springframework.web.filter.CorsFilter;
      
      /**
       * spring security配置
       *
       * @author ruoyi
       */
      @EnableMethodSecurity(securedEnabled = true, jsr250Enabled = true)
      @Configuration
      public class SecurityConfig
      {
          /**
           * 自定義用戶認證邏輯
           */
          @Autowired
          private UserDetailsService userDetailsService;
      
          /**
           * 認證失敗處理類
           */
          @Autowired
          private AuthenticationEntryPointImpl unauthorizedHandler;
      
          /**
           * 退出處理類
           */
          @Autowired
          private LogoutSuccessHandlerImpl logoutSuccessHandler;
      
          /**
           * token認證過濾器
           */
          @Autowired
          private JwtAuthenticationTokenFilter authenticationTokenFilter;
      
          /**
           * 跨域過濾器
           */
          @Autowired
          private CorsFilter corsFilter;
      
          @Bean
          public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception {
              return authenticationConfiguration.getAuthenticationManager();
          }
      
      
          @Bean
          public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {
      
              httpSecurity
                      // CSRF禁用,因為不使用session
                      .csrf().disable()
                      // 禁用HTTP響應標頭
                      .headers().cacheControl().disable().and()
                      // 認證失敗處理類
                      .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and()
                      // 基于token,所以不需要session
                      .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
                      // 過濾請求
                      .authorizeRequests()
                      // 對于登錄login 注冊register 驗證碼captchaImage 允許匿名訪問
                      .requestMatchers("/login", "/register", "/captchaImage").permitAll()
                      // 靜態資源,可匿名訪問
                      .requestMatchers(HttpMethod.GET, "/", "/*.html", "/*/*.html", "/*/*.css", "/*/*.js", "/profile/*").permitAll()
                      .requestMatchers("/swagger-ui.html", "/swagger-resources/*", "/webjars/*", "/*/api-docs", "/druid/*").permitAll()
                      // 除上面外的所有請求全部需要鑒權認證
                      .anyRequest().authenticated()
                      .and()
                      .headers().frameOptions().disable();
              // 添加Logout filter
              httpSecurity.logout().logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler);
              // 添加JWT filter
              httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
              // 添加CORS filter
              httpSecurity.addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class);
              httpSecurity.addFilterBefore(corsFilter, LogoutFilter.class);
      
              return httpSecurity.build();
          }
          /**
           * 強散列哈希加密實現
           */
          @Bean
          public BCryptPasswordEncoder bCryptPasswordEncoder()
          {
              return new BCryptPasswordEncoder();
          }
      
          /**
           * 身份認證接口
           */
          protected void configure(AuthenticationManagerBuilder auth) throws Exception
          {
              auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder());
          }
      }

      7、關閉com.alibaba.druid數據庫監聽功能

      這玩意有安全隱患,漏掃會報告,感覺用處不大,而且啟動也報錯誤,application-druid.yml相關配置改為false即可

      statViewServlet:
          enabled: false

      8、再次修改pom
      此時可嘗試啟動,若啟動失敗,報mybatis相關錯誤,則需要將mybatis-spring-boot-starter升級到最新版本,默認版本不支持spring boot3

      升級到

      <dependency>
                  <groupId>org.mybatis.spring.boot</groupId>
                  <artifactId>mybatis-spring-boot-starter</artifactId>
                  <version>3.0.1</version>
      </dependency>

      9、啟動

      沒有意外的話就沒有意外了,可以啟動成功,然后下載前端項目,運行訪問后臺。

      10、后續

      spring native打包啟動項目。

      11、項目地址

      https://github.com/srszzw/RuoYi-Vue-SpringBoot3

      posted @ 2023-02-20 23:58  鄭某  閱讀(6667)  評論(3)    收藏  舉報
      主站蜘蛛池模板: 日韩精品人妻黄色一级片| 粉嫩av一区二区三区蜜臀| 久久99精品久久久久久青青| 先锋影音男人av资源| 国产成人无码精品亚洲| 热久久美女精品天天吊色| 永清县| 最新中文字幕国产精品| 久久中文字幕无码一区二区| 国产迷姦播放在线观看| 亚洲一区二区av观看| 免费视频一区二区三区亚洲激情| 亚洲午夜香蕉久久精品| 亚洲综合伊人久久综合| 激情的视频一区二区三区| 亚洲国产成人资源在线| 无码天堂亚洲国产AV| 中文字幕亚洲人妻一区| 成av人电影在线观看| 天天爽天天摸天天碰| 崇礼县| √天堂中文www官网在线| 亚洲综合91社区精品福利| 亚洲成人av综合一区| 亚洲另类激情专区小说婷婷久| 天堂中文最新版在线官网在线 | 亚洲成a人片在线观看中| 人妻中出无码一区二区三区| 日韩精品一卡二卡三卡在线| 国产盗摄xxxx视频xxxx| 虎白女粉嫩尤物福利视频| 久国产精品韩国三级视频| 亚洲经典在线中文字幕| 狠狠色狠狠色综合日日不卡| 2021久久精品国产99国产精品| 日本中文一二区有码在线| 久久人妻精品国产| 乱妇乱女熟妇熟女网站| 亚洲人成网站在线无码| 中文字幕人妻少妇引诱隔壁| 我要看特黄特黄的亚洲黄片|