Spring教程
Spring框架,由Rod Johnson开发,是一个非常强大的反转控制(IOC)框架,以帮助分离项目组件的依赖关系。在本系列教程,将多个步骤提供一些例子,用来学习和解释Spring框架。新的 Spring 4.1 教程 (2015/12/12) 增加了关于使用Spring EL,JavaConfig,AspectJ和Spring对象/XML映射(OXM)等许多Spring 4.0 的实例教程。
Spring快速入门
快速入门了解Spring框架开发的基础。
- 1.0、Spring hello world实例 Spring3.0的hello world 实例,在新的Spring3.0开发需要什么。
- 1.1、Spring松耦合的实例一个例子用来演示Spring是如何使组件之间松散耦合的。
Spring JavaConfig
Spring 3.0支持JavaConfig,现在可以使用注解来配置Spring。
- 1.2、Spring JavaConfig 实例 使用@Configuration和@Bean演示到在Spring定义bean
- 1.3、Spring JavaConfig @Import 实例 使用@Import组织Bean类模块化的实例
Spring 依赖注入(DI)
Spring如何使用依赖注入(DO)来管理对象的依赖关系。
- 1.4、Spring依赖注入 (DI) Spring如何通过应用Setter注入和构造器注入的依赖注入(DI)设计模式实例
- 1.5、Spring DI 通过setter方法 通过setter方法依赖注入bean
- 1.6、Spring DI 构造方法 可以通过构造方法依赖注入bean
- 1.7.1、Spring构造方法注入类型歧义 构造函数注入参数类型歧义的问题总是发生在一个bean包含多个构造方法有多个参数
Bean基础
只需要在Spring IoC容器使用的类被认为是“Bean”,并可在Spring bean 的配置文件或者通过注解来声明。
- 1.7、Spring bean 引用实例 如何指定相同或不同的bean配置文件中的bean引用互相访问。
- 1.8、注入值到Spring Bean的属性 三种方法注入值到bean的属性。
- 1.9、加载多个Spring bean配置文件 开发人员总是在不同的模块文件夹归类不同的 bean 配置文件,这里有一个技巧,向您展示如何加载多个Spring bean 的配置文件。
- 2.0、Spring内部Bean实例 每当一个bean仅用于一个特定的属性,它总是建议将其声明为一个内部bean。
- 2.1、Spring bean作用域 Bean作用域是用来决定哪些bean实例的类型应该是从Spring容器中返回给调用者。
- 2.2、Spring集合 (List, Set, Map, and Properties) 实例 注入值到集合类型(列表,集,映射和属性)实例。
- 2.3、ListFactoryBean实例 创建一个具体的列表集合类(ArrayList 和 LinkedList),并注入到 bean 属性。
- 2.4、SetFactoryBean实例 创建一组具体的Set集合类(HashSet和TreeSet),并注入到bean属性。
- 2.5、MapFactoryBean实例 创建一个具体的映射集合类(HashMap和TreeMap中),并注入到bean属性。
- 2.6、Spring注入日期到bean属性 – CustomDateEditor 一般情况下,Spring接受日期变量,这里有一个技巧 - 使用CustomDateEditor来解决。
- 2.7、Spring PropertyPlaceholderConfigurer实例 通过一个特殊格式具体化部署详情到一个属性文件,并从bean配置文件访问获得 – ${variable}
- 2.8、Spring bean配置继承 继承是非常有用,一个bean来分享共同的值,属性或配置。
- 2.9、Spring依赖检查 Spring4中提供了依赖检查模式,以确保所要求的属性已经在bean中设置。
- 3.0、Spring使用@Required注解依赖检查 依赖检查注释模式。
- 3.1、自定义@Required-style注解 创建自定义@Required-style注解,相当于@Required 注解
- 3.2、Bean InitializingBean 和 DisposableBean实例 执行 bean 初始化和销毁某些动作(接口)
- 3.3、Bean init-method 和 destroy-method 实例 执行 bean 初始化和销毁某些动作(XML)
- 3.4、Bean @PostConstruct 和 @PreDestroy 实例 执行 bean 初始化和销毁某些动作(注解)
Spring表达式语言
Spring 3.0引入了Spring表达语言,或Spring EL丰富而强大的表达式语言。
- 3.5、Spring EL hello world 实例 使用 Spring 表达式语言(EL)快速入门
- 3.6、Spring EL bean 引用实例 参考bean,bean属性使用一个点(.)符号。
- 3.7、Spring EL 方法调用实例 直接调用Bean方法
- 3.8、Spring EL 操作符实例 Spring EL支持大多数标准的关系,逻辑和数学运算符。
- 3.9、Spring EL 三元操作符(if-then-else) 实例 有条件的检查:if else then.
- 4.0、Spring EL Arrays, Lists, Maps 实例 适用于映射和列表。
- 4.1、Spring EL 正则表达式实例 正则表达式来计算评估条件。
- 4.2、测试 Spring EL 与 ExpressionParser 如何轻松地测试Spring El。
Spring自动组件扫描
Spring是能够扫描,检测并自动注册 bean 的。
- 4.3、Spring自动扫描组件 让Spring自动扫描,检测和注册Bean。
- 4.4、Spring过滤器组件自动扫描 过滤器自动扫描模式的某些组件实例。
Spring自动装配Bean
Spring自动装配“auto-wiring"来装配或Bean类,无论是在XML和注释。
- 4.5、Spring自动装配Beans Spring 5种自动装配方式总结。
- 4.6、Spring由类型(Type)自动装配 如果一个 bean 的数据类型是用其它 bean 属性的数据类型,那么自动装配它。
- 4.7、Spring由名称(Name)自动装配 如果一个 bean 的名称与其他bean属性的名称是一样的,那么可以自动装配它。
- 4.8、Spring由构造方法自动装配 由在构造函数的参数类型自动装配。
- 4.9、Spring由AutoDetect自动装配 这意味着选择“用构造函数自动装配”,如果默认构造函数被找到,否则使用“自动装配按类型”。
- 5.0、Spring 使用@Autowired注解自动装配 例子来说明如何定义注解 “auto-wiring” 模式。
- 5.1、Spring 自动装配@Qualifier实例 举个例子来确定哪些Bean有资格自动装配到某个字段上。
Spring AOP (面向方面编程)
Spring AOP的模块化方面横切关注点。简单地说,就是一个拦截器拦截一些方法。
- 5.2、Spring AOP通知实例 – Advice 有关不同类型的 Spring 建议说明和示例。
- 5.3、Spring AOP实例 – Pointcut , Advisor 有关不同类型的 Spring 的切入点和 Advisor 的解释和示例。
- 5.4、Spring AOP拦截器的序列 AOP拦截器的顺序会影响功能。
- 5.5、自动代理创建者实例 一个自动代理生成例子是用来为Bean自动创建代理对象,以避免造成许多重复的代理对象。
Spring AOP + AspectJ框架
由于Spring 2.0中对 AspectJ 更加灵活和强大的支持。然而,本实例在 Spring3.0 中应用说明。
- 5.6、Spring AOP + AspectJ注解实例 一个例子向您展示如何将AspectJ 注解与Spring框架集成。
- 5.7、Spring AOP + AspectJ 在 XML配置实例 Spring AOP 使用AspectJ 在XML基本配置。
Spring Object/XML 映射器
在Spring3.0,对象到XML映射(OXM)从Spring Web服务到核心Spring框架。
- 5.8、Spring Object/XML映射实例 Spring oxm + castor,转换对象到XML,反之亦然。
Spring JDBC支持
Spring提供了很多辅助类简化整个 JDBC 数据库操作。
- 5.9、Spring + JDBC实例 一个例子来说明如何集成 Spring 和 JDBC。
- 6.0、JdbcTemplate + JdbcDaoSupport 实例 使用Spring的JdbcTemplate和JdbcDaoSupport 类来简化整个JDBC数据库操作过程的一个实例。
- 6.1、Spring JdbcTemplate查询实例 这里有一些例子来说明如何使用JdbcTemplate的query() 方法来查询或从数据库中提取数据。
- 6.2、Spring JdbcTemplate batchUpdate() 实例 这里是一个 BATCHUPDATE()例子来说明如何执行批量插入操作。
- 6.3、Spring SimpleJdbcTemplate查询示例 更多的用户查询操作,或从数据库中提取数据的友好而简单的方法。
- 6.4、Spring SimpleJdbcTemplate batchUpdate()实例 使用SimpleJdbcTemplate类,一个Java5 的友好补充 JdbcTemplate 的一个批量更新的例子。
- 6.5、Spring SimpleJdbcTemplate类命名参数实例一个例子来说明如何使用命名参数作为SQL参数值,而这仅仅是在SimpleJdbcTemplate中支持。
Spring Hibernate支持
Spring 提供了许多方便的类来支持 Hibernate ORM框架。
- 6.6、Spring+Hibernate+MySql实例 使用 Spring 和 Hibernate 的一个简单的项目。
- 6.7、Spring + Hibernate+ MySql注解实例 使用Spring和Hibernate(注释版)的一个简单的项目。
- 6.8、Spring AOP在Hibernate的事务管理 一个例子来说明如何管理Hibernate事务与Spring AOP。
- Struts + Spring + Hibernate集成 Spring、Struts和Hibernate框架集成的实例。
Spring E-mail支持
Spring 提供 MailSender 通过 JavaMail API 发送电子邮件。
- 6.9、通过MailSender发送电子邮件 使用Spring的MailSender通过Gmail的SMTP服务器发送电子邮件实例。
- 7.0、在bean配置文件中的电子邮件模板硬编码所有电子邮件属性和消息,正文内容不是一个好的做法,应该考虑在 Spring的bean配置文件中定义电子邮件模板。
- 7.1、Spring发送带附件的Email 使用Spring来发送带附件的电子邮件示例。
Spring与其它Web框架集成
Spring集成其它Web框架。
- 7.2、Spring依赖注入servlet会话监听器Spring提供了一个“ContextLoaderListener”监听器作为一个通用的方法,以使Spring依赖注入会话监听器应用到几乎所有其他的web框架。
- Struts 2 + Spring集成实例 Spring和Struts2框架集成的实例。
- Struts 2 + Spring + Quartz 计划程序集成示例 Spring + Struts 2 + Quartz集成实例
- Struts 2 + Spring + Hibernate集成实例 Spring+Struts2+Hibernate的集成实例。
Spring问答
- 7.3、= 资源捆绑ResourceBundleMessageSource示例ResourceBundleMessageSource解决文本信息在不同地区的最常见类。
- 7.4、访问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