- 博客(56)
- 收藏
- 关注
原创 Drools规则引擎详解
Drools是一款基于Java的开源规则引擎,允许将业务逻辑从代码中分离,采用声明式规则表达。其核心架构包含规则库、工作内存、议程和执行引擎,支持DRL语言编写规则。文章详细介绍了Drools的集成方法、高级特性(如决策表、规则流和复杂事件处理)以及性能优化技巧。Drools适用于复杂业务规则系统、需要频繁修改规则或业务人员参与维护的场景,能有效提升系统灵活性和可维护性。通过Spring Boot集成和合理使用规则属性,可以构建高效的规则引擎解决方案。
2025-08-15 10:17:23
734
原创 Easy Rules 规则引擎详解
Easy Rules 是一个轻量级 Java 规则引擎,提供简单强大的业务规则定义执行方案。其核心包含规则(Rule)和规则引擎(RulesEngine)两个概念,支持注解、流式API和表达式语言三种规则定义方式。具备规则优先级、监听器、规则组和推理引擎等高级特性,相比Drools等更复杂的引擎,具有学习曲线低、性能高、依赖少的特点。最佳实践建议保持规则简单明确、合理设置优先级、避免循环并确保规则可维护性。适用于简单规则场景,能够满足基本的业务规则管理需求。
2025-08-15 10:03:54
676
原创 使用Jackson自定义序列化器解决BigDecimal科学计数法问题
摘要:本文介绍了使用Jackson自定义序列化器解决BigDecimal科学计数法问题的方案。通过创建BigDecimalSerializer类,重写serialize方法,强制启用WRITE_BIGDECIMAL_AS_PLAIN特性,确保BigDecimal以普通数字格式而非科学计数法输出。最后通过@JsonSerialize注解将自定义序列化器注册到实体类的BigDecimal字段上。该方法既能解决科学计数法问题,又能保持原始jsonGenerator状态不变。
2025-08-07 10:21:29
381
原创 传统 HTML 表单如何支持PUT DELETE 方法提交请求
在 Spring 应用中主要用于支持 HTML 表单提交时使用 PUT、DELETE 等 HTTP 方法。由于标准的 HTML<form>标签只支持 GET 和 POST 方法,因此如果想使用其他 HTTP 方法(如 PUT 或 DELETE),可以通过在表单中添加一个隐藏字段_method来指定想要使用的 HTTP 方法,并让处理这个请求。
2025-02-24 09:28:09
775
原创 如何在Servlet容器中使用HttpServletResponse?
是 Java Servlet API 中的一个接口,它代表了服务器对客户端的响应。通过对象,可以设置响应的状态码、发送数据到客户端(如 HTML 页面、文件等)、添加响应头信息等。下面是如何在 Servlet 容器中使用的一些基本操作示例。
2025-02-13 10:06:25
595
原创 如何在Java EE中使用标签库?
除了使用JSTL之外,还可以创建自己的标签库来封装特定功能。最后,在JSP页面中使用自定义标签。通过上述步骤,就可以在Java EE项目中成功使用标签库了。无论是利用现有的JSTL还是创建自己的自定义标签库,都能帮助提高JSP开发效率,使代码更加简洁和易于维护。
2025-02-12 11:03:50
826
原创 maven web项目如何定义filter
在 Maven Web 项目中定义一个 Servlet 过滤器(Filter),需要遵循 Java Servlet 规范,并利用 Maven 来管理项目结构和依赖。
2025-02-11 14:19:44
629
原创 maven项目如何部署构建输出(如 JAR、WAR 文件等)到远程仓库中
是 Maven 中用于配置项目分发管理的元素,对于希望将其构件发布到中央仓库、内部企业仓库或其他任何远程仓库的开发者或组织来说是非常重要的。通过配置,可以指定不同的仓库用于快照版本和发布版本。
2025-02-11 10:02:39
718
原创 如何对java 源码进行分析, 统计出每个方法被引用的次数
使用 JavaParser 统计源码中每个方法的引用次数是一个可行且有效的方法。JavaParser 是一个用于解析 Java 源代码并生成抽象语法树(AST)的库,它提供了丰富的 API 来遍历和操作 AST。下面是一个详细的指南,说明如何使用 JavaParser 来统计每个方法的引用次数。
2025-02-07 14:55:34
727
原创 maven如何分析指定jar包的依赖路径
在Maven项目中,分析指定JAR包的依赖路径是非常有用的,尤其是在解决依赖冲突时。Maven提供了一个命令行工具来帮助查看特定依赖的传递性依赖(即依赖路径)。
2025-02-07 14:53:59
983
原创 Spring AOP 中,常用来定义切入点的表达式
SpringAOP中,可以使用AspectJ的切入点表达式语言来定义切入点(Pointcut)。AspectJ提供了多种类型的表达式来精确地指定哪些连接点(JoinPoints)应该被拦截。@Secure这些表达式可以单独使用,也可以通过逻辑运算符组合起来创建更复杂的切入点定义。例如,可以使用&&||和!来构建复合表达式,以满足更加精细的匹配需求。
2025-01-20 15:12:07
406
原创 Java注解类中@Target每个配置项的含义
Target是Java中的一个元注解,用于指定自定义注解可以被应用的程序元素类型。通过@Target,可以限制注解只能应用于特定类型的声明上,比如类、方法或字段等。这样可以确保注解被正确使用,并且有助于编译器进行错误检查。@Target可以接受一个或多个。
2025-01-20 10:37:10
977
原创 Java注解类中@Retention每个配置项的含义
Retention是Java中的一个元注解,用于指定自定义注解的保留策略(即注解在什么阶段有效)。它决定了编译器如何处理这些注解以及它们是否会在编译后的.class文件中存在,甚至是在运行时通过反射机制可访问。
2025-01-20 10:10:50
481
原创 Java注解类中@Inherited如何使用, 以及应用场景
Inherited是Java中的一个元注解,用于指示自定义注解是否应该被子类继承。它主要用于类级别的注解,并且只适用于类的继承关系,而不适用于方法或字段。
2025-01-20 09:40:51
689
原创 SLF4J中MDC类的使用方法, 及使用场景
SLF4J (Simple Logging Facade for Java) 是一个用于日志记录的简单门面或抽象,它允许在运行时绑定不同的日志实现(如 Logback、Log4j 等)。MDC(Mapped Diagnostic Context,映射诊断上下文)是 SLF4J 提供的一种机制,它使得开发者可以在多线程环境中为每个线程关联额外的上下文信息,以便于日志记录。
2025-01-16 15:02:51
1566
原创 Apache MINA 使用简单Demo案例
Apache MINA (Multipurpose Infrastructure for Network Applications) 是一个网络应用程序框架,它帮助用户快速开发高性能和高扩展性的网络应用程序。MINA 提供了对TCP/IP, UDP/IP协议的支持,并且可以很容易地被扩展以支持其他的网络协议。下面提供一个简单的例子来说明如何使用 Apache MINA 创建客户端和服务端程序。请注意,由于这是一个简化的示例,因此不会包含所有的异常处理和最佳实践代码。
2025-01-14 14:18:25
995
原创 java8常用的函数式接口
Java 8 引入了包,其中包含了许多函数式接口,这些接口是为了解决常见的编程问题而设计的。函数式接口是指只有一个抽象方法的接口,它们可以与Lambda表达式结合使用,以实现更加简洁和可读的代码。
2025-01-09 12:12:54
820
原创 Spring框架中 @Order 注解的作用及使用场景
在Spring框架中,@Order注解用于指定带有特定功能的组件(如拦截器、切面等)的执行顺序。当多个组件需要在同一事件或操作上执行时,@Order注解可以帮助确定它们的优先级和执行次序。较低的值表示较高的优先级,即该组件将更早地被执行。@Order。
2025-01-06 15:44:32
869
原创 SpringBoot2 如何集成OpenAPI
在Spring Boot 2中集成OpenAPI(以前称为Swagger)以生成和维护RESTful API文档,最简单且推荐的方法是使用库。
2025-01-06 14:23:04
1409
原创 mvn dependency:get 命令如何使用
命令用于从远程仓库直接下载特定的依赖到本地 Maven 仓库,而不需要将该依赖添加到项目的pom.xml文件中。这对于测试、调试或确保本地仓库中有特定版本的依赖非常有用。
2025-01-02 13:51:06
1151
原创 如何配置Java应用程序的远程调试
配置Java应用程序的远程调试涉及几个步骤,包括在启动Java应用程序时设置特定的JVM参数,以及在IDE(如Eclipse、IntelliJ IDEA等)中配置远程调试连接。
2024-12-31 17:04:27
761
原创 spring中常见的自动注入方式
而对于可选依赖或后期绑定的场景,Setter注入可能是更好的选择。在Spring框架中,自动注入(Autowiring)是依赖注入(Dependency Injection, DI)的一种形式,它允许Spring容器自动解析并装配协作对象之间的依赖关系。这是推荐的做法,特别是对于必需的依赖项,因为它确保了对象创建时所有必需的依赖都已就绪。这种方式简洁但不推荐用于必需的依赖项,因为这会使单元测试更难,并且违反了面向对象编程中的封装原则。可以根据bean的名字来注入特定的bean实例,而不是依赖类型。
2024-12-31 15:30:48
1231
原创 Junit如何禁用指定测试类,及使用场景
在JUnit中禁用指定测试类可以通过多种方式实现,具体取决于使用的JUnit版本(JUnit 4 或 JUnit 5)。
2024-12-26 14:21:07
949
原创 spring如何开启bean覆盖, 及使用场景
在Spring框架中,默认情况下是不允许覆盖已注册的Bean定义的。也就是说,如果你尝试注册一个与现有Bean具有相同名称的新Bean,Spring容器会抛出异常(),以防止意外地覆盖现有的Bean定义。然而,在某些特定场景下,你可能确实需要覆盖已有的Bean定义。为了支持这种需求,Spring从5.3版本开始引入了对Bean覆盖的支持,并且可以通过配置来启用它。
2024-12-26 09:09:56
1342
原创 设置Spring Boot应用参数-Dspring.profiles.active=dev 与--sprinb.profiles.active=dev 两种写法有什么区别
如果你是在启动Tomcat或者其他容器的时候设置激活的profile,那么应该使用,因为它是一个JVM级别的参数,适用于整个JVM进程。如果你是直接启动一个独立的Spring Boot jar包,或者想要以一种更具体的方式为Spring Boot应用设置profile,那么可以使用。这两种方式都可以有效地设置活动的profile,选择哪种取决于你的部署环境和个人偏好。
2024-12-25 14:28:50
809
原创 Logback日志框架中的继承机制详解
在Logback框架中,logger的继承机制是基于层级结构(hierarchical context)工作的。每个logger都被分配一个名称,这个名称可以看作是一个路径或目录结构,从而形成了一个逻辑上的树状结构。这种结构使得日志记录具有很强的灵活性和可控性。
2024-12-24 16:05:19
735
原创 SpringBoot中DispatcherServlet.doDispatch() 主要逻辑处理流程
是 Spring MVC 框架中的核心组件之一,负责接收所有进入的 HTTP 请求,并将它们分发到适当的处理器(通常是控制器)。方法是类中处理请求的核心方法。
2024-12-20 14:04:55
806
原创 Maven常用插件清单
这些插件覆盖了从编译、测试、打包到部署的整个Maven构建生命周期的不同方面。根据项目需求,可以选择合适的插件,并通过POM文件进行配置以满足具体的构建要求。
2024-12-13 11:11:52
1907
原创 Spring Boot 3 路径匹配器详解
选择哪种路径匹配器取决于具体需求和现有系统的兼容性要求。更适合新的、高性能的应用程序,而可能更适合那些需要与旧系统保持一致性的项目。无论选择哪一种,Spring Boot都提供了足够的灵活性来满足不同的开发需求。通过配置文件或接口,可以轻松地根据项目需求选择和配置合适的路径匹配器。
2024-12-13 09:45:30
2036
原创 SpringBoot中WebMvcConfigurer接口addCorsMappings()方法的使用
是Spring MVC提供的一个接口,允许开发者自定义Spring MVC的配置。通过实现这个接口,你可以定制诸如静态资源处理、视图控制器、消息转换器等各个方面。方法是其中的一个方法,它用于配置跨域资源共享(CORS, Cross-Origin Resource Sharing)。
2024-12-10 14:17:24
655
原创 springboot mockmvc 单元测试
使用和MockMvc可以有效地测试 Spring Boot 应用程序中的控制器。@MockBean用于创建模拟的依赖项,如服务层或数据访问层。when()和do*()方法用于定义模拟对象的行为。和用于发起请求并验证响应。
2024-12-09 16:51:49
610
原创 单元测试中如何使用 Mockito 框架
使用 Mockito 进行单元测试的基本框架可以分为几个步骤。Mockito 是一个强大的 Java 框架,用于创建模拟对象(mock objects),可以在不依赖外部系统或组件的情况下测试代码。
2024-12-09 16:37:54
545
原创 MySql数据库查询数据时如何加锁
在MySQL中,根据不同的业务需求选择合适的锁机制非常重要。共享锁和排他锁是最常用的锁类型,分别适用于读操作和写操作。乐观锁和悲观锁则根据对并发冲突的预期来选择。合理使用这些锁机制可以有效提高系统的并发性能和数据一致性。
2024-11-28 15:39:50
1005
原创 如何使用nslookup命令
nslookup是一个非常灵活和强大的工具,通过不同的参数和选项,可以满足各种DNS查询需求。无论是简单的域名解析,还是复杂的DNS记录查询,nslookup都能提供详细的诊断信息,帮助网络管理员和开发人员解决问题。
2024-11-27 09:52:26
1223
原创 mybatis框架中常用OGNL表达式
在 MyBatis 的 XML 配置文件中,test属性中使用的表达式是 OGNL 表达式。通过这些表达式,可以灵活地进行条件判断和逻辑运算,从而构建复杂的动态 SQL 语句。
2024-11-14 11:06:46
723
原创 如何使用xstream实现javaBean与xml互转
假设有一个简单的Person@Override'}';默认情况下,XStream会使用类名和字段名作为 XML 标签名称。如果想自定义标签名称,可以使用注解或配置方法。JavaBean 转 XML:使用XStream的toXML方法将 Java 对象转换为 XML 字符串。XML 转 JavaBean:使用XStream的fromXML方法将 XML 字符串转换为 Java 对象。自定义标签名称:可以使用注解或配置方法来自定义 XML 标签名称。
2024-11-08 10:06:14
454
原创 如何使用SnakeYAML解析与序列化YAML
SnakeYAML是一个用于处理 YAML 格式数据的 Java 库。它允许开发者将 YAML 文档转换为 Java 对象,反之亦然。下面将通过几个简单的例子来展示如何使用SnakeYAML进行 YAML 的解析(反序列化)和序列化。
2024-11-07 14:49:02
801
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅