Spring是一个开源框架,它是为了解决企业应用开发的复杂性而创建的。它的的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的J一站式)轻量级开源框架。
①spring是非侵入式编程,spring的实现不需要继承类也不需要实现接口
②它支持Java的三层开发(即数据库层、表现层、业务逻辑层)
组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:
•Spring Core(核心容器):核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。 •Spring Context(Spring上下文):pring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。 •Spring AOP(面向切边编程):通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。 •Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。 •Spring ORM:Spring 框架插入了若干个 ORM (对象关系映射)框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。 •Spring Web:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。 •Spring MVC:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。
1、进入spring的官方网址,下载最新spring jar包。:http://spring.io/ 进入projects 这个就是各个spring版本的下载地址: http://repo.spring.io/release/org/springframework/spring 而且很清楚的告诉你下载哪个文件
2、在项目的lib中引用需要的jar,项目就可以使用spring了
1、IOC容器 •定义:IOC:(Inversion of control)控制反转又称依赖注入,是面向对象编程中的一种设计理念,用来降低程序代码之间的耦合度 控制器中的javaBean 对象有指定的配置文件映射生成,可以配置javaBean的依赖关系需要的对象有ioc提供。 •方式:
①set方法注入
<bean id="player" class="com.xdl.bean.Player"> <property name="name" value="shenge"/> <property name="age" value="18"/> </bean>②接口注入
<bean id="" class="" autowire="no/byName/byType/constructor/autodetect"></bean> no 默认值 byName 根据属性的名字 byType 根据类型去查找 constructor 优先按照构造方法参数的名字去查找,如果找不到,③构造方法注入
<bean id="player" class="com.xdl.bean.Player"> <constructor-arg index="0" value="chen"/> <constructor-arg index="1" value="18"/> </bean>•作用:Spring中IOC 最大的好处是便于替换对象,只要用 JavaBean 属性和配置文件加入依赖性(协作对象), 然后可以很容易地在需要时替换具有类似接口的协作对象。
2、AOP(面向切面编程)
•定义:将程序中的交叉业务逻辑提取出来,称之为切面。将这些切面动态织入到目标对象,然后生成一个代理对象的过程。
•核心概念:
①Aspect(切面)
切面,是对交叉业务逻辑的统称。
②Joinpoint(连接点)
连接点,指切面可以织入到目标对象的位置(方法,属性等)。
③Advice(通知)
通知,指切面的具体实现。
④Pointcut(切入点)
切入点,指通知应用到哪些类的哪些方法或属性之上的规则。
⑤Introduction(引入)
引入,指动态地给一个对象增加方法或属性的一种特殊的通知。
⑥Weaving(织入)
织入,指将通知插入到目标对象,将通知应用到连接点形成切入点的过程。
⑦Target(目标对象)
目标对象,指需要织入切面的对象(被代理对象,被通知的对象,被增强的类对象)。
⑧Proxy(代理对象)
代理对象,指切面织入目标对象之后形成的对象。
①前置增强 顾名思义就是在目标方法执行前织入增强。BeforeAdvice表示前置增强。属于Spring提供的增强所以属于方法级增强。MethodBeforeAdvice为目前可用前置增强。
②后置增强 顾名思义就是在目标方法执行后织入增强。AfterReturningAdvice表示后置增强。属于Spring提供的增强所以属于方法级增强。
③环绕赠强 MethodInterceptor是前置增强和后置增强的综合,在目标方法执行前后都织入增强。可以用该增强替换前置增强和后置增强
④异常抛出增强 ThrowsAdvice表示在目标方法抛出异常时实施增强
1、步骤:
①下载并在项目中导入jar包
<!-- mybatis-spring整合 start--> <!-- mybatis-spring --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.1</version> </dependency> <!-- spring-jdbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.1.8.RELEASE</version> </dependency> <!-- spring-tx --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>5.1.8.RELEASE</version> </dependency> <!-- mybatis-spring整合 end-->②建立开发目录结构,创建实体类
③创建数据访问接口
④配置SQL映射文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <mapper namespace="xx.xMapper"> <select id="" resultMap="" parameterType=""> select *from biaoMing </select> </mapper>⑤配置MyBatis配置文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!--类型别名--> <typeAliases> <package name="xx.pojo"/> </typeAliases> </configuration>⑥编写业务逻辑代码
⑦测试
import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import service.Service; public class Test{ @org.junit.Test public void testRole(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); XService xService = (Service)context.getBean("Service"); } }1.定义:Spring 的事务管理:它保证了一系列操作可以作为一个工作单元,所有的操作被执行的机制。 执行后只有两种结果,要么全部成功,要么全部失败。 防止出现脏数据,防止数据库数据出现问题。 2.Spring提供的事务管理可以分为两类:编程式的和声明式的。 编程式事务,比较灵活,但是代码量大,存在重复的代码比较多; 声明式则比编程式更灵活;在使用Spring的声明式事务时不需要编写任何代码,它通过AOP实现事务管理。 3.spring是怎么实现事务管理:在配置文件中声明事务管理器,然后配置事务属性,定义事务切入点,最后通过AOP实现事务管理; 4.事务有七种传播性,四种隔离级别;
演示案例:https://pan.baidu.com/s/1Cwq0JfKK1x_PdUSbyxZERQ