Spring系列(一)概述

一.Spring概述

Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。
官网:https://spring.io/
Spring系列(一)概述_第1张图片
Spring系列(一)概述_第2张图片
spring框架性质是属于容器性质的,容器中装什么对象就有什么功能,能帮其他框架管理对象.
AOP面向切面编程:支持AOP事务
IOC控制反转:把控制对象生命周期的权利交给第三方(spring)管理
DI依赖注入:把Java程序中的对象创建的权利由第三方(spring)管理
Spring JDBC:可以方便的管理数据库
Junit 测试支持:支持注解测试

二.Spring开发初体验

Spring搭建步骤

1.导包4+2(4个核心包(上图中Core Container的四个包)+2个日志包(logging,log4j))
2.创建一个对象类,例如POJO
3.导入约束(spring-beans-4.2.xsd)
4.书写配置文件,注册对象到容器。文件位置任意(建议放到src下),文件名任意(建议applicationContext.xml)
5.代码测试

Spring API

1.BeanFactory:Spring原始接口,针对原始接口的实现类功能较为单一,特点是每次在获得对象时才会创建对象,在资源匮乏的环境可以使用BeanFactory.
2.ApplicationContext:每次容器启动时就会创建容器中配置的所有对象.并提供更多功能.常用
首先需要加载Spring配置文件
(1).从类路径下加载配置文件:ClassPathXmlApplicationContext
(2).从硬盘绝对路径下加载配置文件:FileSystemXmlApplicationContext(“d:/xxx/yyy/xxx”)

Spring配置

1.Bean元素
(1).scope属性
singleton(默认值):单例对象.被标识为单例的对象在spring容器中只会存在一个实例
prototype:多例对象,每次再获得才会创建.每次创建都是新的对象.整合struts2时,ActionBean必须配置为多例的.
request:web环境下.对象与request生命周期一致.
session:web环境下,对象与session生命周期一致.
(2).生命周期属性
init-method:配置一个方法作为生命周期初始化方法.spring会在对象创建之后立即调用.
destory-method:配置一个方法作为生命周期的销毁方法.spring容器在关闭并销毁所有容器中的对象之前调用.
2.spring创建对象的方式
(1).空参构造方式
(2).静态工厂(了解)
(3).实例工厂(了解)
3.spring的分模块配置
4.spring对象属性注入
(1).set方法注入
(2).构造函数注入
(3).p名称空间注入
(4).spel注入
(5).复杂类型注入:数组,List,Map,Properties
5.Spring注解
步骤1.导包:4+2+1(4个核心包+2个日志包+spring-aop)
步骤2.为主配置文件引入约束:spring-context-4.2.xsd
步骤3.配置文件中开启使用注解代理
步骤4.在类中使用注解完成配置
(1).将对象注册到容器
(2).修改对象的作用范围(scope属性)
(3).值类型注入
(4).引用类型注入
(5).初始化,销毁方法
6.Spring与Junit整合测试
步骤1.导包4+2+1+spring-test(4个核心包+2个日志包+spring-aop+spring-test)
步骤2.在类中使用注解完成配置
步骤3.测试
7.Spring中的AOP:横向重复的代码,纵向抽取出来
1.Spring实现AOP的原理
(1).动态代理(优先):被代理对象必须要实现接口,才能产生代理对象.如果没有接口将不能使用动态代理技术
(2).cglib代理(没有接口):第三方代理技术,cglib代理.可以对任何类生成代理.代理的原理是对目标对象进行继承代理. 如果目标对象被final修饰.那么该类无法被cglib代理.
2.AOP名词

         Joinpoint(连接点):目标对象中,所有可以增强的方法
         Pointcut(切入点):目标对象中,所有已经增强(想要增强)的方法
         Advice(通知/增强):增强目标对象的代码
         Target(目标对象):被代理的对象
         Weaving(织入):将通知应用到切入点的过程
         Proxy(代理):将通知织入到目标对象之后,形成代理对象
         Aspect(切面):切入点+通知

3.AOP演示
步骤0.导入新约束:spring-aop-4.2.xsd
步骤1.导包4+2+2+2(4个核心包+2个日志包+spring-aop+spring-aspects+com.springsource.org.aopalliance+com.springsource.org.aspectj.weaver)
步骤2.XML配置目标对象 或 注解配置目标对象
步骤3.XML配置通知 或 注解配置通知
步骤4.XML配置进行织入,将通知织入目标对象中 或 注解配置进行织入,将通知织入目标对象中
8.Spring整合JDBC
Spring提供了很多模板整合Dao技术,spring中提供了一个可以操作数据库的对象.对象封装了jdbc技术,JDBCTemplate => JDBC模板对象
步骤1.导包4+2+spring-test+spring-aop+junit4+spring-jdbc+spring-tx+数据库驱动
步骤2.准备数据库
步骤3.书写Dao
步骤4.spring配置依赖关系
JDBCDaoSupport:继承JDBCDaoSupport,不需要手动准备JDBC模板,直接从父类方法获得
9.Spring AOP事务
1.事务特性:原子性,一致性,隔离性,持久性
2.事务并发问题:脏读,不可重复读,幻读
3.事务的隔离级别:1 读未提交,2 读已提交,4 可重复读,8 串行化
4.事务操作:打开事务,提交事务,回滚事务
5.事务操作对象:因为在不同平台,操作事务的代码各不相同.Spring提供了PlatformTransactionManager 接口,最为核心的对象就是TransactionManager对象
6.Spring管理事务的属性介绍
1.事务的隔离级别:1 读未提交,2 读已提交,4 可重复读,8 串行化
2.是否只读:true 只读,false 可操作
3.事务的传播行为
7.Spring管理事务方式
1.编码式
步骤1.将核心事务管理器配置到spring容器
步骤2.配置TransactionTemplate模板
步骤3.将事务模板注入Service
步骤4.在Service中调用模板
2.xml配置(aop)
步骤1.导包同上
步骤2.导入新约束:spring-tx-4.2.xsd
步骤3.配置通知
步骤4.配置将通知织入目标
3.注解配置(aop)
步骤1.导包同上
步骤2.导入新约束:spring-tx-4.2.xsd
步骤3.开启注解管理事务
步骤4.在类中使用注解完成配置
10.web.xml配置


<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>springdisplay-name>

  
  <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
  listener>
  
  <context-param>
    <param-name>contextConfigLocationparam-name>
    <param-value>classpath:/cjx/beanCreate/beancreate.xmlparam-value>
  context-param>
    


  <welcome-file-list>
    <welcome-file>index.htmlwelcome-file>
    <welcome-file>index.htmwelcome-file>
    <welcome-file>index.jspwelcome-file>
    <welcome-file>default.htmlwelcome-file>
    <welcome-file>default.htmwelcome-file>
    <welcome-file>default.jspwelcome-file>
  welcome-file-list>
web-app>

你可能感兴趣的:(JAVA-WEB)