1、使用云原生应用脚手架创建pom.xml文件
这样做的好处是可以使用关联的版本

按照里面的提示进行选择用到的组件即可。选择完成获取代码,下载到本地。
2、使用idea 打开刚才的代码进行安装,等待下载完成即可

3、配置idea 项目java版本

选择刚才生成pom.xml对应的版本,这样的作用是在项目新建module 的时候不会报错

4、新建module

选择对应版本

填写相关信息

创建完成

后面就可以进行对应的业务代码编写了。
5、运行/调试
打开对应的 Application 文件进行调试
6、编译/打包

遇到的问题记录
1、由于是共用了nacos,通过不同的命名空间来区分。在nacos配置的时候,自动生成了命名空间的ID,但在springboot的配置中直接写了命名空间的名字,导致读取不到nacos里面写的配置。
处理:找到对应命名空间的ID,在springboot配置。


2、mybatis数据库连接不上,提示datasource url 未配置
这个问题是由于错误引入mybatis包导致的。在springboot3+,mybatis 和 多源数据连接配置 dynamic 都有变动。
原来2的 mybatis-plus-spring-boot-starter 对应 3的 mybatis-plus-spring-boot3-starter
原来 dynamic-datasource-spring-boot-starter 对应3的 dynamic-datasource-spring-boot3-starter
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-spring-boot3-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
<version>4.2.0</version>
</dependency>
3、security 配置
springboot3+的版本已弃用 WebSecurityConfigurerAdapter,所以新的过滤方式 SecurityFilterChain
package tech.kunyuan.authorization.config;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;
/**
* Description:
*
* @Author: ky
* DateTime: 2024-03-08 21:48
*/
@Slf4j
@Configuration
@EnableWebSecurity
@EnableMethodSecurity
public class WebSecurityConfig {
/*
* 配置权限相关的配置
* 安全框架本质上是一堆的过滤器,称之为过滤器链,每一个过滤器链的功能都不同
* 设置一些链接不要拦截
* */
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception {
log.info("SecurityFilterChain>>>>");
// 关闭csrf
httpSecurity.csrf(it->it.disable());
httpSecurity.authorizeHttpRequests(it->
it.requestMatchers("/**").permitAll() //设置登录路径所有人都可以访问
.anyRequest().authenticated() //其他路径都要进行拦截
);
return httpSecurity.build();
}
}
4、打包不成功,只有几十k,提示no main manifest attribute
通过配置以下打包代码解决
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>