罗德·约翰逊(Rod Johnson)创建的Spring框架是一个功能非常强大的Inversion of control(IoC)框架,可帮助分离项目组件的依赖关系。
在本系列教程中,它提供了许多使用Spring框架的分步示例和说明。
新的Spring 3.0教程(23/06/2011)
添加了许多有关使用Spring EL,JavaConfig,AspectJ和Spring Object / XML映射(oxm)的Spring 3.0教程。 有关Spring 3.0的新功能,您可以参考此Spring 3.0官方参考 。
Spring快速入门
快速入门,了解Spring框架开发的基本知识。
- 春天你好世界的例子
Maven + Spring 2.5.6你好世界示例。 - Spring 3.0 Hello World示例 (Spring 3.0)
Maven + Spring 3.0你好世界示例,新的Spring 3.0开发需要什么。 - 弹簧松耦合示例
一个例子展示了Spring如何使组件松耦合。
Spring JavaConfig(Spring 3.0)
Spring 3.0支持JavaConfig,现在您可以使用批注在Spring中进行配置。
- Spring 3 JavaConfig示例
演示在Spring中使用@Configuration和@Bean定义bean - Spring 3 JavaConfig @Import示例
演示使用@Import来组织模块化的Bean。
Spring依赖注入(DI)
Spring如何做依赖注入(DI)来管理对象依赖。
- Spring依赖注入(DI)
Spring如何通过Setter注入和构造器注入来应用依赖注入(DI)设计模式。 - 通过设置方法进行弹簧DI
通过setter方法进行依赖注入bean。 - 通过构造器进行Spring DI
通过构造函数注入一个bean。 - Spring中构造函数注入类型的歧义
构造函数注入参数类型含糊不清的问题总是在Bean中发生,该bean包含具有多个参数的多个构造函数方法。
豆基本
您需要在Spring Ioc容器中使用的所有类均被视为“ bean”,并在Spring bean配置文件中或通过注释进行声明。
- Spring bean参考示例
通过在相同或不同的bean配置文件中指定bean引用,bean如何相互访问。 - 在Spring中将值注入bean属性
将值注入bean属性的三种方法。 - 加载多个Spring bean配置文件
开发人员总是将不同的bean配置文件归类到不同的modules文件夹中,这是一个技巧,向您展示如何加载多个Spring bean配置文件。 - Spring内部bean示例
每当将bean仅用于一个特定属性时,总是建议将其声明为内部bean。 - Spring bean范围示例
Bean作用域用于确定应将哪种类型的Bean实例从Spring容器返回给调用者。 - Spring Collections(列表,集合,地图和属性)示例
将值注入集合类型(列表,集合,映射和属性)的示例。 - ListFactoryBean示例
创建一个具体的List集合类(ArrayList和LinkedList),并将其注入bean属性。 - SetFactoryBean示例
创建一个具体的Set集合类(HashSet和TreeSet),并将其注入bean属性。 - MapFactoryBean示例
创建一个具体的Map集合类(HashMap和TreeMap),并将其注入bean属性。 - Spring将Date注入bean属性– CustomDateEditor
通常,Spring接受日期变量,这是使用CustomDateEditor进行处理的提示。 - Spring PropertyPlaceholderConfigurer示例
将部署详细信息外部化为属性文件,并通过特殊格式$ {variable}从bean配置文件进行访问。 - Spring bean配置继承
继承对于bean共享通用值,属性或配置非常有用。 - Spring依赖检查
Spring带有4种依赖检查模式,以确保在bean中设置了必需的属性。 - 使用@Required注释进行Spring依赖项检查
注释模式下的依赖性检查。 - 自定义@Required样式注释
创建一个自定义@Required样式的注释,该注释与@Required注释等效。 - Bean InitializingBean和DisposableBean示例
在bean初始化和销毁时执行某些操作。 (接口) - Bean初始化方法和销毁方法示例
在bean初始化和销毁时执行某些操作。 (XML) - Bean @PostConstruct和@PreDestroy示例
在bean初始化和销毁时执行某些操作。 (注解)
Spring表达语言(Spring3.0)
Spring 3.0引入了功能丰富且功能强大的表达式语言,称为Spring表达式语言或Spring EL。
- Spring EL Hello世界示例
快速开始使用Spring表达式语言(EL)。 - Spring EL bean参考示例
引用bean,bean属性使用点(。)符号。 - Spring EL方法调用示例
直接调用bean方法。 - Spring EL运算符示例
Spring EL支持大多数标准的关系,逻辑和数学运算符。 - Spring EL三元运算符(if-then-else)示例
有条件检查,否则。 - Spring EL Arrays,Lists,Maps示例
与地图和列表一起使用。 - Spring EL正则表达式示例
用于评估条件的正则表达式。 - 使用ExpressionParser测试Spring EL
向您展示如何轻松测试Spring El。
Spring自动组件扫描
Spring能够自动扫描,检测和注册您的bean。
- Spring自动扫描组件
启用Spring以自动扫描,检测并注册您的bean。 - 自动扫描中的Spring Filter组件
在自动扫描模式下过滤某些组件的示例。
弹簧自动接线豆
Spring的“自动装配”模式可自动以XML和注释形式装配或装豆。
- 弹簧自动接线豆
Spring的5种类型的自动接线模式的摘要。 - 弹簧按类型自动接线
如果bean的数据类型与其他bean属性的数据类型兼容,请自动连接它。 - 弹簧按名称自动装配
如果bean的名称与另一个bean属性的名称相同,请自动连接它。 - 构造器的自动装配
实际上,它是通过构造函数参数中的Type自动装配的。 - 通过AutoDetect自动装配弹簧
这意味着如果找到默认构造函数,则选择“按构造器自动装配”,否则使用“按类型自动装配”。 - 使用@Autowired注释的Spring自动装配
展示如何在注释中定义“自动装配”模式的示例。 - Spring自动装配@Qualifier示例
标识哪个bean可以自动连接到字段的示例。
Spring AOP(面向方面的编程)
Spring AOP在各个方面将跨领域关注点模块化。 简单地说,是一个拦截器来拦截某些方法。
- Spring AOP示例–建议
有关不同类型的Spring建议的示例和解释。 - Spring AOP示例– Pointcut,顾问
有关不同类型的Spring的Pointcut和Advisor的示例和说明。 - Spring AOP拦截器序列
AOP拦截器的顺序将影响功能。 - 自动代理创建者示例
一个自动代理创建器示例,可以为您的bean自动创建代理对象,有助于避免创建许多重复的代理对象。
Spring AOP + AspectJ框架
自从Spring 2.0开始,AspectJ就得到了支持,更加灵活和强大。 但是,该示例在Spring 3.0中得到了演示。
- Spring AOP + AspectJ注释示例 (Spring 3.0)
一个示例向您展示如何将AspectJ注释与Spring框架集成。 - XML配置示例中的Spring AOP + AspectJ (Spring 3.0)
使用XML基础配置中带有AspectJ的Spring AOP。
Spring对象/ XML映射器(Spring 3.0)
在Spring 3.0中,对象到XML的映射(OXM)从Spring Web Services移到了核心Spring Framework。
- Spring Object / XML映射示例
Spring oxm + castor,将Object转换为XML,反之亦然。
Spring JDBC支持
Spring提供了许多帮助程序类,以简化整个JDBC数据库操作。
- Spring + JDBC示例
一个示例,展示了如何集成Spring和JDBC。 - JdbcTemplate + JdbcDaoSupport示例
使用Spring的JdbcTemplate和JdbcDaoSupport类简化整个JDBC数据库操作过程的示例。 - JdbcTemplate查询示例
以下是一些示例,展示了如何使用JdbcTemplate query()方法从数据库查询或提取数据。 - JdbcTemplate batchUpdate()示例
一个batchUpdate()示例,以显示如何执行批量插入操作。 - SimpleJdbcTemplate查询示例
从数据库查询或提取数据的更加用户友好和简单的方法。 - SimpleJdbcTemplate batchUpdate()示例
另一个批处理更新示例使用SimpleJdbcTemplate,它是JdbcTemplate的java5友好补充。 - SimpleJdbcTemplate中的命名参数示例
一个示例,说明如何使用命名参数作为SQL参数值,并且仅在SimpleJdbcTemplate中支持此示例。
Spring Hibernate支持
Spring附带了许多方便的类来支持Hibernate ORM框架。
- Maven + Spring + Hibernate + MySql示例
一个使用Spring和Hibernate的简单项目。 - Maven +(Spring + Hibernate)注释+ MySql示例
一个使用Spring和Hibernate(注释版本)的简单项目。 - Hibernate中的Spring AOP事务管理
一个示例,说明如何使用Spring AOP管理Hibernate事务。 - Struts + Spring + Hibernate集成
将Spring与Struts和Hibernate框架集成的示例。
Spring电子邮件支持
Spring的MailSender提供了通过JavaMail API发送电子邮件的功能。
- 通过MailSender发送电子邮件
使用Spring的MailSender通过Gmail SMTP服务器发送电子邮件的示例。 - Bean配置文件中的电子邮件模板
在方法主体中硬编码所有电子邮件属性和消息内容不是一个好习惯,您应该考虑在Spring的Bean配置文件中定义电子邮件模板。 - 发送带有附件的电子邮件
使用Spring发送带有附件的电子邮件的示例。
Spring计划支持
Spring在JDK计时器和Quartz框架中都有很好的支持。
- Spring + JDK Timer调度程序示例
有关Spring如何使用JDK计时器安排作业的文章。 - Spring + Quartz调度程序示例
关于Spring如何通过Quartz框架计划作业的文章。 - Spring + Struts + Quartz调度程序示例
将Spring与Struts集成在一起,并通过Quartz框架安排作业。
将Spring与其他Web框架集成
Spring与其他Web框架集成。
- Servlet会话侦听器中的Spring依赖项注入
Spring附带了一个“ ContextLoaderListener”侦听器,作为在会话侦听器和几乎所有其他Web框架中启用Spring依赖项注入的通用方法。 - Struts + Spring集成
将Spring与Struts 1.x框架集成的示例。 - Struts 2 + Spring集成示例
将Spring与Struts 2框架集成的示例。 - JSF 2.0 + Spring集成示例
将JSF 2.0与Spring框架集成的示例。 - JSF 2.0 + Spring + Hibernate集成示例
将JSF 2.0 + Spring + Hibernate框架集成在一起的示例。 - Wicket + Spring集成示例
将Wicket与Spring框架集成的示例。 - Struts 2 + Spring + Quartz调度程序集成示例
集成Spring + Struts 2 + Quartz的示例。 - Struts 2 + Spring + Hibernate集成示例
集成Spring + Struts 2 + Hibernate的示例。
Spring常见问题
- 在Eclipse中安装Spring IDE
有关如何在Eclipse中安装Spring IDE的文章。 - 资源包与ResourceBundleMessageSource示例
ResourceBundleMessageSource是解决不同语言环境的文本消息的最常见类。 - 在bean中访问MessageSource(MessageSourceAware)
一个示例,说明如何通过MessageSourceAware接口在bean中获取MessageSource。 - 使用getResource()示例的资源加载器
Spring的资源加载器提供了一种非常通用的getResource()方法,用于从文件系统,类路径或URL获取资源(文本文件,媒体文件,图像文件等)。
Spring常见错误
一些Spring常见错误消息。
- ClassNotFoundException:org.springframework.web.context.ContextLoaderListener
- 由于CGLIB2不可用,因此无法代理目标类
- 需要CGLIB处理@Configuration类
- java.lang.ClassNotFoundException:org.exolab.castor.xml.XMLException
- java.lang.ClassNotFoundException:org.apache.xml.serialize.XMLSerializer