概述:
Spring的概述、SpringIOC入门(XML)、Spring的Bean管理、Spring属性注入
Spring的IOC的注解方式、Spring的AOP开发(XML)
Spring的AOP的注解开发、Spring的声明式事务、JdbcTemplate。
SSH的整合、HibernateTemplate的使用、OpenSessionInViewFilter的使用。
1. Spring概述
轻量级的Java开源框架,与2003年兴起。Spring是一个分层的Java SE/EE一站式(FullStack)轻量级的开源框架。Spring:SE/EE开发的一站式框架。
-
一站式框架:有EE开发的每一层解决方案。
-
WEB层 :SpringMVC
-
Service层 :Spring的Bean管理,Spring声明式事务
-
DAO层 :Spring的Jdbc模板,Spring的ORM模块:hibernate,mybatis , jdbcTemplate
–> spring-data
-
-
它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。
-
轻量级:与EJB对比,依赖资源少,销毁的资源少
-
Spring的核心:控制反转(IoC)和面向切面编程(AOP)
-
Spring的优势:
-
方便解耦,简化开发 (高内聚低耦合)
• Spring就是一个大工厂(容器),可以将所有对象创建和依赖关系维护,交给Spring管理
• spring工厂是用于生成bean
-
AOP编程的支持
• Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能
-
声明式事务的支持
• 只需要通过配置就可以完成对事务的管理,而无需手动编程
-
方便程序的测试
• Spring对Junit4支持,可以通过注解方便的测试Spring程序
-
方便集成各种优秀框架
• Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持
-
降低JavaEE API的使用难度
• Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低
-
-
Spring版本:3.x/4.x/5.x
2. 体系结构
- 下载使用:http://spring.io/
3. IOC:控制反转
Inversion of Control:将对象的创建权反转给(交给)Spring,Spring就是一个大的容器、大工厂。
3.1 构建步骤:
创建工程->导入JAR包(4核心+1个依赖)->配置文件后源码中使用
3.2 工程
-
docs :Spring的开发规范和API——doc下有pdf版本文档:spring开发规范
-
libs :Spring的开发的jar和源码
-
schema :Spring的配置文件的约束
3.3 为什么使用IOC
与开发中的设计模式有关:从传统的直接创建对象的模式,到“接口+实现类”的模式,再到简单工厂模式;主要是在一步步进行程序模块间的解耦问题,而Spring是目前最优秀的解耦方式组织成的框架。Spring就是一个自动化的大工厂。
解耦的主要作用:OCP原则——对源码修改的关闭、对扩展的开放。尤其在大型项目组织中见效。
3.4 示例
-
使用Spring来进行简单工厂的代替,通过配置文件,Spring能够解析XMl文件并使用底层的反射机制进行实例的生产。
-
Spring采用Schema形式的xml配置文件,一般开发中直接在SRC目录下,惯例命名为
applicationContext.xml
。基本的配置,命名空间等可以在spring解析目录下的\docs\spring-framework-reference\html\xsd-configuration.html
找到。<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置Bean --> <bean id="userDao" class="com.leehao.springlearning.spring1.UserDaoImpl"></bean> </beans> -------------------------------------------------------------------------------- public void demo1(){ //解析配置文件 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); //直接获取bean UserDao userDao = applicationC