编程教程说明:
Spring框架,由Rod Johnson开发,是一个非常强大的反转控制(IOC)框架,以帮助分离项目组件之间的依赖关系。
在本系列教程,将多个步骤提供一些例子,用来学习和解释Spring框架。
新的 Spring 4.1 教程 (2016/8/12)
增加了关于使用Spring EL,JavaConfig,AspectJ和Spring对象/XML映射(OXM)等许多Spring 4.0 的实例教程。
Spring框架相关教程(推荐)
Spring Security教程
Spring MVC教程
Spring Boot教程
Spring JDBC教程
Spring快速入门
快速入门了解Spring框架开发的基础。
Spring hello world实例 - Spring3.0的hello world实例,在新的Spring3.0开发需要什么。
Spring松耦合的实例 - 这是一个用来演示Spring是如何使组件之间松耦合的例子。
Spring MVC教程 - Spring MVC系列教程。
Spring JavaConfig
Spring 3.0支持JavaConfig,现在可以使用注解来配置Spring。
Spring JavaConfig实例 - 使用
@Configuration
和@Bean
演示到在Spring定义的bean
。Spring JavaConfig @Import实例 - 使用
@Import
组织Bean
类模块化的实例。
Spring 依赖注入(DI)
Spring如何使用依赖注入(DO)来管理对象的依赖关系。
Spring依赖注入 (DI) - Spring如何通过应用
Setter
注入和构造器注入的依赖注入(DI)设计模式实例Spring通过setter方法注入 - 通过setter方法依赖注入Bean
Spring通过构造方法注入 - 可以通过构造方法依赖注入Bean
Spring构造方法注入类型歧义 - 构造函数注入参数类型歧义的问题总是发生在一个bean包含多个构造方法有多个参数。
Spring Bean基础
在Spring IoC容器使用类就会被认为是“Bean
”,并可在Spring bean的配置文件或者通过注解来声明。
Spring bean引用实例 - 如何指定相同或不同的
bean
配置文件中的bean
引用互相访问。注入值到Spring Bean的属性 - 演示使用三种方法注入值到
bean
的属性。加载多个Spring bean配置文件 - 开发人员总是在不同的模块文件夹归类不同的bean配置文件,这里有一个技巧,向您展示如何加载多个Spring bean 的配置文件。
Spring内部Bean实例 - 每当一个bean仅用于一个特定的属性,它总是建议将其声明为一个内部bean。
Spring bean作用域 - Bean作用域是用来决定哪些bean实例的类型应该是从Spring容器中返回给调用者。
Spring集合(List, Set, Map, and Properties)实例 - 注入值到集合类型(列表,集,映射和属性)实例。
ListFactoryBean实例 - 创建一个具体的列表集合类(ArrayList 和 LinkedList),并注入到 bean 属性。
SetFactoryBean实例 - 创建一组具体的Set集合类(HashSet和TreeSet),并注入到bean属性。
MapFactoryBean实例 - 创建一个具体的映射集合类(HashMap和TreeMap中),并注入到bean属性。
Spring注入日期到bean属性(CustomDateEditor) - 一般情况下,Spring接受日期变量,这里有一个技巧,那就是使用
CustomDateEditor
来解决。Spring PropertyPlaceholderConfigurer实例 - 通过一个特殊格式具体化部署详情到一个属性文件,并从
bean
配置文件访问获得 – ${variable}Spring bean配置继承 - 继承是非常有用,一个bean来分享共同的值,属性或配置。
Spring依赖检查 -
Spring4
中提供了依赖检查模式,以确保所要求的属性已经在bean
中设置。Spring使用@Required注解依赖检查 - 依赖检查注释模式。
自定义@Required-style注解 - 创建自定义
@Required-style
注解,相当于@Required
注解Bean InitializingBean和DisposableBean实例 - 执行
bean
初始化和销毁某些动作(接口)Bean init-method和destroy-method实例 - 执行
bean
初始化和销毁某些动作(XML)Bean @PostConstruct和@PreDestroy实例 - 执行
bean
初始化和销毁某些动作(注解)
Spring表达式语言
Spring 3.0引入了Spring表达语言,或Spring EL丰富而强大的表达式语言。
Spring EL hello world实例 - 使用 Spring 表达式语言(EL)快速入门
Spring EL bean引用实例 - 参考
bean
,bean
属性使用一个点(.
)符号。Spring EL 方法调用实例 - 直接调用Bean方法
Spring EL操作符实例 - Spring EL支持大多数标准的关系,逻辑和数学运算符。
Spring EL三元操作符(if-then-else)实例 - 有条件的检查:if else then.
Spring EL Arrays, Lists, Maps实例 - 适用于映射和列表。
Spring EL正则表达式实例 - 正则表达式来计算评估条件。
Spring EL与ExpressionParser测试 - 如何组合并用于测试Spring El。
Spring自动组件扫描
Spring是能够扫描,检测并自动注册 bean
的。
Spring自动扫描组件 - 让Spring自动扫描,检测和注册
Bean
。Spring过滤器组件自动扫描 - 过滤器自动扫描模式的某些组件实例。
Spring自动装配Bean
Spring自动装配“auto-wiring
“来装配或Bean
类,无论是在XML和注释。
Spring自动装配Beans - Spring有
5
种自动装配方式总结。Spring按类型(Type)自动装配 - 如果一个
bean
的数据类型是用其它bean
属性的数据类型,那么自动装配它。Spring按名称(Name)自动装配 - 如果一个
bean
的名称与其他bean
属性的名称是一样的,那么可以自动装配它。Spring由构造方法自动装配 - 由在构造函数的参数类型自动装配。
Spring由AutoDetect自动装配 - 选择“用构造函数自动装配”,如果默认构造函数被找到,否则使用“自动装配按类型”。
Spring使用@Autowired注解自动装配 - 例子来说明如何定义注解 “
auto-wiring
” 模式。Spring自动装配@Qualifier实例 - 在这个例子中演示确定哪些
Bean
有资格自动装配到某个字段上。
Spring AOP (面向方面编程)
Spring AOP的模块化方面横切关注点。简单地说,就是一个拦截器拦截一些方法。
Spring AOP通知实例(Advice) - 有关不同类型的 Spring 建议说明和示例。
Spring AOP实例(Pointcut, Advisor) - 有关不同类型的
Spring
的切入点和Advisor
的解释和示例。Spring AOP拦截器的顺序 - AOP拦截器的顺序会影响功能。
自动代理创建者实例 - 一个自动代理生成例子是用来为
Bean
自动创建代理对象,以避免造成许多重复的代理对象。
Spring AOP + AspectJ框架
由于Spring 2.0
中对 AspectJ
更加灵活和强大的支持。然而,本实例在 Spring3.0
中应用说明。
Spring AOP+AspectJ注解实例 - 一个例子向您展示如何将AspectJ 注解与Spring框架集成。
Spring AOP+AspectJ 在XML配置实例 - Spring AOP 使用AspectJ 在XML基本配置。
Spring Object/XML 映射器
在Spring3.0,对象到XML映射(OXM)从Spring Web服务到核心Spring框架。
Spring Object/XML映射实例 - Spring oxm+castor转换对象到XML,反之亦然。
Spring JDBC支持
Spring提供了很多辅助类简化整个 JDBC 数据库操作。
Spring+JDBC实例 - 一个例子来说明如何集成 Spring 和 JDBC。
JdbcTemplate+JdbcDaoSupport实例 - 使用Spring的
JdbcTemplate
和JdbcDaoSupport
类来简化整个JDBC数据库操作过程的一个实例。Spring JdbcTemplate查询实例 - 这里有一些例子来说明如何使用
JdbcTemplate
的query()
方法来查询或从数据库中提取数据。Spring JdbcTemplate batchUpdate()实例 - 这里是一个 BATCHUPDATE()例子用来说明如何执行批量插入操作。
Spring SimpleJdbcTemplate查询示例 - 更多的用户查询操作,或从数据库中提取数据的友好而简单的方法。
Spring SimpleJdbcTemplate batchUpdate()实例 - 使用
SimpleJdbcTemplate
类,一个Java5 的友好补充JdbcTemplate
的一个批量更新的例子。Spring SimpleJdbcTemplate类命名参数实例 - 一个例子来说明如何使用命名参数作为SQL参数值,而这仅仅是在
SimpleJdbcTemplate
中支持。
Spring Hibernate支持
Spring 提供了许多方便的类来支持 Hibernate ORM框架。
Spring+Hibernate+MySql实例
使用 Spring 和 Hibernate 的一个简单的项目。Spring + Hibernate+ MySql注解实例
使用Spring和Hibernate(注释版)的一个简单的项目。Spring AOP在Hibernate的事务管理
一个例子来说明如何管理Hibernate事务与Spring AOP。Struts + Spring + Hibernate集成
Spring、Struts和Hibernate框架集成的实例。
Spring E-mail支持
Spring 提供 MailSender
通过 JavaMail API 发送电子邮件。
通过MailSender发送电子邮件
使用Spring的MailSender通过Gmail的SMTP服务器发送电子邮件实例。在bean配置文件中的电子邮件模板
硬编码所有电子邮件属性和消息,正文内容不是一个好的做法,应该考虑在 Spring的bean配置文件中定义电子邮件模板。Spring发送带附件的Email
使用Spring来发送带附件的电子邮件示例。
Spring与其它Web框架集成
Spring集成其它Web框架。
Spring依赖注入servlet会话监听器 - Spring提供了一个“ContextLoaderListener”监听器作为一个通用的方法,以使Spring依赖注入会话监听器应用到几乎所有其他的web框架。
Struts2+Spring集成实例 - Spring和Struts2框架集成的实例。
Struts 2 + Spring + Quartz 计划程序集成示例 - 这是一个Spring + Struts 2 + Quartz集成实例。
Struts 2 + Spring + Hibernate集成实例
Spring问答
资源捆绑ResourceBundleMessageSource示例 - ResourceBundleMessageSource解决文本信息在不同地区的最常见类。
访问MessageSource的bean(MessageSourceAware) - 一个用来说明如何经由MessageSourceAware 接口的 bean 得到 MessageSource 的例子。
资源加载程序的getResource()示例 - Spring资源加载器提供了一个非常通用的getResource()方法来从文件系统,类路径或URL得到这样的资源(文本文件,媒体文件,图像文件…)。
Spring常见错误
一些 Spring 常见的错误消息:
Cannot proxy target class because CGLIB2 is not available
CGLIB is required to process @Configuration classes
java.lang.ClassNotFoundException: org.exolab.castor.xml.XMLException
java.lang.ClassNotFoundException: org.apache.xml.serialize.XMLSerializer
Spring参考文档
Spring Framework (Wiki) - http://en.wikipedia.org/wiki/Spring_Framework
Spring官方文档 - http://www.springsource.org/documentation
Spring 3.0文档 - http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/