spring-3.1.0中文版api帮助文档

合集下载

Spring参考手册

Spring参考手册

第一部分 Spring框架的概述Spring框架是一个轻量级的解决方案和为构建企业级应用程序潜在的一站式服务。

然而,Spring是模块化的,允许你只使用那些你需要的部分,而忽略其他部分。

你可以在使用Struts时用Spring的IoC 容器,但你也可以只使用Hibernate 集成代码或JDBC抽象层。

Spring框架支持声明式事务管理、通过RMI或web服务远程访问你的逻辑,还有多种方式处理数据的持久化。

它还提供一个全能的MVC框架,并且能将AOP移植进你的软件。

Spring被设计为非侵入式的,意味着你的逻辑代码完全不必依赖于此框架。

虽然一些基于数据访问技术和Spring的库会存在于你的集成层(例如数据访问层),但是你的其他代码很容易隔离这些依赖。

1.开始使用Spring这篇手册提供了关于spring框架的详细信息,不仅有全面的特性,还有一些关于spring包含的潜在的概念(例如“依赖注入”)的背景知识。

如果你才刚刚开始,也许你应该从低级版的"Getting Started" 手册开始,从bbb://spring.io.访问。

为了更容易消化,这篇手册是专注于任务式。

2.Spring框架的介绍Spring框架是一个支持开发Java应用程序而提供全面的基础设施的Java平台,Spring处理基础部分从而你可以专注于你的应用。

spring 让你能够通过POJOs和向POJOs应用无侵入的企业服务就可以构建你的应用。

这些不仅能应用到Java SE而且还能应用到Java EE.一些作为一个开发者能够使用spring平台优势的例子●使Java方法可以执行数据库事务而不用去处理事务API●使本地Java方法可以执行远程过程而不用去处理远程API●使本地Java方法可以拥有管理操作而不用去处理JMXAPI●使本地Java方法可以执行消息处理而不用去处理JMSAPI2.1 依赖注入和控制反转Java应用程序——一个宽松的专业术语,小到一个Appletes大到运行在n层服务器上的企业级程序—通常由互相协作的对象而形成的适当的应用程序。

API中文文档

API中文文档

Activities
(编者译:activity可以理解为显示主页面,一些文本框,下拉框都布置在这个主页面上。这个主页面也是和用户的交互页面。)一个activity代表一个用户可以尝试操作的可视化用户界面An activity presents a visual user interface for one focused endeavor the user can undertake. 例如,一个activity 可以表示一个用户可以选择的菜单项目列表,可以显示一个带标题的图片。一个短信息程序可以有一个activity 显示要发送信息的联系人列表,第二个activitys可以写信息给选择的联系人。另一些activitys可以浏览旧的信息或者改变设置。通过它们一起工作来组成一个组合的用户界面。每一个activity都依赖于其他activity。每个都被实现implement为Activity基类的子类。
对于这样的工作方式,当应用的任何一部分被其他应用说需要时系统必须能启动这个应用的进程。因此和其他大多数的系统的应用不同,Android应用中对于任何部分都没有一个单一的入口(例如没有main()函数)。恰恰相反的它有必不可少的组件,当系统需要时,系统可以实例化和运行这些组件回收。有四种这样的组件:
每一个activity 会被会一个默认的窗口来设计。典型的,窗口填充屏幕,但是他可以比屏幕下,并且可以浮动在其他窗口的上面。一个activity 也可以用其他另外的窗口-例如为了用户的响应在activity的中部调用弹出对话框。或者当用户在屏幕上选择一个特定的项目窗口会显示用户的重要信息。
窗口的可视化组件提一个视图对象的继承。这个对象由View 类起源。每个视图控制窗口中一个特殊的长方形空间。父类视图包括内容和安排其子类的布局。叶子视图(继承关系的最底层)在它们控制的矩形和直接响应用户动作的空间中描绘。因此视图是在用户发生activity的交互的地方。例如一个视图可以显示一个小的图片并且发起一个动作当用户点击这个图片。Android有许多的你可以用的只读视图,包括按钮,文本框,滚动条,菜单,选择框等。

Spring Boot 3.1.2 参考文档说明书

Spring Boot 3.1.2 参考文档说明书

Spring Boot Reference Documentation Phillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch, Andy Wilkinson, Marcel Overdijk, Christian Dupuis, Sébastien Deleuze, Michael Simons, Vedran Pavić, Jay Bryant, Madhura Bhave, Eddú Meléndez, ScottFrederick, Moritz HalbritterVersion 3.1.2Table of Contents1. Legal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22. Getting Help. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33. Documentation Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.1. First Steps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.2. Upgrading From an Earlier Version. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.3. Developing With Spring Boot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.4. Learning About Spring Boot Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.5. Web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.6. Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.7. Messaging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.8. IO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.9. Container Images. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.10. Moving to Production. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.11. GraalVM Native Images. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.12. Advanced Topics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64. Getting Started. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4.1. Introducing Spring Boot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4.2. System Requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74.2.1. Servlet Containers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74.2.2. GraalVM Native Images. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 4.3. Installing Spring Boot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84.3.1. Installation Instructions for the Java Developer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8Maven Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Gradle Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94.3.2. Installing the Spring Boot CLI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Manual Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Installation with SDKMAN!. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 OSX Homebrew Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 MacPorts Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Command-line Completion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Windows Scoop Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.4. Developing Your First Spring Boot Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124.4.1. Prerequisites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Maven. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Gradle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124.4.2. Setting up the project with Maven. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.4.3. Setting up the project with Gradle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Gradle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154.4.5. Writing the Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15The @RestController and @RequestMapping Annotations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 The @SpringBootApplication Annotation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 The “main” Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174.4.6. Running the Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Maven. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Gradle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184.4.7. Creating an Executable Jar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Maven. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Gradle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.5. What to Read Next. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215. Upgrading Spring Boot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.1. Upgrading From 1.x. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.2. Upgrading to a New Feature Release. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.3. Upgrading the Spring Boot CLI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225.4. What to Read Next. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226. Developing with Spring Boot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 6.1. Build Systems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246.1.1. Dependency Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246.1.2. Maven. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246.1.3. Gradle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246.1.4. Ant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256.1.5. Starters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 6.2. Structuring Your Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306.2.1. Using the “default” Package. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306.2.2. Locating the Main Application Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 6.3. Configuration Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326.3.1. Importing Additional Configuration Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326.3.2. Importing XML Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 6.4. Auto-configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326.4.1. Gradually Replacing Auto-configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336.4.2. Disabling Specific Auto-configuration Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6.5. Spring Beans and Dependency Injection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 6.6. Using the @SpringBootApplication Annotation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6.7. Running Your Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396.7.1. Running From an IDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396.7.2. Running as a Packaged Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396.7.3. Using the Maven Plugin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396.8. Developer Tools. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406.8.1. Diagnosing Classloading Issues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416.8.2. Property Defaults. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416.8.3. Automatic Restart. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Logging Changes in Condition Evaluation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Excluding Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Watching Additional Paths. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Disabling Restart. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Using a Trigger File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Customizing the Restart Classloader. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Known Limitations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486.8.4. LiveReload. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486.8.5. Global Settings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Configuring File System Watcher. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496.8.6. Remote Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50Running the Remote Client Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Remote Update. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 6.9. Packaging Your Application for Production. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526.10. What to Read Next. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527. Core Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 7.1. SpringApplication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537.1.1. Startup Failure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547.1.2. Lazy Initialization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557.1.3. Customizing the Banner. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567.1.4. Customizing SpringApplication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577.1.5. Fluent Builder API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587.1.6. Application Availability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59Liveness State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Readiness State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Managing the Application Availability State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597.1.7. Application Events and Listeners. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637.1.8. Web Environment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647.1.9. Accessing Application Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647.1.10. Using the ApplicationRunner or CommandLineRunner. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657.1.11. Application Exit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667.1.12. Admin Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687.1.13. Application Startup tracking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 7.2. Externalized Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697.2.1. Accessing Command Line Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71Profile Specific Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Importing Additional Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Importing Extensionless Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Using Configuration Trees. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Property Placeholders. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Working With Multi-Document Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Activation Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 7.2.4. Encrypting Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 7.2.5. Working With YAML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83Mapping YAML to Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Directly Loading YAML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 7.2.6. Configuring Random Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 7.2.7. Configuring System Environment Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 7.2.8. Type-safe Configuration Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85JavaBean Properties Binding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Constructor Binding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Enabling @ConfigurationProperties-annotated Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Using @ConfigurationProperties-annotated Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Third-party Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Relaxed Binding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Merging Complex Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Properties Conversion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 @ConfigurationProperties Validation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 @ConfigurationProperties vs. @Value. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 7.3. Profiles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 7.3.1. Adding Active Profiles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 7.3.2. Profile Groups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 7.3.3. Programmatically Setting Profiles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 7.3.4. Profile-specific Configuration Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 7.4. Logging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 7.4.1. Log Format. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 7.4.2. Console Output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120Color-coded Output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 7.4.3. File Output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 7.4.4. File Rotation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 7.4.5. Log Levels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 7.4.6. Log Groups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123Environment Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 7.4.10. Log4j2 Extensions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128Profile-specific Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Environment Properties Lookup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Log4j2 System Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 7.5. Internationalization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 7.6. JSON. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 7.6.1. Jackson. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131Custom Serializers and Deserializers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Mixins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 7.6.2. Gson. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 7.6.3. JSON-B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 7.7. Task Execution and Scheduling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 7.8. Testing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 7.8.1. Test Scope Dependencies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 7.8.2. Testing Spring Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 7.8.3. Testing Spring Boot Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138Detecting Web Application Type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Detecting Test Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Using the Test Configuration Main Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 Excluding Test Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Using Application Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Testing With a Mock Environment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Testing With a Running Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Customizing WebTestClient. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Using JMX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Using Metrics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Using Tracing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Mocking and Spying Beans. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Auto-configured Tests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Auto-configured JSON Tests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Auto-configured Spring MVC Tests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Auto-configured Spring WebFlux Tests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Auto-configured Spring GraphQL Tests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Auto-configured Data Cassandra Tests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Auto-configured Data Couchbase Tests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 Auto-configured Data Elasticsearch Tests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174。

MyBatis-spring中文帮助文档

MyBatis-spring中文帮助文档

简介What is MyBatis-Spring?MyBatis-Spring 会帮助你将MyBatis 代码无缝地整合到Spring 中。

使用这个类库中的类, Spring 将会加载必要的MyBatis 工厂类和session 类。

这个类库也提供一个简单的方式来注入MyBatis 数据映射器和SqlSession 到业务层的bean 中。

而且它也会处理事务, 翻译MyBatis 的异常到Spring 的DataAccessException 异常(数据访问异常,译者注)中。

最终,它并不会依赖于MyBatis,Spring 或MyBatis-Spring 来构建应用程序代码。

Motivation正如第二版那样,Spring 3.0 也仅支持iBatis2。

那么,我们就想将MyBatis3 的支持添加到Spring3.0(参考Spring Jira 中的问题)中。

而不幸的是,Spring 3.0 的开发在MyBatis 3.0 官方发布前就结束了。

因为Spring 开发团队不想发布一个基于非发布版的MyBatis 的整合支持,那么Spring 官方的支持就不得不继续等待了。

要在Spring 中支持MyBatis,MyBatis 社区认为现在应该是自己团结贡献者和有兴趣的人一起来开始将Spring 的整合作为MyBatis 社区的子项目的时候了。

Requirements在开始使用MyBatis-Spring 的整合之前,很重要的一点是,你要熟悉Spring 和MyBatis 这两个框架还有和它们有关的术语,本手册中不会提供二者的基本内容,安装和配置教程。

MyBatis-Spring requires Java 5 or higher and the following MyBatis and Spring versions:特别感谢那些使得本项目成为现实的人们(按字母顺序排序)。

Eduardo Macarron, Hunter Presnall和Putthibong Boonbong的编码, 测试和文档修改工作; Andrius Juozapaitis, Giovanni Cuccu,Raj Nagappan和Tomas Pinos的贡献;而Simone Tripodi发现了这些人并把他们带入项目之中。

Spring ldap 中文文档

Spring ldap 中文文档

Spring ldap 中文文档(一)第一章介绍1.1 概览Spring-LDAP是一个java简单应用在LDAP开发的一个库,是采取类似Spring JDBC中的JdbcTemplate的原理建立的。

它使得我们完全没必要考虑LdapContext的生成和关闭以及NamingEnumeration的循环。

在Spring's DataAccessException基础上建立的Spring-LDAP提供一个更加全面且不用检查的异常处理机制。

作为补充,Spring-LDAP也有了动态建立LDAP filters和DNs(Distinguished Names)的类。

举个例子来说,如实现一个获取所有人员进入并返回存有他们名字的list的方法。

用JDBC,我们得先生成一个connection,用statement执行一个query。

然后我们要遍历resultset,找到我们需要的那个column,把它放入到list。

类似地,用Java LDAP,我们先生成一个context,用search filter执行一个search。

然后循环遍历resulting namingenumeration,找到需要的那个attribute,把它加入到list。

按传统的实现方法,用Java LDAP实现查找人员名称看起来应该是这样的:package com.example.dao;public class TraditionalPersonDaoImpl implements PersonDao {public List getAllPersonNames() {Hashtable env = new Hashtable();env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, “ldap://localhost:389/dc=example,dc=com”); DirContext ctx;try {ctx = new InitialDirContext(env);} catch (NamingException e) {throw new RuntimeException(e);}LinkedList list = new LinkedList();NamingEnumeration results = null;try {SearchControls controls = new SearchControls();controls.setSearchScope(SearchControls.SUBTREE_SCOPE);results = ctx.search("", "(objectclass=person)", controls);while (results.hasMore()) {SearchResult searchResult = (SearchResult) results.next();Attributes attributes = searchResult.getAttributes();Attribute attr = attributes.get("cn");String cn = (String) attr.get();list.add(cn);}} catch (NameNotFoundException e) {// The base context was not found.// Just clean up and exit.} catch (NamingException e) {throw new RuntimeException(e);} finally {if (results != null) {try {results.close();} catch (Exception e) {// Never mind this.}}if (ctx != null) {try {ctx.close();} catch (Exception e) {// Never mind this.}}}return list;}}通过spring的LDAP AttributesMapper,我们可以通过下面的代码实现完全一样的功能:package com.example.dao;public class PersonDaoImpl implements PersonDao {private LdapTemplate ldapTemplate;public void setLdapTemplate(LdapTemplate ldapTemplate) {this.ldapTemplate = ldapTemplate;}public List getAllPersonNames() {return ldapTemplate.search("", "(objectclass=person)",new AttributesMapper() {public Object mapFromAttributes(Attributes attrs)throws NamingException {return attrs.get("cn").get();}});}}1.2 包用Spring LDAP最小需要:spring-ldap(spring-ldap包)spring-core(用于框架内部的丰富的工具类)spring-beans(方便操作java beans的接口和类)spring-context(增加通过一致API为应用对象获取资源的能力)spring-dao(使经常性的错误处理跟使用中的数据访问分开的异常处理机制)commons-logging(简单的日志处理,内部使用)在您的Spring context文件中设置需要的beans,然后把LdapTemplate注入到您的数据访问对象:<beans>...<bean id="contextSource" class="org.springframework.ldap.support.LdapContextSource"> <property name="url" value="ldap://localhost:389" /><property name="base" value="dc=example,dc=com" /><property name="userName" value="cn=Manager" /><property name="password" value="secret" /></bean><bean id="ldapTemplate" class="org.springframework.ldap.LdapTemplate"><constructor-arg ref="contextSource" /></bean></beans>1.3 包架构这部分包提供了Spring LDAP源代码的逻辑包架构的视图。

spring-mvc 中文文档

spring-mvc 中文文档

Spring框架 参考文档
一个团队
Github
Spring Framework 2.5翻译计 划 Spring Framework 4.x参考文 档 Spring Framework 4.x中文翻 译 Spring 中 文文档3.1
满江红机构
-
waylau
Github
翻译了Spring文档的简介、新特性和容器IOC 部分
1
URI构造 为控制器和方法指定URI 在视图中为控制器和方法指定URI 地区信息 获取时区信息 Accept请求头解析器AcceptHeaderLocaleResolver Cookie解析器CookieLocaleResolver Session解析器SessionLocaleResolver 地区更改拦截器LocaleChangeInterceptor 主题 themes 关于主题:概览 定义主题 主题解析器 Spring的multipart(文件上传)支持 概述 使用MultipartResolver与Commons FileUpload传输文件 Servlet 3.0下的MultipartResolver 处理表单中的文件上传 处理客户端发起的文件上传请求 异常处理 处理器异常解析器HandlerExceptionHandler @ExceptionHandler注解 处理一般的Spring MVC异常 使用@ResponseStatus注解业务异常 Servlet默认容器错误页面的定制化 Web安全 "约定优于配置"的支持 控制器类名-处理器映射ControllerClassNameHandlerMapping 模型ModelMap(ModelAndView) 视图-请求与视图名的映射 HTTP缓存支持 HTTP请求头Cache-Control 对静态资源的HTTP缓存支持 在控制器中设置Cache-Control、ETag和Last-Modified响应头

Spring_3.0.1_中文官方文档

Spring_3.0.1_中文官方文档

这次发布的Spring Security-3.0.1 是一个bug fix 版,主要是对3.0 中存在的一些问题进行修正。

文档中没有添加新功能的介绍,但是将之前拼写错误的一些类名进行了修正,建议开发者以这一版本的文档为参考。

另:Spring Security 从2010-01-01 以后,版本控制从SVN 换成了GIT,我们在翻译文档的时候,主要是根据SVN 的变化来进行文档内容的比对,这次换成GIT 后,感觉缺少了之前那种文本比对工具,如果有对GIT 熟悉的朋友,还请推荐一下文本比对的工具,谢谢。

序言I. 入门1. 介绍1.1. Spring Security 是什么?1.2. 历史1.3. 发行版本号1.4. 获得Spring Security1.4.1. 项目模块1.4.1.1. Core - spring-security-core.jar1.4.1.2. Web - spring-security-web.jar1.4.1.3. Config - spring-security-config.jar1.4.1.4. LDAP - spring-security-ldap.jar1.4.1.5. ACL - spring-security-acl.jar1.4.1.6. CAS - spring-security-cas-client.jar1.4.1.7. OpenID - spring-security-openid.jar1.4.2. 获得源代码2. Security 命名空间配置2.1. 介绍2.1.1. 命名空间的设计2.2. 开始使用安全命名空间配置2.2.1. 配置web.xml2.2.2. 最小<http> 配置2.2.2.1. auto-config 包含了什么?2.2.2.2. 表单和基本登录选项2.2.3. 使用其他认证提供器2.2.3.1. 添加一个密码编码器2.3. 高级web 特性2.3.1. Remember-Me 认证2.3.2. 添加HTTP/HTTPS 信道安全2.3.3. 会话管理2.3.3.1. 检测超时2.3.3.2. 同步会话控制2.3.3.3. 防止Session 固定攻击2.3.4. 对OpenID 的支持2.3.4.1. 属性交换2.3.5. 添加你自己的filter2.3.5.1. 设置自定义AuthenticationEntryPoint2.4. 保护方法2.4.1. <global-method-security> 元素2.4.1.1. 使用protect-pointcut 添加安全切点2.5. 默认的AccessDecisionManager2.5.1. 自定义AccessDecisionManager2.6. 验证管理器和命名空间3. 示例程序3.1. Tutorial 示例3.2. Contacts3.3. LDAP 例子3.4. CAS 例子3.5. Pre-Authentication 例子4. Spring Security 社区4.1. 任务跟踪4.2. 成为参与者4.3. 更多信息II. 结构和实现5. 技术概述5.1. 运行环境5.2. 核心组件5.2.1. SecurityContextHolder, SecurityContext 和Authentication 对象5.2.1.1. 获得当前用户的信息5.2.2. UserDetailsService5.2.3. GrantedAuthority5.2.4. 小结5.3. 验证5.3.1. 什么是Spring Security 的验证呢?5.3.2. 直接设置SecurityContextHolder 的内容5.4. 在web 应用中验证5.4.1. ExceptionTranslationFilter5.4.2. AuthenticationEntryPoint5.4.3. 验证机制5.4.4. 在请求之间保存SecurityContext 。

spring开发参考手册中文

spring开发参考手册中文
1. 侵略性的 API(你的代码依赖于 EJB) 2. 对容器的依赖(你的代码不能在 EJB 容器之外工作) 3. 只提供固定的一组功能,不具备配置能力 4. 5. 启动时间长 6. 部署过程取决于特定的产品,无法通用
轻量级容器的目标是避免上面所有这些麻烦ing!
Table 3.1. Examples of properties
表达式
说明
name
表示属性“name”,对应的方法是 getName()或者 isName()或者
setName()

表示属性“ account”的嵌套属性“name”,对应的方法是
getAccount().setName()或者 getAccount().getName()
考虑如下两个类: public class Company {
private String name; private Employee managingDirector; public String getName() {
return ; } public void setName(String name) {
这一章首先介绍了轻量级容器的总体设计,随后将简单介绍 Spring 除 IoC 实现之外的特性。简 单说,这些特性包括:
* 内置 AOP 支持,例如在 EJB 容器之外提供声明式事务管理
/5team/springframework
Spring reference 中文版 1.0
account[2]
表示带索引属性“account”的第三个元素。带索引属性可以是 array
类型、list 类型或者其他普通的 collection
下面你会找到几个使用 BeanWrapper 接口读取和设置属性的例子。

spring security3.1高级详细开发指南

spring security3.1高级详细开发指南

Spring Security3的使用方法有4种:一种是全部利用配置文件,将用户、权限、资源(url)硬编码在xml文件中。

二种是用户和权限用数据库存储,而资源(url)和权限的对应采用硬编码配置。

三种是细分角色和权限,并将用户、角色、权限和资源均采用数据库存储,并且自定义过滤器,代替原有的FilterSecurityInterceptor过滤器,并分别实现AccessDecisionManager、InvocationSecurityMetadataSourceService和UserDetailsService,并在配置文件中进行相应配置。

四是修改spring security的源代码,主要是修改InvocationSecurityMetadataSourceService 和UserDetailsService两个类。

前者是将配置文件或数据库中存储的资源(url)提取出来加工成为url和权限列表的Map供Security使用,后者提取用户名和权限组成一个完整的(UserDetails)User对象,该对象可以提供用户的详细信息供AuthentationManager进行认证与授权使用。

该方法理论上可行,但是比较暴力,不推荐使用。

本文有两个例子,我在简单例子章节实现了第一种方法。

在复杂例子章节实现了第二种和第三种方法组合使用的例子。

简单例子通俗易懂,不再赘述。

复杂例子及其使用和扩展,我将穿插详细的配置注释和讲解,包括整个程序的执行过程。

简单例子创建web工程如下图所示:配置如下图所示:单击Finish即可。

把从spring网站下载的spring-security-3.1.0.RELEASE解压,并将其中的spring-security-samples-contacts-3.1.0.RELEASE.war解压,把WEB-INF\lib中的jar包拷贝到如下图所示:修改配置web.xml如下:<?xml version="1.0"encoding="UTF-8"?><web-app version="2.5"xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><!--加载Spring XML配置文件 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:securityConfig.xml</param-value></context-param><!-- Spring Secutiry3.1的过滤器链配置 --><filter><filter-name>springSecurityFilterChain</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProx y</filter-class></filter><filter-mapping><filter-name>springSecurityFilterChain</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- Spring 容器启动监听器 --><listener><listener-class>org.springframework.web.context.ContextLoaderList ener</listener-class></listener><!--系统欢迎页面--><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>在src中创建securityConfig.xml内容如下:<?xml version="1.0"encoding="UTF-8"?><b:beans xmlns="/schema/security" xmlns:b="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-3.0.xsd/schema/security /schema/security/spring-security-3.1.xs d"><!--登录页面不过滤 --><http pattern="/login.jsp"security="none"/><http access-denied-page="/accessDenied.jsp"><form-login login-page="/login.jsp"/><!--访问/admin.jsp资源的用户必须具有ROLE_ADMIN的权限 --><intercept-url pattern="/admin.jsp"access="ROLE_ADMIN"/><!--访问/**资源的用户必须具有ROLE_USER的权限 --><intercept-url pattern="/**"access="ROLE_USER"/><session-management><concurrency-control max-sessions="1"error-if-maximum-exceeded="fa lse"/></session-management></http><authentication-manager><authentication-provider><user-service><user name="cyu"password="sap123"authorities="ROLE_USER"/> </user-service></authentication-provider></authentication-manager></b:beans>在WebRoot中创建login.jsp内容如下:<%@page language="java"import="java.util.*"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>登录</title></head><body><form action="j_spring_security_check"method="POST"><table><tr><td>用户:</td><td><input type='text'name='j_username'></td></tr><tr><td>密码:</td><td><input type='password'name='j_password'></td></tr><td><input name="reset"type="reset"></td><td><input name="submit"type="submit"></td></tr></table></form></body></html>在WebRoot中创建accessDenied.jsp,内容如下:<%@page language="java"import="java.util.*"pageEncoding="utf-8"%><!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>访问拒绝</title></head><body>您的访问被拒绝,无权访问该资源!<br></body></html>在WebRoot中创建admin.jsp内容如下:<%@page language="java"import="java.util.*"pageEncoding="utf-8"%><!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'admin.jsp' starting page</title></head><body>欢迎来到管理员页面. <br></body></html>修改index.jsp内容如下:<%@page language="java"import="java.util.*"pageEncoding="UTF-8"%><%@taglib prefix="sec"uri="/security/tag s"%><!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'index.jsp' starting page</title></head><body>这是首页,欢迎<sec:authentication property="name"/>!<br><a href="admin.jsp">进入admin页面</a><a href="other.jsp">进入其它页面</a></body>添加工程如下图所示:点击Finish即可,然后运行工程如下图所示:测试页面如下:输入用户:cyu密码:sap123,然后回车:点击“进入admin页面”超链,得到如下图所示:复杂例子修改securityConfig.xml内容如下:<?xml version="1.0"encoding="UTF-8"?><beans:beans xmlns="/schema/security" xmlns:beans="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-3.0.xsd/schema/security/schema/security/spring-security-3.1.xs d"><!--登录页面不过滤 --><http pattern="/login.jsp" security="none"/><http access-denied-page="/accessDenied.jsp"><form-login login-page="/login.jsp"/><!--访问/admin.jsp资源的用户必须具有ROLE_ADMIN的权限 --><intercept-url pattern="/admin.jsp"access="ROLE_ADMIN"/><!--访问/**资源的用户必须具有ROLE_USER的权限 --><intercept-url pattern="/**"access="ROLE_USER"/><session-management><concurrency-control max-sessions="1"error-if-maximum-exceeded="fa lse"/></session-management><!--增加一个filter,这点与Acegi是不一样的,不能修改默认的filter了,这个filter位于FILTER_SECURITY_INTERCEPTOR之前 --><custom-filter ref="myFilter"before="FILTER_SECURITY_INTERCEPTOR"/></http><!--一个自定义的filter,必须包含authenticationManager,accessDecisionManager,securityMetadataSource三个属性,我们的所有控制将在这三个类中实现,解释详见具体配置 --><beans:bean id="myFilter"class="com.aostarit.spring.security.MyFilterS ecurityInterceptor"><beans:property name="authenticationManager"ref="authenticationManager"/><beans:property name="accessDecisionManager"ref="myAccessDecisionManagerBean"/><beans:property name="securityMetadataSource"ref="securityMetadataSource"/></beans:bean><!--验证配置,认证管理器,实现用户认证的入口,主要实现UserDetailsService接口即可 --><authentication-manager alias="authenticationManager"><authentication-provideruser-service-ref="myUserDetailService"><!--如果用户的密码采用加密的话<password-encoder hash="md5" />--></authentication-provider></authentication-manager><!--在这个类中,你就可以从数据库中读入用户的密码,角色信息,是否锁定,账号是否过期等 --><beans:bean id="myUserDetailService"class="com.aostarit.spring.security.MyUserDetailService"/><!--访问决策器,决定某个用户具有的角色,是否有足够的权限去访问某个资源 --><beans:bean id="myAccessDecisionManagerBean"class="com.aostarit.spring.security.MyAccessDecisionManager"></beans:bean><!--资源源数据定义,将所有的资源和权限对应关系建立起来,即定义某一资源可以被哪些角色访问 --><beans:bean id="securityMetadataSource"class="com.aostarit.spring.security.MyInvocationSecurityMetadataSourc e"/></beans:beans>编写UrlMatcher接口,内容如下:package com.aostarit.spring.security.tool;publicabstractinterface UrlMatcher{publicabstract Object compile(String paramString);publicabstractboolean pathMatchesUrl(Object paramObject, String paramString);publicabstract String getUniversalMatchPattern();publicabstractboolean requiresLowerCaseUrl();}这个接口是以前spring版本中的,现在的spring版本中不存在,由于项目需要且使用方便,故加入到项目当中。

Spring Security-3.0.1 中文官方文档(翻译版)

Spring Security-3.0.1 中文官方文档(翻译版)

Spring Security-3.0.1 中文官方文档(翻译版)这次发布的Spring Security-3.0.1 是一个bug fix 版,主要是对3.0 中存在的一些问题进行修正。

文档中没有添加新功能的介绍,但是将之前拼写错误的一些类名进行了修正,建议开发者以这一版本的文档为参考。

另:Spring Security 从2010-01-01 以后,版本控制从SVN 换成了GIT,我们在翻译文档的时候,主要是根据SVN 的变化来进行文档内容的比对,这次换成GIT 后,感觉缺少了之前那种文本比对工具,如果有对GIT 熟悉的朋友,还请推荐一下文本比对的工具,谢谢。

序言I. 入门1. 介绍1.1. Spring Security 是什么?1.2. 历史1.3. 发行版本号1.4. 获得Spring Security1.4.1. 项目模块1.4.1.1. Core - spring-security-core.jar1.4.1.2. Web - spring-security-web.jar1.4.1.3. Config - spring-security-config.jar1.4.1.4. LDAP - spring-security-ldap.jar1.4.1.5. ACL - spring-security-acl.jar1.4.1.6. CAS - spring-security-cas-client.jar1.4.1.7. OpenID - spring-security-openid.jar1.4.2. 获得源代码2. Security 命名空间配置2.1. 介绍2.1.1. 命名空间的设计2.2. 开始使用安全命名空间配置2.2.1. 配置web.xml2.2.2. 最小<http> 配置2.2.2.1. auto-config 包含了什么?2.2.2.2. 表单和基本登录选项2.2.3. 使用其他认证提供器2.2.3.1. 添加一个密码编码器2.3. 高级web 特性2.3.1. Remember-Me 认证2.3.2. 添加HTTP/HTTPS 信道安全2.3.3. 会话管理2.3.3.1. 检测超时2.3.3.2. 同步会话控制2.3.3.3. 防止Session 固定攻击2.3.4. 对OpenID 的支持2.3.4.1. 属性交换2.3.5. 添加你自己的filter2.3.5.1. 设置自定义AuthenticationEntryPoint2.4. 保护方法2.4.1. <global-method-security> 元素2.4.1.1. 使用protect-pointcut 添加安全切点2.5. 默认的AccessDecisionManager2.5.1. 自定义AccessDecisionManager2.6. 验证管理器和命名空间3. 示例程序3.1. Tutorial 示例3.2. Contacts3.3. LDAP 例子3.4. CAS 例子3.5. Pre-Authentication 例子4. Spring Security 社区4.1. 任务跟踪4.2. 成为参与者4.3. 更多信息II. 结构和实现5. 技术概述5.1. 运行环境5.2. 核心组件5.2.1. SecurityContextHolder, SecurityContext 和Authentication 对象5.2.1.1. 获得当前用户的信息5.2.2. UserDetailsService5.2.3. GrantedAuthority5.2.4. 小结5.3. 验证5.3.1. 什么是Spring Security 的验证呢?5.3.2. 直接设置SecurityContextHolder 的内容5.4. 在web 应用中验证5.4.1. ExceptionTranslationFilter5.4.2. AuthenticationEntryPoint5.4.3. 验证机制5.4.4. 在请求之间保存SecurityContext 。

Starring3.1-功能扩展说明-V1.2

Starring3.1-功能扩展说明-V1.2

Starring3.X功能扩展说明Starring 3.1研发项目北京先进数通信息技术有限公司S t a r r i n g 3.1研发项目组编写说明标题:Starring3.X功能扩展说明类别:文档存放位置:06、用户手册\编辑软件:Microsoft Word XP 中文版版本历史:目录编写说明 (1)目录 (I)1. 前言 ................................................................................................................................. 错误!未定义书签。

1.1.编写目的.................................................................................................................错误!未定义书签。

1.2.阅读建议.................................................................................................................错误!未定义书签。

2. STARRING3.0 VS 2.0 (3)2.1.定制平台结构更清晰 (3)2.2.开发和部署分开 (3)2.3.增加数据继承、映射功能 (3)2.4.增加公共流程(模板) (3)2.5.流程定制平台实现 (3)2.6.新增设计文档导出 (3)2.7.新增调试功能 (4)2.8.强化平台监控管理,增加动态刷新功能 (4)2.9.多机协作和负载均衡功能得到完善 (4)2.10.增加自动任务、自动冲正服务 (4)2.11.平台与环境分开,平台安装自动化 (4)2.12.报文定制功能极大增强 (4)2.13.平台规范化、DTA/ALA标准化 (4)2.14.易用性、可扩展性更强 (5)2.15.路由功能大大增强 (5)2.16.日志更清晰 (5)2.17.复用和框架能力更强 (5)3. STARRING3.0.1.1 VS 3.0.1.83 (5)3.1.资源列表增加查找功能 (5)3.2.任务逻辑属性修改 (6)3.3.根据XML报文自动生成数据元素、报文定制 (6)3.4.标记集定制优化 (6)3.5.数据库3层封装扩展 (6)3.6.报文定制优化 (6)3.7.通讯接口导入优化 (7)3.8.用户密码加密 (7)3.9.定制资源锁定功能 (7)3.10.根据运行数据库表结构生成数据元素和报文格式的XML文件 (7)3.11.增量上线查询 (7)3.12.报文解析组织功能扩充 (7)4. STARRING3.1 VS 3.0.1.83 (7)4.1.多种部署方案 (7)4.2.变量池API扩充 (8)4.3.变量池内存优化 (8)4.4.运行平台变量池扩充 (8)4.5.元件定制 (8)4.6.增加项目公用节点 (8)4.7.定制资源分类 (9)1.Starring3.0 VS2.01.1.定制平台结构更清晰定制平台区分业务,子业务,公共资源等,使得开发资源结构变得清晰,不再是所以dta/ala 混在一块。

Spring框架参考文档-5.0.0-中文完整版

Spring框架参考文档-5.0.0-中文完整版

Spring框架参考文档-5.0.0-中文完整版AuthorsRod Johnson , Juergen Hoeller , Keith Donald , Colin Sampaleanu , Rob Harrop , Thomas Risberg , Alef Arendsen , Darren Davison , Dmitriy Kopylenko , Mark Pollack , Thierry Templier , Erwin Vervaet , Portia Tung , Ben Hale , Adrian Colyer , John Lewis , Costin Leau , Mark Fisher , Sam Brannen , Ramnivas Laddad , Arjen Poutsma , Chris Beams , Tareq Abedrabbo , Andy Clement , Dave Syer , Oliver Gierke , Rossen Stoyanchev , Phillip Webb , Rob Winch , Brian Clozel , Stephane Nicoll , Sebastien Deleuze版本号:5.0.0.RELEASECopyright ? 2004-2016Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically.文档官网:https://docs.spring.io/spring/docs/5.0.0.RELEASE/spring-framework-reference/index.html现在官网的5.0.0已经在2017年9月28日出了release版,为此翻译了5.0.0版本(从4.3.10升级到此版本,如果还在使用4.3.10版本,请看本人的前一个版本),翻译前后历时15天,十多次的修改和校对。

spring中文教程pdf

spring中文教程pdf
从此开始,这本书伴随笔者度过了整整一个月的业余时间……..
这本书,也就是出自 Rod Johnson 的:
《Expert One-on-One J2EE Design and Development》
此书已经由电子工业出版社出版,译版名为《J2EE 设计开发编程指南》。
半年后,一个新的 Java Framework 发布,同样出自 Rod Johnson 的手笔,这自然 引起了笔者极大的兴趣,这就是 SpringFramework。
另外,笔者近来试图就日本、印度的软件开发模式进行一些调研。如果诸位可以赠阅日本、印度 软件研发过程中的需求、设计文档以供研究,感激不尽!
September 2, 2004 So many open source projects. Why not Open your Documents?
SpringFrameWork Developer’s Guide
文档说明
联络 xiaxin(at)
Version 0.6
(at) 为 email @ 符号
发布记录 版本 0.5 0.6
日期 2004.6.1 2004.9.1
内容。
OpenDoc 版权说明
本文档版权归原作者所有。 在免费、且无任何附加条件的前提下,可在网络媒体中自由传播。 如需部分或者全文引用,请事先征求作者意见。 如果本文对您有些许帮助,表达谢意的最好方式,是将您发现的问题和文档改进意见及时反馈给 作者。当然,倘若有时间和能力,能为技术群体无偿贡献自己的所学为最好的回馈。
SpringFramework 实 际 上 是 Expert One-on-One J2EE Design and Development 一书中所阐述的设计思想的具体实现。在 One-on-One 一书中,Rod Johnson 倡导 J2EE 实用主义的设计思想,并随书提供了一个初步的开发框架实现 (interface21 开发包)。而 SpringFramework 正是这一思想的更全面和具体的体现。 Rod Johnson 在 interface21 开发包的基础之上,进行了进一步的改造和扩充,使其发展 为一个更加开放、清晰、全面、高效的开发框架。

spring3.1(一)

spring3.1(一)

1.Spring基础1.1.开发应用时的一些问题1.1.1.问题一:依赖在程序中要分层,且层与层之间要使用接口,就会有如下代码:以上代码是有问题的,即“在Service中引用的具体的实现类”,这样就和具体的实现类耦合在了一起,如果要更换(比如要换成OracleUserDaoImpl),就需要修改源代码。

怎么样才能不依赖实现类呢?可以使用工厂模式,让UserDao的实现在在工厂中生成,而工厂是可以配置的,如下:以上代码就是通过工厂实现的与实现类的解耦,这种情况下如果想要更新别外一个实现类,只需要修改配置文件就可以了。

如果对象有很多,且互相依赖,并且有的对象需要单例模式,有的则需要多个实例,这又怎么办呢?那就要再完善一下这个工厂类了,让工厂可以处理这些问题,这就是一个复杂一点的工厂类了。

1.2.概念:控制反转(IOC,Inversion of Control)public class PersonServiceBean {private PersonDao personDao = new PersonDaoBean();public void save(Person person){personDao.save(person);}}PersonDaoBean 是在应用内部创建及维护的。

所谓控制反转就是应用本身不负责依赖对象的创建及维护,而是由外部容器负责的。

这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。

控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。

所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。

IoC是一个很大的概念,可以用不同的方式来实现。

例如:<1>依赖查找(Dependency Lookup):容器提供回调接口和上下文环境给组件。

Spring中文开发详细手册

Spring中文开发详细手册
private static Map users = new HashMap();
static{
User defaultAdmin = new User("Moxie","pass");
users.put(defaultAdmin.getName(),defaultAdmin);
}
public MemoryUserPersist (){
= name;
this.password = password;
}
//相应的get/set方法
………..
}
持久化类有两个方法,分别在内存中保存和获取User对象。代码如下:
MemoryUserPersist.java
public class MemoryUserPersist {
Spring
Spring的基础架构起源于2000年早期,它是Rod Johnson在一些成功的商业项目中构建的基础设施。
在2002后期,Rod Johnson发布了《Expert One-on-One J2EE Design and Development》一书,并随书提供了一个初步的开发框架实现——interface21开发包,interface21就是书中阐述的思想的具体实现。后来,Rod Johnson在interface21开发包的基础之上,进行了进一步的改造和扩充,使其发展为一个更加开放、清晰、全面、高效的开发框架——Spring。
JavaBean提供了应用程序配置的最好方法。
在Java中,已检查异常(Checked exception)被过度使用。框架不应该迫使你捕获不能恢复的异常。
Spring
Spring不是一个“标准”。Spring不是J2EE规范的一部分,没有通过JCP(Java Community Process)的审核认可。

spring3-1入门_ioc_d

spring3-1入门_ioc_d
类内部控制。IoC是一种让服务消费者不直接依赖于服务提供者的组件设计方 式,是一种减少类与类之间依赖的设计原则。
n DI——Dependency Injection(依赖注入) 即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态
的将某种依赖关系注入到组件之中。 依赖注入的目标并非为软件系统带来更多的功能,而是为了提升组件重用
整理课件
Spring3架构图
Spring3.5
整理课件
Spring有什么-5
n Spring3总共包含了大约20个模块,这些模块又被组织成为: 核心容器部分、数据访问/集成部分、Web部分、AOP部分和测试支持几个部分。
n 核心容器部分(Core Container)又包含如下部分 1:Core和Beans模块提供了Spring最基础的功能,提供IoC和依赖注入特性。这里的
DAO提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有 的错误代码。还提供了一种比编程性更好的声明性事务管理方法,不仅仅是实现 了特定接口,而且对所有的POJOs(plain old Java objects)都适用。 n ORM包
ORM 封装包提供了常用的“对象/关系”映射APIs的集成层。 其中包括 JPA、JDO、Hibernate 和 iBatis 。利用ORM封装包,可以混合使用所有Spring 提供的特性进行“对象/关系”映射,如前边提到的简单声明性事务管理。
他的技术整合,如EJB、JMS等) 6:Web应用框架(SpringMVC) 7:更多技术,如:Spring的Security、Spring的Web Flow、Spring的
WebService等等
整理课件
Spring框架2.5版时官方给出的概述图

Spring3.1

Spring3.1

Spring简介还是通过旧版本学习最新的版本。

2003年发布的第一个版本,现在最新的是3.1。

Rod Johnson官方网站:Spring的优点:●低侵入式设计,代码污染低●独立于各种应用服务器,可以真正实现Write Once,Run Anywhere的承诺●Spring的DI(Dependency Injection)机制降低了业务对象替换的复杂性●Spring并不完全依赖于Spring组件,开发者可自由选用Spring框架的部分或全部。

Spring3.1分层架构Spring的安装配置Spring HelloWorld1、下载spring-framework-3.1.0.RELEASE-with-docs.zip2、新建Project,把Spring的jar包引入到项目的ClassPath中commons-logging-1.1.1-bin.zip的jar包也需要引入Spring3.1下载包解压后的dist目录下3、在ClassPath里面新建Spring配置文件applicationContext.xml4、新建一个Java类HelloWorlda)提供构造器b)定义一个测试属性info,并提供setter56Spring的控制反转(IOC)和依赖注入(DI)控制反转(IOC)控制反转(Inversion Of Control)就是当一个对象需要依赖于另一个对象时,通常由调用对象来创建被调用对象的实例。

在Spring中,创建被调用对象的工作不再由调用对象来完成,而是由Spring容器来完成,然后注入调用对象,这就是Spring的控制反转。

Spring IOC容器的关键点:●必须将被管理的对象定义到Spring配置文件中●必须定义构造器和需要注入的属性的setter,让Spring将对象注入过来依赖注入(DI)依赖注入(Dependency Injection)是时下的“流行语”,也是目前最优秀的解耦方式,使用依赖注入时,JavaEE应用中的各种组件不需要以硬编码的方式耦合在一起。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Spring 3.x权威开发指南:实施Java EE 6的利器2011年8月31日目录序 (VIII)前言 (X)1借助Spring 3.1实施Java EE 6 (1)1.1Java EE 6编程模型讨论 (1)1.1.1Java EE 6够敏捷,No! (1)1.1.2盘旋于具体与抽象之间 (2)1.2挖掘Spring 3.1的架构价值 (3)1.2.1精耕细作于Java EE 6平台 (3)1.2.2面向Spring的SpringSource Tool Suite集成开发工具 (3)1.2.3全面拥抱OSGi 4.2 (4)1.2.4开发者决定一切 (4)1.3下载及构建Spring 3.1 (5)1.3.1下载Spring 3.1正式发布版 (5)1.3.2基于SVN库持续构建Spring源码 (6)1.4小结 (7)2控制反转容器 (8)2.1DI及Spring DI概述 (8)2.1.1面向Java ME/Java SE的BeanFactory (8)2.1.2面向Java EE的ApplicationContext (9)2.2多种依赖注入方式 (9)2.2.1设值注入 (9)2.2.2构建器注入 (11)2.2.3属性注入 (12)2.2.4方法注入 (12)2.3借助Autowiring策略智能注入协作者 (13)2.3.1<bean/>元素的autowire属性 (13)2.3.2基于@Required注解加强协作者管理 (14)2.3.3基于@Autowired或@Inject注解的另一Autowiring策略 (16)2.3.4借助primary属性或@Qualifier注解细粒度控制Autowiring策略 (16)2.4资源操控 (19)2.5将DI容器宿主到Web容器中 (19)2.6外在化配置应用参数 (19)2.7Spring受管Bean的作用范围 (19)2.8Bean Validation集成支持 (19)2.9回调接口集合及触发顺序 (19)2.10<util/>命名空间 (20)2.11值得重视的若干DI特性 (20)2.11.1depends-on属性 (20)2.11.2别名(Alias) (20)2.11.3工厂Bean和工厂方法 (20)2.11.4<p/>命名空间 (21)2.11.5抽象和子Bean (21)2.12基于注解(Annotation)方式配置DI容器 (21)2.13Spring表达式语言(SpEL)支持 (22)2.13.1核心接口及类 (22)2.13.2基于API方式使用 (22)2.13.3基于XML方式使用 (22)2.13.4基于Annotation注解使用 (22)2.13.5SpEL语法速查 (22)2.14回调接口集合及其触发顺序 (22)2.14.1BeanNameAware回调接口 (22)2.14.2BeanClassLoaderAware回调接口 (23)2.14.3BeanFactoryAware回调接口 (23)2.14.4ResourceLoaderAware回调接口 (23)2.14.5ApplicationEventPublisherAware回调接口 (23)2.14.6MessageSourceAware回调接口 (23)2.14.7ApplicationContextAware回调接口 (23)2.14.8@PostConstruct注解 (23)2.14.9InitializingBean回调接口 (23)2.14.10<bean/>元素的init-method属性 (24)2.14.11@PreDestroy注解 (24)2.14.12DisposableBean回调接口 (24)2.14.13<bean/>元素的destroy-method属性 (24)2.15小结 (24)3面向切面编程 (25)3.1AOP及Spring AOP基础 (25)3.1.1细说AOP (25)3.1.2Spring AOP基础概念 (25)3.2AspectJ 6初探 (25)3.3老式Spring AOP (25)3.4基于@AspectJ的Spring AOP (26)3.5基于<aop:config/>元素的AOP (26)3.5.1巧用<aop:include/>元素 (26)3.6在AspectJ 6应用中启用@Configurable注解 (26)3.6.1显式使用AnnotationBeanConfigurerAspect切面 (26)3.6.2阐述@Configurable注解 (28)3.6.3通过META-INF/aop.xml(或aop-ajc.xml)控制启用的切面集合 (30)3.6.4<context:spring-configured/>元素 (31)3.6.5初探<context:load-time-weaver/>元素 (31)3.7小结 (31)4DAO层集成支持 (33)4.1RDBMS持久化操作抽象支持 (33)4.2.1JDBC最佳实践 (33)4.3事务集成支持 (33)4.4集成测试支持 (33)4.5在AspectJ 6应用中启用@Transactional注解 (33)4.6小结 (33)5Hibernate、JPA集成 (34)5.1Hibernate集成支持 (34)5.2JPA集成支持 (34)5.3智能处理Java EE容器中的装载期织入(LTW) (34)5.4小结 (35)6O/X Mapping集成支持 (36)6.1O/X Mapping集成支持 (36)6.1.1Marshaller及Unmarshaller接口 (37)6.2实践XMLBeans集成支持 (37)6.2.1借助Ant生成XMLBeans JAR (38)6.2.2XmlBeansMarshaller实现类 (39)6.2.3<oxm:xmlbeans-marshaller/>元素 (40)6.3小结 (40)7集成Java EE其他容器服务 (41)7.1简化JNDI操作 (41)7.2集成EJB 3.1 (41)7.3线程池及任务调度集成支持 (41)7.4集成JMS (41)7.5集成JavaMail (41)7.6集成分布式操作 (41)7.7集成JMX (42)7.8集成Java EE连接器架构 (42)8Web层集成支持 (43)8.1Spring Web MVC框架 (43)8.2Spring Portlet MVC框架 (43)8.3REST架构风格 (43)8.4小结 (43)9高级Spring 3.0特性 (44)9.1优雅销毁DI容器 (44)9.2小结 (44)10附录A:安装及使用SpringSource Tool Suite (45)10.1获得SpringSource Tool Suite (45)10.2安装SpringSource Tool Suite (45)10.3使用SpringSource Tool Suite (47)10.3.1针对Spring 3.1的支持 (47)10.3.2针对Spring Web Flow的支持 (49)10.3.3针对Spring Batch的支持 (50)10.3.4针对Spring Roo的支持 (50)11附录B:Spring 3.1内置的命名空间 (51)11.1<beans/>命名空间 (51)11.2<context/>命名空间 (51)11.3<util/>命名空间 (51)12附录C:Spring Web Services (52)12.1文档驱动的Web服务 (52)12.2面向OXM的Web服务实现策略 (52)12.3Web服务安全 (52)13附录D:Spring Web Flow (53)13.2探索Spring Web Flow (53)14附录E:Spring BlazeDS Integration (54)14.1Flex-RIA王者 (54)14.2简化BlazeDS的使用 (54)14.3深入到Spring BlazeDS Integration中 (54)15附录F:Spring Roo (55)15.1快速研发之道 (55)15.1.1Spring Roo概述 (55)15.2Spring Roo架构哲学 (55)15.3深入到Spring Roo中 (55)16附录G:相关资料 (56)16.1图书 (56)16.2网站 (56)序从2003年开始,开源Spring一直在同Java EE携手走来。

Spring 2.0之前(包括1.x、2.0版本)的版本一直在跟进J2EE 1.4-的发展,而Spring 2.5跟进Java EE 5,Spring 3.0开始跟进Java EE 6的发展,而Spring 3.1全面跟进Java EE 6,包括Java SE 7集成支持。

当然,这种跟进的深度和广度远远超越了Java EE本身。

Java EE被企业生产环境广泛采纳,这在很大程度上要归功于这样几方面的因素。

其一,Java本身的跨平台能力,即其可移植性强。

其二,Java EE服务器内置了大量的重要容器服务,比如事务服务、JNDI服务及连接池服务,这些服务可供企业应用选用。

其三,开发者可以基于Java EE API研发企业应用,并部署到企业生产环境中。

然而,Java EE暴露给开发者的客户视图存在重大缺陷,尤其是应用同Java EE容器打交道的过程很复杂,加上直接基于Java EE API研发企业应用的生产效率低下(指研发效率,不是运行效率),并且非常容易出问题,比如数据库连接泄漏。

自Spring诞生以来,这些问题已经成为了历史。

Spring 针对Java EE容器服务及Java EE API提供了抽象和集成支持,进而得到开发者的广泛拥护。

为更好地针对Java EE容器服务及Java EE API提供抽象和集成支持,Spring提供了由控制反转容器和AOP(面向切面编程)组成的元框架。

注意,这一元框架能够被使用到任意场合,而不只是在Java EE容器中。

值得提醒的是,Spring并不能取代Java EE,但借助Spring能降低实施Java EE的门槛,并加快采纳Java EE的速度。

最终,Spring还能够确保企业应用的质量是一流的。

因此,Java EE是前提,没有Java EE的发展,Spring就不会出现。

相关文档
最新文档