Spring教程

Spring框架,由Rod Johnson开发,是一个非常强大的反转控制(IOC)框架,以帮助分离项目组件之间的依赖关系。

在本系列教程,将多个步骤提供一些例子,用来学习和解释Spring框架。
新的 Spring 4.1 教程 (2016/8/12)
增加了关于使用Spring EL,JavaConfig,AspectJ和Spring对象/XML映射(OXM)等许多Spring 4.0 的实例教程。

Spring框架相关教程(推荐)

Spring快速入门

快速入门了解Spring框架开发的基础。

  1. Spring hello world实例 - Spring3.0hello world实例,在新的Spring3.0开发需要什么。
  2. Spring松耦合的实例 - 这是一个用来演示Spring是如何使组件之间松耦合的例子。
  3. Spring MVC教程 - Spring MVC系列教程。

Spring JavaConfig

Spring 3.0支持JavaConfig,现在可以使用注解来配置Spring。

  1. Spring JavaConfig实例 - 使用@Configuration@Bean演示到在Spring定义的bean
  2. Spring JavaConfig @Import实例 - 使用@Import组织Bean类模块化的实例。

Spring 依赖注入(DI)

Spring如何使用依赖注入(DO)来管理对象的依赖关系。

  1. Spring依赖注入 (DI) - Spring如何通过应用Setter注入和构造器注入的依赖注入(DI)设计模式实例
  2. Spring通过setter方法注入 - 通过setter方法依赖注入Bean
  3. Spring通过构造方法注入 - 可以通过构造方法依赖注入Bean
  4. Spring构造方法注入类型歧义 - 构造函数注入参数类型歧义的问题总是发生在一个bean包含多个构造方法有多个参数。

Spring Bean基础

Spring IoC容器使用类就会被认为是“Bean”,并可在Spring bean的配置文件或者通过注解来声明。

  1. Spring bean引用实例 - 如何指定相同或不同的bean配置文件中的bean引用互相访问。
  2. 注入值到Spring Bean的属性 - 演示使用三种方法注入值到bean的属性。
  3. 加载多个Spring bean配置文件 - 开发人员总是在不同的模块文件夹归类不同的bean配置文件,这里有一个技巧,向您展示如何加载多个Spring bean 的配置文件。
  4. Spring内部Bean实例 - 每当一个bean仅用于一个特定的属性,它总是建议将其声明为一个内部bean。
  5. Spring bean作用域 - Bean作用域是用来决定哪些bean实例的类型应该是从Spring容器中返回给调用者。
  6. Spring集合(List, Set, Map, and Properties)实例 - 注入值到集合类型(列表,集,映射和属性)实例。
  7. ListFactoryBean实例 - 创建一个具体的列表集合类(ArrayList 和 LinkedList),并注入到 bean 属性。
  8. SetFactoryBean实例 - 创建一组具体的Set集合类(HashSet和TreeSet),并注入到bean属性。
  9. MapFactoryBean实例 - 创建一个具体的映射集合类(HashMap和TreeMap中),并注入到bean属性。
  10. Spring注入日期到bean属性(CustomDateEditor) - 一般情况下,Spring接受日期变量,这里有一个技巧,那就是使用CustomDateEditor来解决。
  11. Spring PropertyPlaceholderConfigurer实例 - 通过一个特殊格式具体化部署详情到一个属性文件,并从bean配置文件访问获得 – ${variable}
  12. Spring bean配置继承 - 继承是非常有用,一个bean来分享共同的值,属性或配置。
  13. Spring依赖检查 - Spring4中提供了依赖检查模式,以确保所要求的属性已经在bean中设置。
  14. Spring使用@Required注解依赖检查 - 依赖检查注释模式。
  15. 自定义@Required-style注解 - 创建自定义@Required-style注解,相当于 @Required 注解
  16. Bean InitializingBean和DisposableBean实例 - 执行 bean 初始化和销毁某些动作(接口)
  17. Bean init-method和destroy-method实例 - 执行 bean 初始化和销毁某些动作(XML)
  18. Bean @PostConstruct和@PreDestroy实例 - 执行 bean 初始化和销毁某些动作(注解)

Spring表达式语言

Spring 3.0引入了Spring表达语言,或Spring EL丰富而强大的表达式语言。

  1. Spring EL hello world实例 - 使用 Spring 表达式语言(EL)快速入门
  2. Spring EL bean引用实例 - 参考beanbean属性使用一个点(.)符号。
  3. Spring EL 方法调用实例 - 直接调用Bean方法
  4. Spring EL操作符实例 - Spring EL支持大多数标准的关系,逻辑和数学运算符。
  5. Spring EL三元操作符(if-then-else)实例 - 有条件的检查:if else then.
  6. Spring EL Arrays, Lists, Maps实例 - 适用于映射和列表。
  7. Spring EL正则表达式实例 - 正则表达式来计算评估条件。
  8. Spring EL与ExpressionParser测试 - 如何组合并用于测试Spring El。

Spring自动组件扫描

Spring是能够扫描,检测并自动注册 bean 的。

  1. Spring自动扫描组件 - 让Spring自动扫描,检测和注册Bean
  2. Spring过滤器组件自动扫描 - 过滤器自动扫描模式的某些组件实例。

Spring自动装配Bean

Spring自动装配“auto-wiring“来装配或Bean类,无论是在XML和注释。

  1. Spring自动装配Beans - Spring5种自动装配方式总结。
  2. Spring按类型(Type)自动装配 - 如果一个 bean 的数据类型是用其它 bean 属性的数据类型,那么自动装配它。
  3. Spring按名称(Name)自动装配 - 如果一个 bean 的名称与其他bean属性的名称是一样的,那么可以自动装配它。
  4. Spring由构造方法自动装配 - 由在构造函数的参数类型自动装配。
  5. Spring由AutoDetect自动装配 - 选择“用构造函数自动装配”,如果默认构造函数被找到,否则使用“自动装配按类型”。
  6. Spring使用@Autowired注解自动装配 - 例子来说明如何定义注解 “auto-wiring” 模式。
  7. Spring自动装配@Qualifier实例 - 在这个例子中演示确定哪些Bean有资格自动装配到某个字段上。

Spring AOP (面向方面编程)

Spring AOP的模块化方面横切关注点。简单地说,就是一个拦截器拦截一些方法。

  1. Spring AOP通知实例(Advice) - 有关不同类型的 Spring 建议说明和示例。
  2. Spring AOP实例(Pointcut, Advisor) - 有关不同类型的 Spring 的切入点和 Advisor 的解释和示例。
  3. Spring AOP拦截器的顺序 - AOP拦截器的顺序会影响功能。
  4. 自动代理创建者实例 - 一个自动代理生成例子是用来为Bean自动创建代理对象,以避免造成许多重复的代理对象。

Spring AOP + AspectJ框架

由于Spring 2.0中对 AspectJ 更加灵活和强大的支持。然而,本实例在 Spring3.0 中应用说明。

  1. Spring AOP+AspectJ注解实例 - 一个例子向您展示如何将AspectJ 注解与Spring框架集成。
  2. Spring AOP+AspectJ 在XML配置实例 - Spring AOP 使用AspectJ 在XML基本配置。

Spring Object/XML 映射器

在Spring3.0,对象到XML映射(OXM)从Spring Web服务到核心Spring框架。

  1. Spring Object/XML映射实例 - Spring oxm+castor转换对象到XML,反之亦然。

Spring JDBC支持

Spring提供了很多辅助类简化整个 JDBC 数据库操作。

  1. Spring+JDBC实例 - 一个例子来说明如何集成 SpringJDBC
  2. JdbcTemplate+JdbcDaoSupport实例 - 使用SpringJdbcTemplateJdbcDaoSupport类来简化整个JDBC数据库操作过程的一个实例。
  3. Spring JdbcTemplate查询实例 - 这里有一些例子来说明如何使用JdbcTemplatequery()方法来查询或从数据库中提取数据。
  4. Spring JdbcTemplate batchUpdate()实例 - 这里是一个 BATCHUPDATE()例子用来说明如何执行批量插入操作。
  5. Spring SimpleJdbcTemplate查询示例 - 更多的用户查询操作,或从数据库中提取数据的友好而简单的方法。
  6. Spring SimpleJdbcTemplate batchUpdate()实例 - 使用SimpleJdbcTemplate类,一个Java5 的友好补充 JdbcTemplate 的一个批量更新的例子。
  7. Spring SimpleJdbcTemplate类命名参数实例 - 一个例子来说明如何使用命名参数作为SQL参数值,而这仅仅是在SimpleJdbcTemplate中支持。

Spring Hibernate支持

Spring 提供了许多方便的类来支持 Hibernate ORM框架。

  1. Spring+Hibernate+MySql实例
    使用 Spring 和 Hibernate 的一个简单的项目。
  2. Spring + Hibernate+ MySql注解实例
    使用Spring和Hibernate(注释版)的一个简单的项目。
  3. Spring AOP在Hibernate的事务管理
    一个例子来说明如何管理Hibernate事务与Spring AOP。
  4. Struts + Spring + Hibernate集成
    Spring、Struts和Hibernate框架集成的实例。

Spring E-mail支持

Spring 提供 MailSender 通过 JavaMail API 发送电子邮件。

  1. 通过MailSender发送电子邮件
    使用Spring的MailSender通过Gmail的SMTP服务器发送电子邮件实例。
  2. 在bean配置文件中的电子邮件模板
    硬编码所有电子邮件属性和消息,正文内容不是一个好的做法,应该考虑在 Spring的bean配置文件中定义电子邮件模板。
  3. Spring发送带附件的Email
    使用Spring来发送带附件的电子邮件示例。

Spring与其它Web框架集成

Spring集成其它Web框架。

  1. Spring依赖注入servlet会话监听器 - Spring提供了一个“ContextLoaderListener”监听器作为一个通用的方法,以使Spring依赖注入会话监听器应用到几乎所有其他的web框架。
  2. Struts2+Spring集成实例 - Spring和Struts2框架集成的实例。
  3. Struts 2 + Spring + Quartz 计划程序集成示例 - 这是一个Spring + Struts 2 + Quartz集成实例。
  4. Struts 2 + Spring + Hibernate集成实例

Spring问答

  1. 资源捆绑ResourceBundleMessageSource示例 - ResourceBundleMessageSource解决文本信息在不同地区的最常见类。
  2. 访问MessageSource的bean(MessageSourceAware) - 一个用来说明如何经由MessageSourceAware 接口的 bean 得到 MessageSource 的例子。
  3. 资源加载程序的getResource()示例 - Spring资源加载器提供了一个非常通用的getResource()方法来从文件系统,类路径或URL得到这样的资源(文本文件,媒体文件,图像文件…)。

Spring常见错误

一些 Spring 常见的错误消息:

Spring参考文档