# hero_user **Repository Path**: ithanjunjun/hero_user ## Basic Information - **Project Name**: hero_user - **Description**: 侠客汇项目;封装自动加解密、线程池工具类、全局aop - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: hero_user-feature-5116-5 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-08-02 - **Last Updated**: 2024-10-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 8.参数校验 1. 在facade层使用herbinate注解进行参数校验,由GlobalHandlerAop拦截器进行织入,同时兼顾出入参日志打印、全局异常拦截的功能 2. 注解参数校验用法同官方用法 # 9.隐私数据加密存储 1. 用户注册手机号、联系手机号、店铺详细地址在库中加密存储 2. insert时加密;update时加密;query时对入参字段加密后再筛选,查询结果对字段进行解密 3. 在需要加解密操作的类上加注解@EncryptedTable,需要加解密的字段上加注解@EncryptedField,必须这两个注解同时加才会生效 4. 使用mybatis-plus interceptor实现,详见DecryptInterceptor,EncryptInterceptor 5. 值得一提的是,如果筛选字段是list类型,EncryptInterceptor无法生效,这个问题尚未解决,于是使用aop拦截service方法对入参字段进行加密,使用EncryptedMethod注解,详见ParamListFieldEncryptInterceptor;值得注意的是,加注解的方法粒度必须足够的小,方法中直接就是数据库操作,不要包含业务逻辑 # 10.线程池 1. 使用线程池使用AsyncUtil 2. 默认是全局的一个线程池"defaultExecutor",没有特殊要求的可以直接用 3. 有特殊要求的可以在config包下新定义一个线程池,使用AsyncUtil的时候指定beanName # 0.模板生成修改 1. 由于端口参数现在还不能传递进来所以需要手动修改一下 2. service模块下main/resources/conf/appConf.properties中端口号${scfPort}修改成sic平台分配的端口号 3. service模块下main/resources/scf-spring.xml中的端口号${scfPort} 4. service模块下test/resources/scf-spring-test.xml中的端口号${scfPort} # 1.项目结构 ``` |---contract //发布到私有仓库供其他项目依赖,包括接口类、接口参数、返回值等 | |---src | | |---|main | | |---java | | |---resources | |---pom.xml |---service //部署模块,提供服务的进程 | |---src | | |---main | | |---java | | |--resource //各种配置文件 | | |---assembly | | |---assembly.xml //打包配置,所有的zzjava应用都打成tar.gz包, tar.gz包里的文件遵守一定标准,请参考http://dashen.zhuanspirit.com/pages/viewpage.action?pageId=60856101 | |---pom.xml |---README.md ``` # 2.ide内启动 1. 启动com.zhuanzhuan.hero.user.Boot类 # 3.打包项目 1. 在service模块内 mvn clean package 2. service/target目录下有文hero_user.tar.gz 3. 打包后的tar.gz包内容如下 ``` hero_user.tar.gz |---conf | |---appConf.properties | |---appConf-test.properies | |---appConf-sandbox.properties | |---appConf-online.properties |---{rootArtifactId}.jar ``` # 4.部署项目 0. 在测试环境部署项目需要先注册成为调用方,再申请对wjx_zzjava_scf的调用关系,如果不想调用就注释掉相关代码: - 管理平台地址:https://test.srvmgr.zhuanspirit.com/ - 注册成为调用方:https://dashen.zhuanspirit.com/pages/viewpage.action?pageId=52306480 - 申请调用wjx_zzjava_scf:https://dashen.zhuanspirit.com/pages/viewpage.action?pageId=52306747 1. 将hero_user.tar.gz上传至服务器/opt/zzjava/service/hero_user/目录下 2. 执行命令tar xvf hero_user.tar.gz 3. 执行命令zzjava start hero_user启动服务 # 5.dev环境下的ServerFilter 1. StudentServiceImpl的filter为autoActive、notAutoActive、Logger 2. BadUsageStudentServiceImpl的filter为autoActive、notAutoActive、Logger 3. TeacherServiceImpl的filter为notAutoActive、Logger、teacher 4. 调用后可以观察filter中日志的打印情况,先调用的filter后返回,后调用的filter先返回 # 6.test环境下的ServerFilter 1. StudentServiceImpl的filter为autoActive、notAutoActive 2. BadUsageStudentServiceImpl的filter为autoActive、notAutoActive 3. TeacherServiceImpl的filter为notAutoActive, teacher # 7.scf-spring.xml 1. scf-spring.xml中的配置及@ServiceBehavior注解中的配置都可以用spring占位符表示 2. 在不同的application-${profile}.yaml文件中为spring占位符配置不同的value,就可以在不同的环境中拿到不一样的配置