- 博客(1034)
- 资源 (16)
- 收藏
- 关注
原创 LangChain.03.LangChain v1 迁移指南
LangChain v1 迁移指南摘要 LangChain v1 对包结构进行了简化与重组,主要变更包括: 核心功能集中在langchain.agents、langchain.messages等模块 旧版功能(如LLMChain、索引API等)移至langchain-classic包 智能体创建函数从langgraph.prebuilt.create_react_agent改为langchain.agents.create_agent 主要迁移要点: 提示词参数重命名为system_prompt 前后钩子替
2025-11-06 15:17:21
26
原创 LangChain.02.LangChain v1 新特性说明
摘要 LangChain v1 是面向智能体开发的生产级框架,主要优化包括: 标准化智能体构建:通过 create_agent 函数替代旧方案,支持中间件扩展和结构化输出,提供工具调用、错误处理等核心功能。 内容块标准化:跨提供商统一访问现代大语言模型功能。 命名空间精简:核心模块集中于 langchain,旧版功能迁移至 langchain-classic。 关键特性: 中间件系统:支持预构建(如敏感信息脱敏、对话摘要)和自定义中间件,覆盖智能体全生命周期钩子。 LangGraph 基础:内置持久化、流式
2025-11-06 15:15:41
30
原创 LangChain.01.LangChain 概述
LangChain是一个简化大语言模型应用的框架,支持快速构建智能体和应用程序。它提供标准化的模型接口,支持多种AI平台,仅需几行代码即可创建功能。核心优势包括:易用的智能体架构、基于LangGraph的可靠执行、LangSmith调试工具等。安装简单,通过pip或uv即可完成,并提供AI辅助配置。示例展示了如何创建天气查询智能体,调用Anthropic模型,实现基础功能。LangChain既适合快速开发,也能满足复杂需求,是构建AI应用的便捷选择。
2025-11-06 15:13:43
27
原创 Spring Boot 4.002.Spring 应用程序
摘要: Spring Boot的SpringApplication类简化了应用程序的引导和启动过程,通过@SpringBootApplication注解整合配置、自动配置和组件扫描。启动方式包括静态run()方法或自定义实例(如关闭Banner、设置属性)。支持流畅API构建器和父子上下文配置。启动过程会发布多种事件(如ApplicationReadyEvent),可通过监听器捕获。命令行参数通过ApplicationArguments解析,启动失败时提供详细诊断。CommandLineRunner和App
2025-08-14 08:45:16
127
原创 Spring Boot 4.001.使用构建系统
本文介绍了Spring Boot 4.0.0与Maven和Gradle构建系统的集成方法。主要内容包括:1)依赖管理,通过spring-boot-dependencies简化版本控制;2)打包应用程序为可执行JAR/WAR文件的方法;3)直接运行应用程序的构建命令;4)自定义构建配置,包括Java版本设置和依赖排除。文章详细说明了在Maven和Gradle中实现这些功能的配置方式,并提供了Kotlin DSL的示例代码。
2025-08-13 08:42:51
112
原创 Spring Framework 7.035.附录:自定义 XML 元素
摘要:Spring 自定义 XML 元素开发指南 Spring 提供自定义 XML 元素机制,允许开发者扩展 XML 配置语法。实现步骤包括: 定义 XSD 架构文件规范元素结构 实现 BeanDefinitionParser 解析逻辑 创建 NamespaceHandler 注册元素解析器 通过 spring.handlers/schemas 文件配置命名空间映射 在配置文件中引入自定义命名空间使用 该机制支持复杂场景,如嵌套元素解析,常用于框架集成和简化重复配置,能显著提升配置可读性和开发效率。
2025-08-12 08:32:26
93
原创 Spring Framework 7.034.附录:XSD 模式
Spring框架使用XSD模式定义配置文件结构,确保配置合法性。本文列出核心XSD模式:1)beans命名空间定义容器基础配置;2)context支持组件扫描和属性占位;3)aop配置切面和通知;4)tx管理声明式事务;5)task处理异步和定时任务;6)cache实现声明式缓存。每个模式均提供命名空间URI、XSD位置和典型配置示例。
2025-08-11 08:49:01
73
原创 Spring Framework 7.033.AOT 处理
Spring Framework 7.033引入AOT(提前编译)处理,显著优化应用性能。AOT在构建阶段生成替代运行时解析的代码,减少启动时间、降低内存占用,并支持GraalVM原生镜像。核心组件包括代码生成器、元数据收集器和处理器。开发需避免动态配置,显式声明反射需求,并测试原生兼容性。AOT处理流程:构建触发→生成代码→收集元数据→编译→生成原生镜像。该技术使应用启动更快、体积更小,特别适合云原生场景。
2025-08-08 08:33:44
43
原创 Spring Framework 7.032.数据缓冲区编解码器
Spring Framework提供了基于DataBuffer的编解码器(Codec)体系,支持多种数据格式的转换。核心包括Encoder(对象→DataBuffer)和Decoder(DataBuffer→对象)接口,广泛应用于WebFlux等反应式场景。内置编解码器覆盖字符串、JSON(Jackson)、XML(JAXB/Jackson)、表单数据等常见格式,支持通过构造函数或setter方法配置字符集、ObjectMapper等参数。开发者也可实现自定义编解码器,需注意使用DataBufferUtil
2025-08-06 08:28:00
63
原创 Spring Framework 7.031.空安全性
Spring Framework 从5.0版本开始引入空安全性支持,通过JSR 305注解(@Nullable/@NonNull)明确标识参数、返回值和字段的可空性,帮助开发者减少空指针异常。这些注解可与IDE、静态分析工具配合,在开发阶段检测潜在问题,并与Kotlin实现互操作。最佳实践包括保持注解使用一致性、优先使用包级别注解(@NonNullApi/@NonNullFields)、结合防御性编程等。空安全机制能明确代码意图,提高可靠性和跨语言兼容性,建议从核心API开始逐步推广使用。
2025-08-05 08:38:04
50
原创 Spring Framework 7.030.弹性(Resilience)
Spring生态中的弹性解决方案 Spring生态提供了多种弹性模式实现,帮助构建健壮的分布式系统。主要包括: Spring Cloud Circuit Breaker - 抽象层,支持Resilience4j、Hystrix等实现,提供统一编程模型和注解(@CircuitBreaker、@Retry等) Resilience4j - 轻量级弹性库,支持熔断、限流、重试等功能,既可单独使用也可与Spring集成 Spring Retry - 专注于重试逻辑的库,通过@Retryable和@Recover注解
2025-08-04 09:02:28
59
原创 Spring Framework 7.029.Spring AOP API(二)
Spring提供了多种简洁的AOP代理创建方式,包括实用的ProxyFactory类、AopContext工具以及注解驱动的自动代理。ProxyFactory通过流畅API支持编程式代理创建,无需XML配置;AopContext解决目标对象内部调用无法触发通知的问题;而@EnableAspectJAutoProxy注解实现了零配置的自动代理,是现代应用的推荐方案。这些方法简化了代理创建过程,使开发者能更专注于切面逻辑的实现。
2025-08-01 08:41:57
53
原创 Spring Framework 7.028.Spring AOP API(一)
摘要:本文介绍了Spring框架的AOP API核心组件,包括Advice通知接口、Pointcut切入点接口和Advisor组合器。详细讲解了前置、环绕等通知类型的实现方式,以及通过ProxyFactory创建动态代理的流程。文章还对比了JDK动态代理和CGLIB代理的区别,并展示了如何在Spring IoC容器中集成AOP配置。这些底层API虽然已被注解方式取代,但理解其原理对掌握Spring AOP机制很有帮助。
2025-07-29 08:49:47
65
原创 Spring Framework 7.027.Spring 中的面向切面编程(四)
Spring AOP 声明风格选择与混合使用指南 本文分析了 Spring AOP 的两种主要声明风格及其适用场景: @AspectJ 注解风格 优点:非侵入性、代码集中、类型安全、与 AspectJ 兼容 缺点:配置分散、需重新编译 适用:大多数现代 Spring 应用,特别是需要类型安全和代码集中性的场景 基于 Schema 的 XML 风格 优点:配置集中、无需修改代码、可动态调整 缺点:可读性差、类型不安全、与代码分离 适用:需要集中管理配置或无法修改业务代码的场景 混合使用建议: 可结合两种风格,
2025-07-24 08:58:05
99
原创 Spring Framework 7.026.Spring 中的面向切面编程(三)
Spring框架支持基于XML Schema的AOP配置方式,通过引入aop命名空间定义切面、切入点和通知。配置包括:使用<aop:aspect>定义切面并引用普通bean;<aop:pointcut>定义切入点表达式;通过<aop:before>等元素配置五种通知类型(前置、返回后、异常后、后置和环绕),支持参数绑定和优先级设置。相比注解风格,XML配置更灵活,适合动态调整,但代码与切面逻辑分离。两种方式功能等效,可根据项目需求选择。
2025-07-23 09:26:55
71
原创 Spring Framework 7.025.Spring 中的面向切面编程(二)
本文介绍了Spring框架中对@AspectJ风格面向切面编程(AOP)的支持。主要内容包括: 启用@AspectJ支持:通过XML配置(<aop:aspectj-autoproxy>)或Java注解(@EnableAspectJAutoProxy)启用,需确保aspectjweaver库在类路径中。 代理机制:Spring AOP使用JDK动态代理(针对接口实现类)或CGLIB代理(针对非接口类),可通过配置强制使用CGLIB。 切面声明:使用@Aspect注解标记类,并配合@Componen
2025-07-19 13:54:46
109
原创 Spring Framework 7.024.Spring 中的面向切面编程(一)
本文介绍了Spring框架中的面向切面编程(AOP)核心概念。AOP作为OOP的补充,通过切面模块化横跨多个对象的关注点。Spring AOP支持基于schema和@AspectJ两种方式,使用AspectJ切入点语言但通过Spring进行织入。文章详细解释了AOP的核心术语(切面、连接点、通知等)及五种通知类型,并阐明了Spring AOP的特点:纯Java实现、仅支持方法执行连接点、与IoC容器的紧密集成。最后指出Spring AOP默认使用JDK动态代理,必要时可切换为CGLIB代理。
2025-07-19 13:53:23
61
原创 Spring Framework 7.023.Spring 表达式语言参考四(SPEL)
摘要: Spring表达式语言(SpEL)提供了多种高级特性:1)支持可变参数方法调用,允许直接传递多个参数或显式传递数组;2)通过@符号引用Spring容器中的bean,使用&符号访问bean工厂;3)提供三元运算符实现条件逻辑,以及Elvis运算符简化空值检查。这些特性使SpEL既能保持简洁语法,又能处理复杂场景,如方法调用、bean引用和条件表达式。使用中需注意类型转换、方法重载歧义和性能开销等问题。
2025-07-18 08:16:52
74
原创 Spring Framework 7.022.Spring 表达式语言参考三(SPEL)
摘要:本文介绍了Spring表达式语言(SpEL)的核心特性,包括数组构造、方法调用和运算符使用。在数组构造方面,支持Java/Kotlin语法创建数组,包括初始化器和多维数组,但目前不支持多维数组初始化器。方法调用部分展示了标准调用语法和对null的安全导航,以及可变参数方法的灵活调用方式。运算符部分详细说明了关系、逻辑、字符串、数学等运算符,特别介绍了处理null值的规则和文本等价形式,还包含between、instanceof和matches等特殊运算符。所有示例均提供Java和Kotlin两种实现方
2025-07-17 14:05:44
72
原创 Spring Framework 7.021.Spring 表达式语言参考二(Language Reference)
Spring 表达式语言(SpEL)参考指南摘要: SpEL支持多种表达式类型,包括: 字面量表达式:字符串、数字(整数/实数)、布尔值和null值 对象属性导航:使用句点访问嵌套属性 集合访问:支持数组、列表、映射的索引访问(方括号表示法) 字符串字符访问:通过索引获取指定字符 运算符和方法调用 注意事项: 数字处理存在特殊机制,负数在内部存储为正数 属性名称首字母不区分大小写 字符串索引访问返回String而非Character 集合访问对List直接使用get(n),其他Collection使用迭代器
2025-07-14 08:43:22
78
原创 Spring Framework 7.020.Spring 表达式语言(SpEL)Spring Expression Language
Spring表达式语言(SpEL)概述 Spring表达式语言(SpEL)是Spring框架提供的一种功能强大的表达式语言,主要特点包括: 核心特性: 支持字面量表达式、布尔/关系运算符、正则表达式和类表达式 提供属性、数组、集合和映射的访问能力 支持方法调用、构造函数调用和bean引用 表达式求值: 通过ExpressionParser解析表达式 使用EvaluationContext进行求值上下文管理 提供SimpleEvaluationContext和StandardEvaluationContext
2025-07-12 08:59:05
156
原创 Spring Framework 7.019.验证、数据绑定和类型转换(Validation, Data Binding, and Type Conversion)
Spring框架提供了Validator接口实现对象验证,通过Errors对象报告验证失败。示例展示了如何验证Person对象,使用ValidationUtils辅助类检查空值和年龄范围。对于复杂对象(如包含Address的Customer),可以组合多个Validator实现。Spring的验证机制不限于Web层,支持全局验证和本地自定义逻辑。数据绑定使用DataBinder和BeanWrapper,而类型转换可通过PropertyEditor或更现代的core.convert包实现。这些功能共同构成了S
2025-07-11 08:53:45
448
原创 Spring Framework 7.018.资源(Resources)
摘要 Spring Framework 的 Resource 接口(org.springframework.core.io.Resource)提供了比 Java 标准 URL 更强大的资源访问能力,支持类路径、ServletContext 等多种资源类型。主要特性包括:检查资源存在性(isExists)、获取输入流(getInputStream)、转换为文件或URL等。Spring提供了多种Resource实现:UrlResource(URL包装)、ClassPathResource(类路径)、FileSy
2025-07-10 13:53:52
271
原创 Spring Framework 7.017.BeanFactory API
Spring框架比较了BeanFactory和ApplicationContext两种容器:BeanFactory提供基础IoC功能,适合与第三方框架集成;而ApplicationContext包含更多高级功能(如生命周期管理、注解处理等),是大多数应用的首选。ApplicationContext会自动注册后处理器,而使用DefaultListableBeanFactory时需手动配置。文章通过代码示例展示了如何在普通BeanFactory中手动添加处理器,并建议除非需要精细控制,否则应优先使用功能更全面的
2025-07-10 13:52:53
152
原创 Spring Framework 7.016.ApplicationContext 的附加功能(Additional Capabilities of the ApplicationContext)
Spring Framework的ApplicationContext扩展了BeanFactory,提供了国际化消息处理、资源加载、事件发布和分层上下文管理等附加功能。其中,MessageSource接口支持国际化消息解析,通过ResourceBundleMessageSource等实现类加载不同语言资源文件。开发者可通过编程或声明式配置使用这些功能,如示例展示了如何通过资源文件定义消息,并通过MessageSource接口获取本地化消息。ApplicationContext还支持消息参数替换和层级查找,遵
2025-07-08 08:53:24
215
原创 Spring Framework 7.015.上下文加载时织入器(Registering a LoadTimeWeaver)
Spring Framework 支持加载时织入(LTW),在类加载时进行字节码增强,实现@Configurable注解(对非Spring对象依赖注入)和AspectJ切面织入。可通过XML配置context:load-time-weaver或Java注解@EnableLoadTimeWeaving启用,并支持定制LoadTimeWeaver实现。需要根据应用环境(Web容器/独立应用)配置合适的类加载器,可能需Java代理启动支持。LTW为Spring提供了更灵活的依赖注入和AOP能力,但配置较为复杂。
2025-07-08 08:51:54
222
原创 Spring Framework 7.014.Spring 环境抽象(Environment Abstraction)
Spring框架的环境抽象(Environment Abstraction)通过Environment接口整合了属性源(PropertySources)和配置文件(Profiles)功能。配置文件允许按环境(如开发/生产)分组管理bean定义,可通过XML的profile属性或Java/Kotlin的@Profile注解实现。激活方式包括JVM参数、环境变量或编程设置。属性源则统一了各种配置来源(如.properties文件、环境变量等)的访问方式,支持带默认值的属性获取和类型转换。这一抽象机制为应用提供了
2025-07-07 08:54:59
168
原创 Spring Framework 7.013.基于 Java 的容器配置(Java-based Container Configuration)
本文介绍了Spring框架中基于Java的容器配置方法,核心内容包括: 核心概念:使用@Configuration注解类作为bean定义源,@Bean注解方法用于实例化和管理对象 容器初始化:通过AnnotationConfigApplicationContext实例化Spring容器,支持以编程方式注册配置类 配置方式: 简单构造:直接传入配置类 编程构建:无参构造后通过register()方法注册配置类 组件扫描:使用@ComponentScan或scan()方法自动发现组件 注解使用: @Config
2025-07-06 10:48:36
102
原创 Spring Framework 7.012.使用 JSR 330 标准注解(Using JSR 330 Standard Annotations)
Spring Framework支持JSR-330标准注解(如@Inject、@Named)实现依赖注入,需添加jakarta.inject依赖。@Inject可替代@Autowired用于字段、方法和构造器注入,支持Provider延迟获取。@Named用于限定依赖名称或替代@Component注解。与Spring注解相比,JSR-330缺少部分功能如注解组合能力,建议复杂场景仍使用Spring原生注解。配置类路径扫描后,可混合使用标准注解与Spring组件管理。
2025-07-06 10:47:54
59
原创 Spring Framework 7.011.类路径扫描和受管组件(Classpath Scanning and Managed Components)
Spring框架提供了类路径扫描机制来简化组件注册,无需XML配置。通过使用@Component及其衍生的stereotype注解(@Repository、@Service、@Controller),可以自动检测并注册bean定义。这些注解支持元注解和组合注解功能,允许自定义属性。开发者只需在配置类中添加@ComponentScan指定扫描路径,或使用XML配置<context:component-scan>,即可实现自动组件注册。这种方式减少了显式配置,提高了开发效率,同时通过特定注解增强了代
2025-07-06 10:46:56
104
原创 Spring Framework 7.010.基于注解的容器配置(Annotation-based Container Configuration)
本文介绍了Spring框架中基于注解的容器配置。主要内容包括: 注解配置支持:Spring通过注解(如@Autowired)实现自动装配,支持JSR-250和JSR-330标准注解。 配置方式:可使用XML配置(context:annotation-config/)或AnnotationConfigApplicationContext隐式注册后处理器。 @Autowired使用:详细说明如何在构造函数、setter方法、任意方法和字段上使用@Autowired进行依赖注入,包括Java和Kotlin代码示例
2025-07-06 10:44:59
95
原创 Spring Framework 7.009.容器扩展点(Container Extension Points)
Spring容器可以通过BeanPostProcessor接口扩展,允许开发者在bean实例化前后插入自定义逻辑。该接口包含postProcessBeforeInitialization和postProcessAfterInitialization两个回调方法,可用于修改或代理bean实例。多个处理器可通过Ordered接口控制执行顺序,但编程式注册的处理器会优先于自动检测的处理器执行。需要注意的是,BeanPostProcessor本身及其直接引用的bean不能被AOP自动代理。文中以打印bean信息的处
2025-07-06 10:44:13
56
原创 Spring Framework 7.009.容器扩展点(Container Extension Points)
Spring容器可以通过BeanPostProcessor接口扩展,允许开发者在bean实例化前后插入自定义逻辑。该接口包含postProcessBeforeInitialization和postProcessAfterInitialization两个回调方法,可用于修改或代理bean实例。多个处理器可通过Ordered接口控制执行顺序,但编程式注册的处理器会优先于自动检测的处理器执行。需要注意的是,BeanPostProcessor本身及其直接引用的bean不能被AOP自动代理。文中以打印bean信息的处
2025-07-06 10:43:36
86
原创 Spring Framework 7.008.Bean 定义继承(Bean Definition Inheritance)
摘要:Spring Framework的Bean定义继承机制允许子定义继承父Bean的配置(如属性、构造参数等),并可选择性覆盖或添加新值,实现配置模板化。通过XML配置时,使用parent属性指定父Bean,子Bean可继承类、属性等配置。若父Bean无类定义需标记为abstract,防止被实例化。ApplicationContext默认预实例化单例Bean,抽象模板Bean需明确设置abstract=true以避免被实例化。该机制显著减少了重复配置工作。
2025-07-06 10:42:49
59
原创 Spring Framework 7.007.自定义 Bean 的特性(Customizing the Nature of a Bean)
本文介绍了Spring框架中自定义Bean特性的三种主要方式:生命周期回调、Aware接口和其他自定义接口。重点讲解了生命周期回调的实现方法,包括初始化回调(InitializingBean/afterPropertiesSet)和销毁回调(DisposableBean/destroy),并推荐使用JSR-250注解(@PostConstruct/@PreDestroy)或XML/Java配置的init-method/destroy-method来避免与Spring直接耦合。 文章还介绍了默认初始化和销毁方
2025-07-06 10:42:16
97
原创 Spring Framework 7.006.Bean 作用域(Bean Scopes)
Spring提供了6种Bean作用域:单例(singleton,默认)、原型(prototype)、请求(request)、会话(session)、应用(application)和WebSocket。单例作用域在每个Spring容器中只创建一个实例;原型作用域每次请求都创建新实例;其余4种作用域仅适用于Web应用环境。需注意单例bean依赖原型bean时,依赖仅在初始化时注入一次。Web作用域需额外配置RequestContextListener或RequestContextFilter。开发者可根据需求选
2025-07-06 09:48:05
401
原创 Spring Framework 7.005.依赖关系(Dependencies)
本文介绍了Spring框架中的依赖注入(DI)概念及其实现方式。主要内容包括: 依赖注入概述:通过容器控制对象依赖关系,实现控制反转(IoC),使代码更简洁易测试。 两种注入方式: 构造函数注入:通过构造函数参数传递依赖 Setter方法注入:通过无参构造后调用setter方法注入 构造函数参数解析的三种方法: 类型匹配(type属性) 索引匹配(index属性) 参数名称匹配(需编译时保留参数名或使用@ConstructorProperties) 实际应用:演示了如何在XML配置中定义Bean及其依赖关系
2025-07-06 09:47:03
181
原创 Spring Framework 7.004.Bean 概述(Bean Overview)
Spring IoC容器中的Bean管理摘要 Spring IoC容器通过配置元数据管理一个或多个bean,这些元数据可以转换为BeanDefinition对象。bean定义包含类名、行为配置、依赖项和其他属性设置等关键信息。容器支持多种bean配置方式: 命名与别名:每个bean有唯一标识符,可通过id或name属性指定,并支持别名机制使不同组件能通过不同名称引用同一bean。 实例化方式:容器通过反射调用构造函数或静态工厂方法创建bean,支持普通类和嵌套类的管理,不局限于JavaBean规范。 属性配
2025-07-06 09:46:19
285
原创 Spring Framework 7.003.容器概述(Container Overview)
Spring IoC容器概述摘要 Spring IoC容器(ApplicationContext)是Spring框架的核心,负责管理应用中各组件(Bean)的创建、配置和依赖关系。容器通过读取配置元数据来获取指令,配置方式包括: 基于注解的组件类 Java配置类(使用@Configuration/@Bean) XML配置文件 XML配置使用<beans>和<bean>元素定义组件,可通过ClassPathXmlApplicationContext加载。配置可以模块化,通过<im
2025-07-04 14:32:24
226
原创 Spring Framework 7.002.Spring IoC 容器与 Bean 简介(Introduction to the Spring IoC Container and Beans)
摘要:Spring框架的核心技术包括IoC容器和AOP技术。IoC容器通过依赖注入实现控制反转,提供Bean管理和配置功能。ApplicationContext作为BeanFactory的扩展,增加了企业级特性。文档详细介绍了容器配置、Bean定义、依赖注入、作用域等核心概念,以及基于注解的配置方式。AOP框架支持80%的AOP需求,并可集成AspectJ。此外还涵盖环境抽象、容器扩展点等高级特性,为Java企业应用开发提供全面支持。(150字)
2025-07-04 14:30:42
80
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅