SpringCloud Alibaba 从0搭建项目

1、使用云原生应用脚手架创建pom.xml文件

这样做的好处是可以使用关联的版本

https://start.aliyun.com/

按照里面的提示进行选择用到的组件即可。选择完成获取代码,下载到本地。

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>
This entry was posted in 应用. Bookmark the permalink.