{"version":1,"pages":[{"id":"JROASFkIPAwUlGwfqrEp","title":"简介","pathname":"/spring-framework-documentation5","siteSpaceId":"sitesp_UQ3Iv","description":"最新的Spring5.1.x官方参考指南中文版"},{"id":"-LhePRTP60DJ102OkM1-","title":"前言","pathname":"/spring-framework-documentation5/spring-framework-overview","siteSpaceId":"sitesp_UQ3Iv","description":""},{"id":"-LhoiUI8ySvASPBRRAEy","title":"1. “Spring”代表什么","pathname":"/spring-framework-documentation5/spring-framework-overview/1.what-we-mean-by-spring","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"前言"}]},{"id":"-LhotkR4qmMWUhW1pwbG","title":"2. Spring和Spring框架的历史","pathname":"/spring-framework-documentation5/spring-framework-overview/2.history-of-spring-and-the-spring-framework","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"前言"}]},{"id":"-LhotkR5sbPEkqPL1Ow-","title":"3. 设计哲学","pathname":"/spring-framework-documentation5/spring-framework-overview/3.design-philosophy","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"前言"}]},{"id":"-LhotkR6Of0Z5tCjkc7z","title":"4. 反馈和贡献","pathname":"/spring-framework-documentation5/spring-framework-overview/4.feedback-and-contributions","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"前言"}]},{"id":"-LhotkR7OlSseyl0OaOU","title":"5. 开始","pathname":"/spring-framework-documentation5/spring-framework-overview/5.getting-started","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"前言"}]},{"id":"-Lhpoq8eUXIeY5cOXLYZ","title":"核心技术","pathname":"/spring-framework-documentation5/core-technologies","siteSpaceId":"sitesp_UQ3Iv","description":""},{"id":"-Lhpoq8f4ziUKTERe-BX","title":"1. IoC容器","pathname":"/spring-framework-documentation5/core-technologies/1.the-ioc-container","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"}]},{"id":"-Lhpoq8gBFJ5IVess6Tf","title":"1.1 IoC容器和Beans介绍","pathname":"/spring-framework-documentation5/core-technologies/1.the-ioc-container/1.1introduction-to-the-spring-ioc-container-and-beans","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"1. IoC容器"}]},{"id":"-Lhpoq8hN9_YAqJrB9ec","title":"1.2 IoC容器概述","pathname":"/spring-framework-documentation5/core-technologies/1.the-ioc-container/1.2container-overview","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"1. IoC容器"}]},{"id":"-LhtWZNJGJpyOqJ8YeXf","title":"1.3 Bean概述","pathname":"/spring-framework-documentation5/core-technologies/1.the-ioc-container/1.3bean-overview","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"1. IoC容器"}]},{"id":"-Lhyv9uqk8AGdUh-WITk","title":"1.4 依赖","pathname":"/spring-framework-documentation5/core-technologies/1.the-ioc-container/1.4dependencies","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"1. IoC容器"}]},{"id":"-LhyvczpY6mHoCXRjS2R","title":"1.5 Bean作用域","pathname":"/spring-framework-documentation5/core-technologies/1.the-ioc-container/1.5bean-scopes","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"1. IoC容器"}]},{"id":"-Li3_oil-MgL5qL7vfg3","title":"1.6 自定义Bean","pathname":"/spring-framework-documentation5/core-technologies/1.the-ioc-container/1.6customizing-the-nature-of-a-bean","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"1. IoC容器"}]},{"id":"-Li42HPAxInl8F6a8ZPc","title":"1.7 Bean的继承","pathname":"/spring-framework-documentation5/core-technologies/1.the-ioc-container/1.7bean-definition-inheritance","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"1. IoC容器"}]},{"id":"-Li5TUSn88J86UEJZ0J2","title":"1.8 容器扩展点","pathname":"/spring-framework-documentation5/core-technologies/1.the-ioc-container/1.8container-extension-points","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"1. IoC容器"}]},{"id":"-LiAotOLBsFSMoigz-3N","title":"1.9 基于注解的容器配置","pathname":"/spring-framework-documentation5/core-technologies/1.the-ioc-container/1.9annotation-based-container-configuration","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"1. IoC容器"}]},{"id":"-Li42HPDhNMgiYFRzXpr","title":"1.10 类路径扫描和托管组件","pathname":"/spring-framework-documentation5/core-technologies/1.the-ioc-container/1.10classpath-scanning-and-managed-components","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"1. IoC容器"}]},{"id":"-Li42HPEBrScp0n6Tc7N","title":"1.11 使用JSR 330标准注解","pathname":"/spring-framework-documentation5/core-technologies/1.the-ioc-container/1.11using-jsr-330-standard-annotations","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"1. IoC容器"}]},{"id":"-Li42HPFgzI7D5NDP6g4","title":"1.12 基于Java的容器配置","pathname":"/spring-framework-documentation5/core-technologies/1.the-ioc-container/1.12java-based-container-configuration","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"1. IoC容器"}]},{"id":"-Lhpoq8smQxkONjq9T6q","title":"1.13 环境抽象","pathname":"/spring-framework-documentation5/core-technologies/1.the-ioc-container/1.13environment-abstraction","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"1. IoC容器"}]},{"id":"-Li42HPHIM0Q2RjvCY5c","title":"1.14 注册LoadTimeWeaver","pathname":"/spring-framework-documentation5/core-technologies/1.the-ioc-container/1.14registering-a-loadtimeweaver","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"1. IoC容器"}]},{"id":"-Li42HPIrcEAo0PLXUnF","title":"1.15 ApplicationContext的其他功能","pathname":"/spring-framework-documentation5/core-technologies/1.the-ioc-container/1.15additional-capabilities-of-the-applicationcontext","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"1. IoC容器"}]},{"id":"-Lhpoq8vEpEDIbsj1pxM","title":"1.16 BeanFactory","pathname":"/spring-framework-documentation5/core-technologies/1.the-ioc-container/1.16the-beanfactory","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"1. IoC容器"}]},{"id":"-Lhpoq8iZiKQvWDL-T7w","title":"2.资源","pathname":"/spring-framework-documentation5/core-technologies/2.resources","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"}]},{"id":"-LiaiXqp2M1k-Km2CCqZ","title":"2.1介绍","pathname":"/spring-framework-documentation5/core-technologies/2.resources/2.1introduction","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"2.资源"}]},{"id":"-LijhuEJrZufmxHITNSN","title":"2.2资源接口","pathname":"/spring-framework-documentation5/core-technologies/2.resources/2.2resource-interface","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"2.资源"}]},{"id":"-LikLGPyNoEShxmJJLmc","title":"2.3内置资源实现","pathname":"/spring-framework-documentation5/core-technologies/2.resources/2.3build-in-resource-impl","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"2.资源"}]},{"id":"-Li5TUT-rKyO3szIz9xI","title":"2.4ResourceLoader","pathname":"/spring-framework-documentation5/core-technologies/2.resources/2.4resourceloader","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"2.资源"}]},{"id":"-LikLGQ-eTMHJOLG_cfW","title":"2.5ResourceLoaderAware接口","pathname":"/spring-framework-documentation5/core-technologies/2.resources/2.5resourceloaderaware","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"2.资源"}]},{"id":"-Lior-pp5nT_uSjdvmNq","title":"2.6资源作为依赖","pathname":"/spring-framework-documentation5/core-technologies/2.resources/2.6resource-as-dependencies","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"2.资源"}]},{"id":"-Lior-pqVgstDkxvsV9u","title":"2.7应用程序上下文和资源路径","pathname":"/spring-framework-documentation5/core-technologies/2.resources/2.7application-contexts-and-resource-paths","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"2.资源"}]},{"id":"-LiugekEjsoPpxLZJb7B","title":"3.验证，数据绑定，和类型转换","pathname":"/spring-framework-documentation5/core-technologies/3.validation-databinding-typeconversion","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"}]},{"id":"-LiugekF0K3TYOnmzoM4","title":"3.1使用Spring Validator接口","pathname":"/spring-framework-documentation5/core-technologies/3.validation-databinding-typeconversion/3.1spring-validator-interface","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"3.验证，数据绑定，和类型转换"}]},{"id":"-LiugekGQpPEYmr1-Lhl","title":"3.2将代码解析为错误消息","pathname":"/spring-framework-documentation5/core-technologies/3.validation-databinding-typeconversion/3.2resolving-codes-to-error-messages","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"3.验证，数据绑定，和类型转换"}]},{"id":"-LiugekHwWqUO946V2kK","title":"3.3bean操作和BeanWrapper","pathname":"/spring-framework-documentation5/core-technologies/3.validation-databinding-typeconversion/3.3beanwrapper","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"3.验证，数据绑定，和类型转换"}]},{"id":"-Lj1GDC7AdmEzOj3Ai1Y","title":"3.4Spring类型转换","pathname":"/spring-framework-documentation5/core-technologies/3.validation-databinding-typeconversion/3.4spring-type-conversion","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"3.验证，数据绑定，和类型转换"}]},{"id":"-LkU3XIkaeu90tlPlhg4","title":"3.5Spring字段格式化","pathname":"/spring-framework-documentation5/core-technologies/3.validation-databinding-typeconversion/3.5spring-field-formatting","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"3.验证，数据绑定，和类型转换"}]},{"id":"-LkU3XIlmPI5OQFKS1eN","title":"3.6配置全局Date和Time格式","pathname":"/spring-framework-documentation5/core-technologies/3.validation-databinding-typeconversion/3.6global-date-and-time-format","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"3.验证，数据绑定，和类型转换"}]},{"id":"-LkU3XImdxmJ5BbxR3WL","title":"3.7Spring验证","pathname":"/spring-framework-documentation5/core-technologies/3.validation-databinding-typeconversion/3.7spring-validation","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"3.验证，数据绑定，和类型转换"}]},{"id":"-LkU3XInXIB90t0tShvH","title":"4.SpEL Spring表达式语言","pathname":"/spring-framework-documentation5/core-technologies/4.spel","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"}]},{"id":"-LkU3XIosovTOmhuV1oD","title":"4.1求值","pathname":"/spring-framework-documentation5/core-technologies/4.spel/4.1evaluation","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"4.SpEL Spring表达式语言"}]},{"id":"-LkU3XIp2IHWjaW-B8Bs","title":"4.2bean定义中的表达式","pathname":"/spring-framework-documentation5/core-technologies/4.spel/4.2expressions-in-bean-definitions","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"4.SpEL Spring表达式语言"}]},{"id":"-LkU3XIq2HuDNp2yIqFH","title":"4.3语言引用","pathname":"/spring-framework-documentation5/core-technologies/4.spel/4.3language-reference","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"4.SpEL Spring表达式语言"}]},{"id":"-Lkkr75pt7kGkRXO8jKM","title":"5.Spring AOP","pathname":"/spring-framework-documentation5/core-technologies/5spring-aop","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"}]},{"id":"-Lkkr75q0h1civjy_rkn","title":"5.1什么是AOP","pathname":"/spring-framework-documentation5/core-technologies/5spring-aop/5.1aop-concepts","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"5.Spring AOP"}]},{"id":"-Lkkr75rpCgUPTsXB9lV","title":"5.1Spring AOP的能力和目标","pathname":"/spring-framework-documentation5/core-technologies/5spring-aop/5.2spring-aop-capabilities-and-goals","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"5.Spring AOP"}]},{"id":"-Lkkr75shHAwyRLKvCmQ","title":"5.3AOP代理","pathname":"/spring-framework-documentation5/core-technologies/5spring-aop/5.3aop-proxies","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"5.Spring AOP"}]},{"id":"-Lkkr75titJash8yiKp7","title":"5.4@AspectJ 支持","pathname":"/spring-framework-documentation5/core-technologies/5spring-aop/5.4aspectj-support","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"5.Spring AOP"}]},{"id":"-LksVh7evrfjaA7qgw5s","title":"5.5基于Schema的AOP支持","pathname":"/spring-framework-documentation5/core-technologies/5spring-aop/5.5schema-based-aop-support","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"5.Spring AOP"}]},{"id":"-Ll7e9H6QhJDPVFRpFOF","title":"5.6选择要使用的AOP声明样式","pathname":"/spring-framework-documentation5/core-technologies/5spring-aop/5.6which-aop-style","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"5.Spring AOP"}]},{"id":"-Ll7e9H7urkLRBgLVUy8","title":"5.7混合Aspect类型","pathname":"/spring-framework-documentation5/core-technologies/5spring-aop/5.7mixing-aspect-types","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"5.Spring AOP"}]},{"id":"-Ll7e9H8bwHdJMMuQ44K","title":"5.8代理机制","pathname":"/spring-framework-documentation5/core-technologies/5spring-aop/5.8proxying-mechanisms","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"5.Spring AOP"}]},{"id":"-Ll7e9H9Zt6kV1d0k0WR","title":"5.9程序创建@AspectJ代理","pathname":"/spring-framework-documentation5/core-technologies/5spring-aop/5.9program-creat-aspectj-proxies","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"5.Spring AOP"}]},{"id":"-Ll7e9HAPtMZKlMHN4qK","title":"5.10在Spring应用程序中使用AspectJ","pathname":"/spring-framework-documentation5/core-technologies/5spring-aop/5.10using-aspectj-with-spring","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"5.Spring AOP"}]},{"id":"-LlJiNmL19xFL3ywmY7R","title":"5.11更多资源","pathname":"/spring-framework-documentation5/core-technologies/5spring-aop/5.11further-resources","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"5.Spring AOP"}]},{"id":"-Lhzhr5wYCkfi1cpYQ7V","title":"6.Spring AOP APIs","pathname":"/spring-framework-documentation5/core-technologies/6.spring-aop-apis","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"}]},{"id":"-LmYJg8LtKO8StBdaWa3","title":"6.1Pointcut API","pathname":"/spring-framework-documentation5/core-technologies/6.spring-aop-apis/6.1pointcut-api","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"6.Spring AOP APIs"}]},{"id":"-LmYJg8MSbE3QNtRlefq","title":"6.2Advice API","pathname":"/spring-framework-documentation5/core-technologies/6.spring-aop-apis/6.2advice-api","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"6.Spring AOP APIs"}]},{"id":"-Lmnu0xOmfvWTpxCfQZN","title":"6.3Advisor API","pathname":"/spring-framework-documentation5/core-technologies/6.spring-aop-apis/6.3advisor-api","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"6.Spring AOP APIs"}]},{"id":"-Lmnu0xPIw3YAjCF3T5e","title":"6.4使用ProxyFactoryBean来创建AOP代理","pathname":"/spring-framework-documentation5/core-technologies/6.spring-aop-apis/6.4proxyfactorybean-aop","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"6.Spring AOP APIs"}]},{"id":"-Lmnu0xQULppZwLfqQe5","title":"6.5简介的代理定义","pathname":"/spring-framework-documentation5/core-technologies/6.spring-aop-apis/6.5concise-proxy-definitions","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"6.Spring AOP APIs"}]},{"id":"-Lmnu0xRkQ-Lnqbjj5Os","title":"6.6使用ProxyFactory创建AOP代理","pathname":"/spring-framework-documentation5/core-technologies/6.spring-aop-apis/6.6create-aop-with-proxyfactory","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"6.Spring AOP APIs"}]},{"id":"-Lmnu0xS5EoZJlWBGc5_","title":"6.7操作被通知的对象","pathname":"/spring-framework-documentation5/core-technologies/6.spring-aop-apis/6.7manipulating-advised-objects","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"6.Spring AOP APIs"}]},{"id":"-Lmnu0xTjQVzURNq-SCU","title":"6.8使用auto-proxy功能","pathname":"/spring-framework-documentation5/core-technologies/6.spring-aop-apis/6.8auto-proxy-facility","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"6.Spring AOP APIs"}]},{"id":"-Lmo8iG_nKhCr6FuXVLo","title":"6.9使用TargetSource的实现","pathname":"/spring-framework-documentation5/core-technologies/6.spring-aop-apis/6.9using-targetsource-implementations","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"6.Spring AOP APIs"}]},{"id":"-Lmo8iGaD9-eRIvAtbbE","title":"6.10定义新的Advice Types","pathname":"/spring-framework-documentation5/core-technologies/6.spring-aop-apis/6.10defining-new-advice-types","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"6.Spring AOP APIs"}]},{"id":"-LmoBy5NRvHPDqf5YY3K","title":"7.Null-safety","pathname":"/spring-framework-documentation5/core-technologies/7null-safety","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"}]},{"id":"-Lnc3RhRSYsF6Rtz_o2A","title":"8.数据缓存和解码器","pathname":"/spring-framework-documentation5/core-technologies/8data-buffers-and-codecs","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"}]},{"id":"-Lnc3RhSlu5EfXVJMCsR","title":"9.附录","pathname":"/spring-framework-documentation5/core-technologies/appendix","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"}]},{"id":"-Lnc3RhTXSZNmGsUXEGB","title":"9.1XML Schemas","pathname":"/spring-framework-documentation5/core-technologies/appendix/9.1xml-schemas","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"9.附录"}]},{"id":"-Lnc3RhUT3ekD86_HldD","title":"9.2创建XML Schemas","pathname":"/spring-framework-documentation5/core-technologies/appendix/9.2xml-schemas-authoring","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"核心技术"},{"label":"9.附录"}]},{"id":"-LnjIQHuN8Y6sEOWW3Ll","title":"测试","pathname":"/spring-framework-documentation5/testing","siteSpaceId":"sitesp_UQ3Iv","description":""},{"id":"-LnjIQHvoD_ZL5Qa0oE5","title":"1.Spring测试介绍","pathname":"/spring-framework-documentation5/testing/1.introduction-to-spring-testing","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"测试"}]},{"id":"-LnjIQHw6_dNgHD-DUG6","title":"2.单元测试","pathname":"/spring-framework-documentation5/testing/2.unit-testing","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"测试"}]},{"id":"-LnjIQHxBStDJ_n5kgg5","title":"2.1Mock Objects","pathname":"/spring-framework-documentation5/testing/2.unit-testing/2.1mock-objects","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"测试"},{"label":"2.单元测试"}]},{"id":"-LnjIQHyJzjjosyu6vad","title":"2.2单元测试支持类","pathname":"/spring-framework-documentation5/testing/2.unit-testing/unit-testing-support-classes","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"测试"},{"label":"2.单元测试"}]},{"id":"-LnjIQHz_iwMqx2LEj0k","title":"3.集成测试","pathname":"/spring-framework-documentation5/testing/integration-testing","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"测试"}]},{"id":"-LnjIQI-8ZLlmHD2z8EL","title":"3.1概览","pathname":"/spring-framework-documentation5/testing/integration-testing/3.1overview","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"测试"},{"label":"3.集成测试"}]},{"id":"-LnjIQI09xUWCbtYmywA","title":"3.2集成测试的目的","pathname":"/spring-framework-documentation5/testing/integration-testing/3.2goals-of-integration-testing","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"测试"},{"label":"3.集成测试"}]},{"id":"-LnjIQI1v8dGHHIRs8ln","title":"3.3JDBC测试支持","pathname":"/spring-framework-documentation5/testing/integration-testing/3.3jdbc-testing-support","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"测试"},{"label":"3.集成测试"}]},{"id":"-LntPPKIibvEjEIuN1JC","title":"3.4注解","pathname":"/spring-framework-documentation5/testing/integration-testing/3.4annotations","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"测试"},{"label":"3.集成测试"}]},{"id":"-Lp2XwYohZ7GTwc7a4iA","title":"3.5Spring TestContext框架","pathname":"/spring-framework-documentation5/testing/integration-testing/3.5spring-testcontext-framework","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"测试"},{"label":"3.集成测试"}]},{"id":"-Lp2XwYpyfuOHVmbQqa0","title":"3.6Spring MVC测试框架","pathname":"/spring-framework-documentation5/testing/integration-testing/3.6spring-mvc-test-framework","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"测试"},{"label":"3.集成测试"}]},{"id":"-Lp8CPhrs87e1vAJ2MVZ","title":"3.7WebTestClient","pathname":"/spring-framework-documentation5/testing/integration-testing/3.7webtestclient","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"测试"},{"label":"3.集成测试"}]},{"id":"-Lp8CPhs48vxfNCxLEMw","title":"4.更多资源","pathname":"/spring-framework-documentation5/testing/further-resources","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"测试"}]},{"id":"-LpCfoJ-3wPvy7VJySsL","title":"数据访问","pathname":"/spring-framework-documentation5/dataaccess","siteSpaceId":"sitesp_UQ3Iv","description":""},{"id":"-LpCfoJ0J4GCtRpzFYkS","title":"1.事务管理","pathname":"/spring-framework-documentation5/dataaccess/1.transaction-management","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"数据访问"}]},{"id":"-LpYB2WHPJ2Uz7G0Qit9","title":"2.DAO支持","pathname":"/spring-framework-documentation5/dataaccess/2.dao-support","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"数据访问"}]},{"id":"-LpCfoJ28T-_lwV-BdjX","title":"3.JDBC","pathname":"/spring-framework-documentation5/dataaccess/3.jdbc","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"数据访问"}]},{"id":"-LpYB2WJYnEg5-O3xI8A","title":"3.1选择JDBC数据库访问方法","pathname":"/spring-framework-documentation5/dataaccess/3.jdbc/3.1choosing-jdbc-database-access","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"数据访问"},{"label":"3.JDBC"}]},{"id":"-LpYB2WKOlr1qCK_2g28","title":"3.2包层次结构","pathname":"/spring-framework-documentation5/dataaccess/3.jdbc/3.2package-hierarchy","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"数据访问"},{"label":"3.JDBC"}]},{"id":"-LpYB2WLJT7sc3NT_Ud_","title":"3.3使用JDBC核心类控制基本JDBC处理和错误处理","pathname":"/spring-framework-documentation5/dataaccess/3.jdbc/3.3jdbc-core-classes","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"数据访问"},{"label":"3.JDBC"}]},{"id":"-LpcHdwf5np7catOKc7z","title":"3.4控制数据库连接","pathname":"/spring-framework-documentation5/dataaccess/3.jdbc/3.4controlling-database-connections","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"数据访问"},{"label":"3.JDBC"}]},{"id":"-LpcLfgn3nKPbSbaHeTo","title":"3.5JDBC批处理操作","pathname":"/spring-framework-documentation5/dataaccess/3.jdbc/3.5jdbc-batch-operations","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"数据访问"},{"label":"3.JDBC"}]},{"id":"-LplQATUkn1sgfSWQg7D","title":"3.6使用SimpleJdbc","pathname":"/spring-framework-documentation5/dataaccess/3.jdbc/3.6with-simplejdbc","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"数据访问"},{"label":"3.JDBC"}]},{"id":"-Lpm532h-lS9ReaJt88S","title":"3.7将JDBC操作建模为Java对象","pathname":"/spring-framework-documentation5/dataaccess/3.jdbc/3.7modeling-jdbc-as-objects","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"数据访问"},{"label":"3.JDBC"}]},{"id":"-LprxnVewfdGMR50-wC8","title":"3.8参数和数据值处理的常见问题","pathname":"/spring-framework-documentation5/dataaccess/3.jdbc/3.8data-value-handling","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"数据访问"},{"label":"3.JDBC"}]},{"id":"-LpunAlgN-JvkYdhulkg","title":"3.9嵌入式数据库支持","pathname":"/spring-framework-documentation5/dataaccess/3.jdbc/3.9embedded-database-support","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"数据访问"},{"label":"3.JDBC"}]},{"id":"-Lpur09lHMWJ-JODnwTf","title":"3.10初始化数据源","pathname":"/spring-framework-documentation5/dataaccess/3.jdbc/3.10initializing-a-datasource","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"数据访问"},{"label":"3.JDBC"}]},{"id":"-LqmfsnLuwKsRzvdDYNf","title":"4.ORM","pathname":"/spring-framework-documentation5/dataaccess/4.0orm","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"数据访问"}]},{"id":"-LqmfsnMSvYq_E5xDVe6","title":"4.1Spring ORM介绍","pathname":"/spring-framework-documentation5/dataaccess/4.0orm/4.1spring-orm","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"数据访问"},{"label":"4.ORM"}]},{"id":"-LqmjicCgUtboSwHgdhn","title":"4.2ORM集成的一般注意事项","pathname":"/spring-framework-documentation5/dataaccess/4.0orm/4.2orm-integration","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"数据访问"},{"label":"4.ORM"}]},{"id":"-Lr9ZEf7toESWigjNzo8","title":"4.3Hibernate","pathname":"/spring-framework-documentation5/dataaccess/4.0orm/4.3hibernate","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"数据访问"},{"label":"4.ORM"}]},{"id":"-Lr9ZEf8TXqoxTynRzLx","title":"4.4JPA","pathname":"/spring-framework-documentation5/dataaccess/4.0orm/4.4jpa","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"数据访问"},{"label":"4.ORM"}]},{"id":"-LrUROzVe7Rygw_wCzN5","title":"5.使用Object-XML映射封装XML","pathname":"/spring-framework-documentation5/dataaccess/5.object-xml-mappers","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"数据访问"}]},{"id":"-LuefbbgG3zphV_i2dWk","title":"Web Servlet","pathname":"/spring-framework-documentation5/webservlet","siteSpaceId":"sitesp_UQ3Iv","description":""},{"id":"-LuefbbhWe55R-i-xtIS","title":"1. Spring Web MVC","pathname":"/spring-framework-documentation5/webservlet/1.spring-web-mvc","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Servlet"}]},{"id":"-LuefbbiXHklch4-w0X1","title":"1.1 DispatcherServlet","pathname":"/spring-framework-documentation5/webservlet/1.spring-web-mvc/1.1dispatcherservlet","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Servlet"},{"label":"1. Spring Web MVC"}]},{"id":"-LueguNVBApBjd-6tv3o","title":"1.2 Filters","pathname":"/spring-framework-documentation5/webservlet/1.spring-web-mvc/1.2filters","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Servlet"},{"label":"1. Spring Web MVC"}]},{"id":"-Luf6IELzAelT-78dGYH","title":"1.3 Controllers注解","pathname":"/spring-framework-documentation5/webservlet/1.spring-web-mvc/1.3annotated-controllers","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Servlet"},{"label":"1. Spring Web MVC"}]},{"id":"-LufuzuEJw7enSD10UyU","title":"1.4 URI链接","pathname":"/spring-framework-documentation5/webservlet/1.spring-web-mvc/1.4uri-links","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Servlet"},{"label":"1. Spring Web MVC"}]},{"id":"-LufzJ5UL6tlngwQ1wyB","title":"1.5 异步请求","pathname":"/spring-framework-documentation5/webservlet/1.spring-web-mvc/1.5asynchronous-requests","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Servlet"},{"label":"1. Spring Web MVC"}]},{"id":"-Lug15r0q5jrsxbisAHb","title":"1.6 CORS","pathname":"/spring-framework-documentation5/webservlet/1.spring-web-mvc/1.6cors","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Servlet"},{"label":"1. Spring Web MVC"}]},{"id":"-Lug2PQos-R7dpUNgd9b","title":"1.7 Web Security","pathname":"/spring-framework-documentation5/webservlet/1.spring-web-mvc/1.7webservlet","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Servlet"},{"label":"1. Spring Web MVC"}]},{"id":"-Lug5uG4eEWOkoR5D6Gw","title":"1.8 HTTP Caching","pathname":"/spring-framework-documentation5/webservlet/1.spring-web-mvc/1.8http-caching","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Servlet"},{"label":"1. Spring Web MVC"}]},{"id":"-Luk0oPf-4LdC-qQlkp3","title":"1.9 View技术","pathname":"/spring-framework-documentation5/webservlet/1.spring-web-mvc/1.9view-technologies","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Servlet"},{"label":"1. Spring Web MVC"}]},{"id":"-Luk0oPgEabHz2xmHPL6","title":"1.10 MVC配置","pathname":"/spring-framework-documentation5/webservlet/1.spring-web-mvc/1.10mvc-config","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Servlet"},{"label":"1. Spring Web MVC"}]},{"id":"-Luk1X0sDH5mGqHwfIv6","title":"1.11 HTTP/2","pathname":"/spring-framework-documentation5/webservlet/1.spring-web-mvc/1.11http2","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Servlet"},{"label":"1. Spring Web MVC"}]},{"id":"-Luk3E1gUf8hFCe3Y2C-","title":"2. REST客户端","pathname":"/spring-framework-documentation5/webservlet/2.rest-clients","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Servlet"}]},{"id":"-Luk3E1hCbMcxm_ENhhD","title":"3. 测试","pathname":"/spring-framework-documentation5/webservlet/3.testing","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Servlet"}]},{"id":"-LukE3mMXcf43FoiK_pl","title":"4. WebSockets","pathname":"/spring-framework-documentation5/webservlet/4.websockets","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Servlet"}]},{"id":"-LukE3mNd_hvhpYObq_P","title":"4.1 WebSocket介绍","pathname":"/spring-framework-documentation5/webservlet/4.websockets/4.1websocket-intro","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Servlet"},{"label":"4. WebSockets"}]},{"id":"-LukeRiDioRhQ3LsBsj9","title":"4.2 WebSocket API","pathname":"/spring-framework-documentation5/webservlet/4.websockets/4.2websocketapi","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Servlet"},{"label":"4. WebSockets"}]},{"id":"-Lukn1UdOUoGmT0rGmlS","title":"4.3 SockJS Fallback","pathname":"/spring-framework-documentation5/webservlet/4.websockets/4.3sockjs-fallback","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Servlet"},{"label":"4. WebSockets"}]},{"id":"-LukxUT3VA7sfP_7Sh5Y","title":"4.4 STOMP","pathname":"/spring-framework-documentation5/webservlet/4.websockets/4.4stomp","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Servlet"},{"label":"4. WebSockets"}]},{"id":"-Lul2vKYmpnyHn4PBjyr","title":"Web Reactive","pathname":"/spring-framework-documentation5/webreactive","siteSpaceId":"sitesp_UQ3Iv","description":""},{"id":"-Lul2vKZkKxitak242rw","title":"1.Spring WebFlux","pathname":"/spring-framework-documentation5/webreactive/1.spring-webflux","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Reactive"}]},{"id":"-Lul2vK_xjvll9LJnVmq","title":"1.1 Overview","pathname":"/spring-framework-documentation5/webreactive/1.spring-webflux/1.1overview","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Reactive"},{"label":"1.Spring WebFlux"}]},{"id":"-LulBf3adTSL-T2b4myt","title":"1.2 Reactive Core","pathname":"/spring-framework-documentation5/webreactive/1.spring-webflux/1.2reactive-core","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Reactive"},{"label":"1.Spring WebFlux"}]},{"id":"-LulE1qUn7gqxnP8sTG2","title":"1.3 DispatcherHandler","pathname":"/spring-framework-documentation5/webreactive/1.spring-webflux/1.3dispatcherhandler","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Reactive"},{"label":"1.Spring WebFlux"}]},{"id":"-LulKnlmb3t1_4NyWJcp","title":"1.4 Annotated Controllers","pathname":"/spring-framework-documentation5/webreactive/1.spring-webflux/1.4annotated-controllers","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Reactive"},{"label":"1.Spring WebFlux"}]},{"id":"-LulT5PFmLEP0_3uZHbj","title":"1.5 Functional Endpoints","pathname":"/spring-framework-documentation5/webreactive/1.spring-webflux/1.5functional-endpoints","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Reactive"},{"label":"1.Spring WebFlux"}]},{"id":"-LulibfaEy2pHaT_Q2Iu","title":"1.6 URI Links","pathname":"/spring-framework-documentation5/webreactive/1.spring-webflux/1.6uri-links","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Reactive"},{"label":"1.Spring WebFlux"}]},{"id":"-Lulj7KoEtzi0kZW8yCz","title":"1.7 CORS","pathname":"/spring-framework-documentation5/webreactive/1.spring-webflux/1.7cors","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Reactive"},{"label":"1.Spring WebFlux"}]},{"id":"-LuljR557jsZPqwESpMV","title":"1.8 Web Security","pathname":"/spring-framework-documentation5/webreactive/1.spring-webflux/1.8web-security","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Reactive"},{"label":"1.Spring WebFlux"}]},{"id":"-LulltnH4jfTX2A_Cbx_","title":"1.9 View Technologies","pathname":"/spring-framework-documentation5/webreactive/1.spring-webflux/1.9view-technologies","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Reactive"},{"label":"1.Spring WebFlux"}]},{"id":"-LulmO8cUyvsOrJ3FHv3","title":"1.10 HTTP Caching","pathname":"/spring-framework-documentation5/webreactive/1.spring-webflux/1.10http-caching","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Reactive"},{"label":"1.Spring WebFlux"}]},{"id":"-Luox5yMa8xospw_QIs8","title":"1.11 WebFlux Config","pathname":"/spring-framework-documentation5/webreactive/1.spring-webflux/1.11webflux-config","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Reactive"},{"label":"1.Spring WebFlux"}]},{"id":"-Lup3Qqkb8vcYsZ_AEQN","title":"1.12 HTTP/2","pathname":"/spring-framework-documentation5/webreactive/1.spring-webflux/1.12http2","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Reactive"},{"label":"1.Spring WebFlux"}]},{"id":"-Lul2vKaPfYZjbzSRsLg","title":"2.WebClient","pathname":"/spring-framework-documentation5/webreactive/2.webclient","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Reactive"}]},{"id":"-Lul2vKbI7bSKoB6LhQK","title":"3.WebSockets","pathname":"/spring-framework-documentation5/webreactive/3.websockets","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Reactive"}]},{"id":"-Lup6wydaenrHC5r54ur","title":"4.测试","pathname":"/spring-framework-documentation5/webreactive/4.testing","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Reactive"}]},{"id":"-Lup7G4SL0hg8YvAIWFx","title":"5.Reactive库","pathname":"/spring-framework-documentation5/webreactive/5.reactive-libraries","siteSpaceId":"sitesp_UQ3Iv","description":"","breadcrumbs":[{"label":"Web Reactive"}]}]}