spring
文章平均质量分 52
Muroidea
但是我要前行
展开
-
一款多租户开发框架
是一个基于springboot的多租户的开发神器. 包含了多租户场景下业务封装和组件抽象。原创 2023-08-15 17:30:49 · 277 阅读 · 0 评论 -
Spring 6.x 的 AoT 相关支持的注解
Spring 6.x 与 Spring Boot 3.x 对AoT的支持的相关内容原创 2022-12-06 13:55:13 · 983 阅读 · 0 评论 -
使用javaagent替换nacos数据库MySQL到Postgresql
nacos替换MySQL为Postgresql原创 2022-12-03 21:39:18 · 651 阅读 · 0 评论 -
spring-kafka 自定义序列化方式
配置类 @Bean KafkaDefaultKafkaProducerFactoryCustomizer kafkaDefaultKafkaProducerFactoryCustomizer() { return new KafkaDefaultKafkaProducerFactoryCustomizer(objectMapper()); } @Bean KafkaDefaultKafkaConsumerFactoryCustomizer de原创 2022-01-14 10:49:44 · 551 阅读 · 0 评论 -
自定义swagger的basepath
自定义basePathnew Docket(DocumentationType.SWAGGER_2).pathProvider(new IPathProvider(pathProperties))自定义PathProviderpublic class IPathProvider implements PathProvider { private PathProperties pathProperties; public IPathProvider(PathPr原创 2021-12-19 15:14:26 · 2962 阅读 · 0 评论 -
SpringCloud 微服务客户端服务列表缓存优化. nacos2.0.2 与 spring-cloud-loadbalancer
获取所有服务列表com.alibaba.cloud.nacos.discovery.NacosDiscoveryClient#getServices发一个grpc请求获取服务列表根据serviceId获取服务列表com.alibaba.nacos.client.naming.NacosNamingService#selectInstances()com.alibaba.nacos.client.naming.cache.ServiceInfoHolder#getServiceInfocom原创 2021-08-10 15:29:20 · 1697 阅读 · 3 评论 -
K8s 作为 SpringCloud 微服务的开发环境
云原生下本地开发最近把公司微服务开发环境都迁移到k8s中. 之前部署在一台实体机上面. 记录下踩到的坑技术栈Nacos 2.0.2SpringCloud 2020.01问题nacos 2.0.2 使用grpc 需要暴露更多端口. 且需要tcp代理. ingress 解决不了问题.本地服务调用与开发环境通用服务之间服务调用的网络隔离问题.nacos 问题.使用 kubefwd 解决服务注册地址直接写 k8s 部署nacos的 service name, 再使用kubefwd将ser原创 2021-08-02 16:56:51 · 603 阅读 · 0 评论 -
多租户场景中seata的TCC模式优化
seata与多租户多租户模式为一个租户一个DataSource 隔离性比较好. 同时对业务拆分了微服务后就带来了分布式事务问题. 可以使用seata来解决这类问题.测试过程中对AT模式没有什么问题. 但是在TCC模式下commit/cache会丢失数据源的信息所以要在执行之前要切换当前租户.TCC模式下多数据源问题分析....原创 2021-05-18 22:30:38 · 500 阅读 · 2 评论 -
swagger 生产环境关闭的另一个方案
方案一使用开关.通过swagger的Docke的的api来关闭. 但是还是会将swagger的jar包打到生产的jar中.其入侵性依然存在.方案二将swagger配置抽取成一个springboot starter打包时根据参数控制是否将此starter在运行时打到生产的jar中.maven 的profile可以直接控制. 在gradle中我们可以这样做plugins { id 'org.springframework.boot'}def profile = System.get原创 2021-04-08 17:08:00 · 663 阅读 · 0 评论 -
优化SpringCloud本地开发方式
SpringCloud本地开发本地启动多个服务新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入本地启动多个服务你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器,原创 2021-03-13 09:49:19 · 669 阅读 · 0 评论 -
Rabbitmq 消息可靠性总结
Rabbitmq 消息可靠性rabbitmq Serverexchange 持久化queque 持久化message 持久化生产者消费者生产者publisher-confirms: true # 关于可靠性投递的配置.消息到达broker的exchangepublisher-returns: true # 关于可靠性投递的配置. 消息到达queue事务性事务机制可以保证消息一定到达服务器. 但是这种方式性能不高消费者acknowledge-mode: auto #原创 2020-05-11 16:50:12 · 202 阅读 · 0 评论 -
spring cloud feign 自动配置
自动配置org.springframework.cloud.openfeign.FeignAutoConfiguration注意@ConditionalOnMissingClass("com.netflix.loadbalancer.ILoadBalancer")成立时 的时候才会使用本类的 HttpClientFeignConfiguration 或 OkHttpFeignConfigur...原创 2019-11-16 21:18:30 · 1467 阅读 · 0 评论 -
cannot be resolved to absolute file path because it does not reside in the file system
使用maven分模块组件项目的时候,domain中的实体的*.hbm.xml文件不能被spring扫描到,因为聚合的时候核心包已经达成jar包了,所以要去jar中去找hbm.xml文件 clas原创 2016-03-03 17:08:06 · 16739 阅读 · 0 评论 -
Spring 中的Http请求工具
Spring 中的Http请求工具RestTemplate@Testpublic void restTemplateTest() { ResponseEntity<String> resp = new RestTemplate() .getForEntity(url, String.class); if (resp.getStatusCod...原创 2018-10-18 13:42:48 · 1703 阅读 · 0 评论 -
Rabbitmq 正則搜索
搜索两个队列的时候勾选上正则标志awp_msg|mine_msg 队列各个之间用|分割.排除含有特定字符串的队列^(?!.*qos).*$原创 2019-02-19 19:24:43 · 285 阅读 · 0 评论 -
spring对 rabbitmq client 的封装
消费模式Spring 的封装采用了 push 的方案 , 不同于 kafka 的pull 方案线程模型SimpleRabbitListenerContainerFactoryCachingConnectionFactory CachingConnectionFactory factory = new CachingConnectionFactory( ...原创 2019-04-12 15:50:08 · 791 阅读 · 0 评论 -
spring batch 源码debug记录
spring-batch-core-3.0.9.RELEASE-sources.jar!/org/springframework/batch/core/launch/support/SimpleJobLauncher.java:135spring-batch-core-3.0.9.RELEASE-sources.jar!/org/springframework/batch/core/jo...原创 2019-06-17 17:34:29 · 344 阅读 · 0 评论 -
spring boot 与 jasypt 结合实现关键配置项加密
添加依赖<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.1</version></de...原创 2019-07-18 20:32:23 · 1514 阅读 · 0 评论 -
druid 密码加密配置
使用druid 的spring boot starter 配置application.ymlspring: datasource: druid: url: jdbc:postgresql://127.0.0.1:5432/test username: test password: l7LrIhkDLct9BTd6eVVS3tsAwDYkwX4...原创 2019-07-17 11:33:09 · 1303 阅读 · 0 评论 -
spring boot rabbtimq rpc 模式
使用Spring Boot 与Rabbitmq 实现rpc 调用定义接口首先定义一个公用的接口public interface RemoteLoginInterface { SecurityUserDetails remoteLoginUser(String username);}Client 端配置 AmqpProxyFactoryBean 对象代理. 使用Sprin...原创 2019-08-13 14:13:10 · 293 阅读 · 0 评论 -
spring boot 打包成二进制可以直接执行的jar , 非java -jar 启动方式
spring 打包成jar后可以直接使用java -jar xxx.jar 直接启动.但是还想进一步简化,直接用./xxx.jar 可以注册成系统命令的方式改如何配置呢,其实很简单.pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0...原创 2018-09-22 08:11:35 · 1945 阅读 · 0 评论 -
nginx tomcat spring-boot 对json等数据压缩
如果后端返回给前端数据比较大的时候需要考虑开启数据压缩.针对nginx 和tomcat 或spring-boot都可以开启nginx配置文件修改gzip on;gzip_min_length 1k;gzip_comp_level 9;gzip_types application/json text/plain application/javascript applicatio...原创 2018-02-24 15:30:39 · 2800 阅读 · 0 评论 -
生产环境不启用swagger文档
生产环境需要关闭swaggerui启动判断写到配置文件中,根据条件判断是否加载@Configuration@EnableSwagger2public class SwaggerConfig { @Value("${swagger.show}") private boolean swaggerShow; @Bean public Docket createRestA原创 2018-02-22 14:33:35 · 6168 阅读 · 0 评论 -
使用restful请求https身份不通过, unable to find valid certification path to requested target,使用java生成签名证书
在用spring的RestOperations(顶层类),RestTemplate发送restful请求https(ssl)时候 身份验证失败因为我们是请求的https格式,服务器端是要求你有签名证书的 第一种解决方法,使用InstallCert.java文件生成/* * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.原创 2016-04-09 00:02:28 · 4100 阅读 · 1 评论 -
spring aop代理不了父类,会忽略从父类继承的方法。
简单的来说spring aop有两种方式,全接口方式使用的是jdk的动态代理,针对接口;而非接口方式使用的是cglib,这种方式类似jdk动态代理,在运行期间生成的代理对象是针对目标类扩展的子类。下面使用jdk的动态代理做的一个例子,这个能代理到父类,我觉的如果你的项目中有baseDaoimpl的构造方法有 ParameterizedType pt = (Parameteriz原创 2016-02-05 10:22:57 · 7875 阅读 · 0 评论 -
spring代理注解<aop:aspectj-autoproxy />
spring默认使用jdk的代理方式,使用jdk的代理方式我们知道,代理的类需要实现一个接口,若果没有就会报,java.lang.NoSuchMethodException: com.sun.proxy.$Proxy83.loginPage()异常,这时候我们可以使用让spring使用cglib的代理方式,cglib的时候需要有默认的构造方法,class不能为final的,原创 2016-02-04 11:30:05 · 9639 阅读 · 0 评论 -
spring的aop拦截action中的方法会报java.lang.NoSuchMethodException: $Proxy97.test()异常
知识点1: proxy-target-class 属性值决定bean是基于jdk的接口方式的还是基于类的代理(CGLIB)被创建。在ssh整合的项目中如果action继承了实现了别的接口的类,比如ActionSupport,ActionSupport实现了Action等接口,在用aop拦截action的时候如果不指定proxy-target-class="true"的话,Sprin转载 2016-02-04 10:20:00 · 1146 阅读 · 0 评论 -
关于spring aop代理不到父接口中的方法
可能你的项目是这样的架构:public interface BaseDaoT> {}public class BaseDaoImplT> implements BaseDaoT> {}public interface UserService extends BaseDao {}public class UserServiceImpl extends BaseDaoImp原创 2016-02-14 11:42:29 · 3343 阅读 · 0 评论 -
jsp页面中静态方法调用使用service的类,注入静态工具类使用service
在静态方法中需要使用到service的类,由于方法是静态的那service的也需要是service的解决方法@Componentpublic class ListIteration { @Resource ContractService contractService; public static ListIteration listIteration;原创 2016-01-05 16:22:10 · 3150 阅读 · 0 评论 -
spring的事务传播
在数据库中事务有四种隔离级别,spring为了解决事务的嵌套,提出了事务的传播机制,即在两个事务方法中,相调用的时候的解决方案,spring对事务的支持统一定义在TransactionDefinition 类中,该类有几个重要的接口int getPropagationBehavior():事务的传播行为int getIsolationLevel():事务的隔离级别原创 2016-01-20 17:24:58 · 315 阅读 · 0 评论 -
spring_boot 发布成war包 ,部署到外部的tomcat
由jar变成war<packaging>jar</packaging>如果是上面的打包方式,启动方式则为 mvn package java -jar target/mymodule-0.0.1-SNAPSHOT.jar改变成war<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.原创 2016-06-30 18:17:36 · 47279 阅读 · 4 评论 -
RestTemplate实践
什么是RestTemplate?RestTemplate是spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。 调用RestTemplate的默认构造函数,RestTemplate对象在底层通过使用Java.net包下的实现创建HTTP 请求,可以通过使用ClientHttpRequestFac原创 2016-07-25 11:29:47 · 3581 阅读 · 0 评论 -
spring与disruptor集成
disruptor不过多介绍了,描述下当前的业务场景,两个应用A,B,应用 A 向应用 B 传递数据 . 数据传送比较快,如果用http直接push数据然后入库,效率不高.有可能导致A应用比较大的压力. 使用mq 太重量级,所以选择了disruptor. 也可以使用ReactorBaseQueueHelper.java/** * lmax.disruptor 高效队列处理模板. 支持初始队列,即在原创 2018-02-20 18:18:12 · 5738 阅读 · 2 评论 -
spring 集成Reactor 异步框架 (java config)
spring 集成Reactor 异步框架加入依赖 <dependency> <groupId>org.projectreactor</groupId> <artifactId>reactor-core</artifactId> <version>1.0.0.RELEASE...原创 2018-02-07 22:27:27 · 1701 阅读 · 0 评论 -
spring-batch 基于java config 配置方式
spring batch是一个数据批处理框架,应用场景有很多比如,数据迁移,大量数据处理,它可以支持处理过程中的监控等,可以把一个复杂的任务进行拆解,然后很方便的处理数据.处理状态和参数都可以存储到数据库中文档: https://docs.spring.io/spring-batch/trunk/reference/html/index.html本文主要使用java config 的方式来配置原创 2018-02-07 22:06:41 · 5674 阅读 · 2 评论 -
实现spring mvc 的java config 加载不同配置文件
需要配置一个spring 启动时的事件监听器.SpringRootAppInitListener.java配置类 /** * spring 根容器启动时的监听事件 * * @return ApplicationContextInitializer<?>[] */ @Override protected ApplicationContext原创 2018-01-13 19:20:43 · 1809 阅读 · 0 评论 -
spring aop 拦截例子
java config@EnableAspectJAutoProxypublic class GlobalConfig {}接下来就可以使用了@Aspect@Componentpublic class AppLogAspect { //Controller层切点 @Pointcut("execution (public * com.xxxx.*Controller.*(..))"原创 2017-11-29 17:14:09 · 234 阅读 · 0 评论 -
使用mybatis拦截器做分表,mybatis与postgres josnb 数据类型映射
使用mybatis做分表很方便,即使用拦截器即可。分表步骤如下使用注解做分表标示抽取分表接口 自定义分表策略实现分表接口编写拦截器使用jsqlparser 安全替换表名mybatis和postgres jsonb 类型映射步骤 编写JSONTypeHandler转换器注册到全局Aliase注册到TypeHandlers 实体json串使用Object 对象mapper.xml文原创 2017-03-23 22:59:41 · 3304 阅读 · 2 评论 -
spring data jpa hibernate 映射 postgres jsonb
spring boot jpa 映射postgres 的jsonb 类型使用 jpa-hibernate 处理postgres 的jsonb类型首先需要自定一个Dialect,然后注册到hibernate框架中自定义一个Type用于java和数据库之间的mapping在jsonb的字段上使用自定义的类型进行映射具体的步骤CustomPostgreSqlDialect.javapublic原创 2017-03-17 21:43:30 · 5863 阅读 · 1 评论 -
spring集成netty实现rabbitmq的rpc通信
使用rabbitmq更多的是为了解耦,而有时候为了确保消息的落地我们需要在接收方处理完消息后,发送ack给发送方,以下使用spring-boot集成rabbitmq,netty来做这一点如果你使用这种方式发送到接收方//超时时间rabbitTemplate.setReplyTimeout(20000);final String resultMessages = (String) rabbitTe原创 2016-08-20 14:13:57 · 5610 阅读 · 0 评论