查看项目源码

一、页面不删除原有属性,重复加载

​ 权限维护模块

image-20210131002903407

解决方式:

原:

image-20210131003230871

改:

image-20210131003318858

二、后台无法保存获取 ID 值

问题描述: 权限维护模块从前台获取数据后传输到后台后,在逻辑处理时把获取的参数值,过滤掉 id。导致项目出现修改错误。

修改前:

image-20210131151302171

修改后:

image-20210131151403773

解决方式:

image-20210131151443387

修改为:

image-20210131151548139

三、整合 SpringSecurity

spring security 的使用时报错如下 An internal error occurred while trying to authenticate the user A granted authority textual representation is required

使用角色来控制权限的时候不仅仅
需要

1
2
3
for (TRole role:roleList) {
authorities.add(new SimpleGrantedAuthority("ROLE_"+role.getName()));
}

在前面加上 ROLE_的固定格式,还要注意数据库查询出来的值不能为空!,数据中含有空值都不可以

由于我是用数据库中的表来实验

image-20210206013534059

这是改之后的表

image-20210206013554845

SpringSecurity 配置中的一些问题 登录页面不跳转

原:

image-20210206013706990

修改:

image-20210206013729575

四、Eureka 注册中心

报错:Request execution error. endpoint=DefaultEndpoint{ serviceUrl=’http://localhost:8761/eureka/}

  • eureka 会自动注册自己,必须设置下面属性 在配置文件中设置以下属性
1
2
3
eureka.client.register-with-eureka=false

eureka.client.fetch-registry=false
  • 必须先去注册中心,在启动用户者

五、Fegin 远程无法调用

报错:FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException

  • @RequestParam(required = false) String XXCode

    这个参数少了个 value = “XXCode”, 这个是 Spring 4.0 版本后,@RequestParam 注解对参数传值有了很好的封装特性并严格校验。

    改为:@RequestParam(value = “XXCode”, required = false) String XXCode

image-20210217001037788

  • Hystrix 的 fallback 降级机制

    需要在配置的 fallback 方法上配置 @Component 注解,否则无法启动

image-20210217001313108

六 、SpringSession 存储到 Redis 中

报错: Exception Processing ErrorPage[errorCode=0, location=/error]

​ 如果是在登录状态下,退出时没有删除存储在 redis 中的 Session, 再次启动服务器,访问页面,则会报 500 错误,只需要在 redis 中把存储的 redis 数据删除后,重启服务器,就可以正常访问页面了。

七、ProjectInfoController 报错无法获取 t_project 数据

报错:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause

java.lang.NullPointerException: null

解决方式:

​ 原因: 在 ProjectVo 中缺少给属性实例化,导致在获取数据之后无法 VO 对象无法存储

image-20210217172541693

七、ProjectInfoController 报错无法获取 t_project 数据

报错:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause

java.lang.NullPointerException: null

解决方式:

​ 原因: 在 ProjectVo 中缺少给属性实例化,导致在获取数据之后无法 VO 对象无法存储

image-20210217172541693

八、SpringBoot:错误 Missing URI template variable ‘userId’ for method parameter of type String

报错:Missing URI template variable ‘retrunId’ for method parameter of type Integer

image-20210218233941012

九、支付宝支付报错

报错:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause

image-20210220172946001

解决方法:

先检查以下的注解是否存在

1
2
3
4
5
@controller层没有加@ResponseBody

@Service层实现类未添加注解@Autowired

@RestController使用成了@Controller

总结来说 就是 springboot 注解要正确使用,以及前后台的数据格式要一致。

image-20210220174446349

image-20210220174502582

十、项目部署(失败)

整个项目在 windows 测试已经成功部署,打包到 Linux 去测试时,一直无法调用远程服务。

因为项目采用的分布式,需要多台服务器部署,自己本人只有一台阿里服务器,无法达到部署效果。

采用 Linux 本地多台虚拟机部署,程序跑起来没有问题,但是 Eureka 无法调用 Fegin 远程服务,原因在于我本地的 IP 都是局域网,所以测试部署就只能放弃了。

若要成功部署此项目需要有云服务器公网 IP

以下是启动项目的命令,虽然因为没有足够的云服务器,项目无法在 Linux 测试,也在此记录一下。方便以后查看

  • 192.168.64.129 注册中心
1
2
nohup java -jar scw-register-0.0.1-SNAPSHOT.jar \
> ./scw-register.log &
  • 192.168.64.130 SCW-USER:7000 用户服务
1
2
3
4
5
nohup java -jar scw-user-0.0.1-SNAPSHOT.jar \
--spring.profiles.active=prod \
--eureka.instance.ipAddress=192.168.64.129 \
--server.port=7000 \
> ./scw-user.log &
  • 192.168.64.132:8000 SCW-PROJECT 项目服务
1
2
3
4
nohup java -jar scw-project-0.0.1-SNAPSHOT.jar \
--spring.profiles.active=prod \
--server.port=8000 \
--eureka.instance.ipAddress=192.168.64.129 > ./scw-project.log &
  • 192.168.64.133:9000 SCW-ORER 订单服务
1
2
3
4
nohup java -jar scw-order-0.0.1-SNAPSHOT.jar \
--spring.profiles.active=prod \
--eureka.instance.ipAddress=192.168.64.129 \
--spring.datasource.url=jdbc:mysql://192.168.64.131:3306/SCWFunding?useSSL=false >./scw-order.log &
  • 192.168.64.131:10000 SCW-WEBUI Web 项目
1
2
3
4
5
nohup java -jar scw-webui-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod \
--eureka.instance.ipAddress=192.168.64.129 \
--alipay.notify_url=http://boysurf.cn/order/payAsync \
--alipay.return_url=http://boysurf.cn/order/pay/success \
--jdbc:mysql:192.168.64.131:3306/SCWFunding?useSSL=false > ./scw-webui.log &

十一、总结

​ 众筹项目到终于写完了,经历 20 多天的代码编写,期间出现了许多的 Bug,很多 Bug 都是因为自己的粗心,都是一些细微的小错误,要么方法调用错误,在方法上少注解,配置漏写。众筹项目很适合新手练习都是使用的一些基本的技术体系,很适合巩固自己的学的知识点,在这个项目中可以灵活使用自己的 SMM、SpringBoot、SpringCloud 等技术,虽然涉及的技术面不是特别广,但是练手足够了。

​ 最后了,虽然在 windows 平台这边跑成功了,但是 Linux 失败了,这个项目也留下了一点点小小的遗憾,以后等有机会在来测试部署。。。