构建springcloud踩坑总结

技能总结
搭建时,多module的,父模块pom加<modules>,子模块加<parent>,设置成父级的相关属性,但是要删除里边的<relativePath/>,因为它表示到网上去找,这里父级在本目录,不能加<relativePath>.
pom的tomcat的作用域,也要删除,因为默认的是运行时去除,导致找不到Filter类
配置zuul时,serrviceId就是client里边的spring.application.name,如果写错,会报
Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: eureka-client
zuul可以用来转发到老项目,比如这种配置:
#这里的配置表示,访问/it/** 直接重定向到http://www.ityouknow.com/**
zuul.routes.ityouknow.path: /it/**
zuul.routes.ityouknow.url: http://www.ityouknow.com/	
为了不开端口就可以访问某个端口,可以用这种方式进行转发,例如
             url: http://localhost:8761/
编译
mvn compile
运行 
nohup java -jar xxx.jar
解包
jar -xf 
压包
jar -cfm0
rm -f parkingattachmentclient.jar ;jar -cfm0 parkingattachmentclient.jar META-INF/MANIFEST.MF  BOOT-INF/ META-INF/ org;nohup java -jar parkingattachmentclient.jar 
JPA用法
//    @Modifying 查询的时候不用加,别的时候都要加
@Query 默认的用的不是原生的
//    nativeQuery = true 使用原生的就要加上这个
参数 ?1,?2 数字表示,第几个参数
@Entity实体内里边的表名需要注意的就是 如果蛇形表名名称里面含有单个字母的单词,转换成驼峰就会出错,需要加上这个@Table参数指明表名,尚未找到其他的更好的办法
继承JpaRepository注意greaterThan不包含等于
@Entity实体内不用持久化的属性加@Transient
@Version表示乐观锁
后台运行nohup java -jar 文件名.jar 这时候会产生一个日志文件nohup.out,不过,由于不能自动分割,所以需要在日志框架中配置分割
logback配置分割集散,appender,rollingPolicy类分别是RollingFileAppender,SizeAndTimeBasedRollingPolicy
运行外部配置命令 ——nohup java -jar xx.jar --spring.config.location=路径(application.yml)
驼峰与蛇形转换错误,问题比较严重,解决办法为:
JPA自带的数据库映射,遇到两个大写字母相连的时候无法正确映射,以及表名是大写的时候,无法进行映射的问题,这个问题导致所有的查询都无法查询到正确的数据,要手动定义命名策略来规定大小写及蛇形转换
    private String myCamelToUperSnacke(String s){
//        连续两个大写,把前一个转成大写小写
//        tableName.replace()
        if(!s.matches(".*[A-Z][a-z].*"))//为了防止@Table(..)已经手动转换过的在此转换,加入驼峰式限制 bug TX类不能变成T_X表
            return s.toUpperCase();
        StringBuilder sb=new StringBuilder(s);
        int n=0;
        for (int i = 0; i < s.length(); i++) {
            char c=s.charAt(i);
            if(c>='A'&&c<='Z')
                sb.insert(i+n++,'_');
        }
//        byte[] resp = new byte[666];int x=88;new String(resp,0,x,"utf8");
        if (sb.charAt(0)=='_')
            sb.deleteCharAt(0);
//        sb.re
        return  sb.toString().replaceAll("__","_").toUpperCase();
    }
异常处理时,后台项目可以设置404等页面也返回json,如下
//    #没有绑定的url直接抛出错误
//    spring.mvc.throw-exception-if-no-handler-found=true
//            #不为静态文件建立映射
//    spring.resources.add-mappings=false
    @ExceptionHandler(NoHandlerFoundException.class)
    public Object pageExceptionHandler(Exception exception)
SpringBoot引用Eureka导致返回结果由json变为xml解决方案
集成了EurekaServer,又需要jackson-dataformat-xml这个依赖,解决方案是在请求的Mapping上加上produces = { “application/json;charset=UTF-8” } 
不过这个问题其实也不用处理,因为通过阿加克斯调用的时候,返回的又自动变回了json格式,他是根据请求头判断的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值