查看项目源码
- SSM 版: https://github.com/OYCodeSite/SCW-SMM
- SpringBoot 版: https://github.com/OYCodeSite/SCW-SpringBoot
一、页面不删除原有属性,重复加载
权限维护模块
解决方式:
原:
改:
二、后台无法保存获取 ID 值
问题描述:
权限维护模块从前台获取数据后传输到后台后,在逻辑处理时把获取的参数值,过滤掉 id。导致项目出现修改错误。
修改前:
修改后:
解决方式:
修改为:
三、整合 SpringSecurity
spring security 的使用时报错如下 An internal error occurred while trying to authenticate the user A granted authority textual representation is required
使用角色来控制权限的时候不仅仅 需要
代码语言:javascript复制for (TRole role:roleList) {
authorities.add(new SimpleGrantedAuthority("ROLE_" role.getName()));
}
在前面加上 ROLE_的固定格式,还要注意数据库查询出来的值不能为空!,数据中含有空值都不可以
由于我是用数据库中的表来实验
这是改之后的表
SpringSecurity 配置中的一些问题 登录页面不跳转
原:
修改:
四、Eureka 注册中心
报错:Request execution error. endpoint=DefaultEndpoint{ serviceUrl=’http://localhost:8761/eureka/}
- eureka 会自动注册自己,必须设置下面属性 在配置文件中设置以下属性
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
- Hystrix 的 fallback 降级机制 需要在配置的 fallback 方法上配置 @Component 注解,否则无法启动
六 、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 对象无法存储
七、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 对象无法存储
八、SpringBoot:错误 Missing URI template variable ‘userId’ for method parameter of type String
报错:Missing URI template variable ‘retrunId’ for method parameter of type Integer
九、支付宝支付报错
报错:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
解决方法:
先检查以下的注解是否存在
代码语言:javascript复制@controller层没有加@ResponseBody
@Service层实现类未添加注解@Autowired
@RestController使用成了@Controller
总结来说
就是 springboot 注解要正确使用,以及前后台的数据格式要一致。
十、项目部署(失败)
整个项目在 windows 测试已经成功部署,打包到 Linux 去测试时,一直无法调用远程服务。 因为项目采用的分布式,需要多台服务器部署,自己本人只有一台阿里服务器,无法达到部署效果。 采用 Linux 本地多台虚拟机部署,程序跑起来没有问题,但是 Eureka 无法调用 Fegin 远程服务,原因在于我本地的 IP 都是局域网,所以测试部署就只能放弃了。 若要成功部署此项目需要有云服务器公网 IP
以下是启动项目的命令,虽然因为没有足够的云服务器,项目无法在 Linux 测试,也在此记录一下。方便以后查看
- 192.168.64.129 注册中心
nohup java -jar scw-register-0.0.1-SNAPSHOT.jar
> ./scw-register.log &
- 192.168.64.130 SCW-USER:7000 用户服务
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 项目服务
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 订单服务
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 项目
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 失败了,这个项目也留下了一点点小小的遗憾,以后等有机会在来测试部署。。。