Spring入门学习传智版(一)

本文是Spring入门教程,介绍了Spring的历史、核心概念如IoC和AOP,以及如何创建入门案例,包括IoC和DI的实现。通过讲解Spring的jar包、配置文件、API以及Bean的作用域和生命周期,帮助初学者掌握Spring框架的基本用法。
摘要由CSDN通过智能技术生成

历史回顾

struts:web层,比较简单(ValueStack值栈,拦截器)
hibernate:dao层,知识点杂
spring:service层,重要,讲多少用多少 --> 【了解】
在这里插入图片描述

:基础(IoC控制反转、DI依赖注入)、整合Junit、整合web
:AOP切面编程、JdbcTemplate
:事务管理、SSH整合

1、spring框架概述

1.1 什么是spring
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。

轻量级:与EJB对比,依赖资源少,销毁的资源少。
分层: 一站式,每一个层都提供的解决方案

web层strutsspring-MVC
service层spring
dao层hibernatemybatis
jdbcTemplate --> spring-data

1.2 spring由来
Expert One-to-One J2EE Design and Development
Expert One-to-One J2EE Development without EJB

1.3 spring核心
Spring的核心是 控制反转(IoC)面向切面(AOP)

1.4 spring优点
在这里插入图片描述
1.5 spring体系结构
在这里插入图片描述

搭建spring环境

下载jar包 spring-framework-4.3.9.RELEASE-dist.zip
点击进入

解压后,取
(1) spring-aop-4.3.9.RELEASE.jar 开发AOP特性需要的jar
(2) spring-beans-4.3.9.RELEASE.jar 处理bean的jar
(3) spring-context-4.3.9.RELEASE.jar 处理spring上下文的jar
(4) spring-core-4.3.9.RELEASE.jar spring 核心jar
(5) spring-expression-4.3.9.RELEASE.jar spring 表达式
开发至少需要这5个+
1个第三方提供的commons-logging-1.1.1.jar 日志
(下载地址:
https://mvnrepository.com/artifact/commons-logging/commons-logging/1.1.1
)

下载 STS.exe
参考博客:点击进入

2、入门案例:IoC【掌握】

2.1 导入jar包
4 + 1 : 4个核心(beans、core、context、expression) + 1个依赖(commons-loggins…jar)
在这里插入图片描述

注意:jar包类型
在这里插入图片描述
2.2 目标类
提供UserService接口和实现类
获得UserService实现类的实例
之前开发中,直接new一个对象即可。
学习spring之后,将由Spring创建对象实例–> IoC 控制反转(Inverse of Control)之后需要实例对象时,从spring工厂(容器)中获得,需要将实现类的全限定名称配置到xml文件中
在这里插入图片描述
在这里插入图片描述
2.3 配置文件
位置:任意,开发中一般在classpath下(src)
名称:任意,开发中常用applicationContext.xml
内容:添加schema约束
约束文件位置:spring-framework-3.2.0.RELEASE\docs\spring-framework-reference\html\ xsd-config.html
在这里插入图片描述
2.4 测试
在这里插入图片描述

3、入门案例:DI【掌握】

DI Dependency Injection ,依赖注入
is a :是一个,继承。
has a:有一个,成员变量,依赖。

class B {
   
           private A a;   //B类依赖A类
        }

依赖:一个对象需要使用另一个对象
注入:通过setter方法进行另一个对象实例设置。

例如:

class BookServiceImpl{
   
        //之前开发:接口 = 实现类  (service和dao耦合)
		//private BookDao bookDao = new BookDaoImpl();
 		//spring之后 (解耦:service实现类使用dao接口,不知道具体的实现类)
		private BookDao bookDao;
		setter方法
   }

模拟spring执行过程
创建service实例:BookService bookService = new BookServiceImpl() -->IoC
创建dao实例:BookDao bookDao = new BookDaoImple() -->IoC
将dao设置给service:bookService.setBookDao(bookDao); -->DI

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


3.1 目标类
创建BookService接口和实现类
创建BookDao接口和实现类
将dao和service配置 xml文件
使用api测试

3.1.1 dao
在这里插入图片描述
3.1.2 service
在这里插入图片描述
在这里插入图片描述
3.2 配置文件
在这里插入图片描述
在这里插入图片描述
3.3 测试
在这里插入图片描述

4、eclipse schema xml提示

步骤一:确定xsd文件位置
spring-framework-3.2.0.RELEASE\schema\beans
在这里插入图片描述
步骤二:复制路径
在这里插入图片描述
步骤三:搜索“xml catalog”
在这里插入图片描述
步骤四:添加约束提示
在这里插入图片描述

5、核心API

api整体了解,之后不使用,在学习过程需要。
在这里插入图片描述
BeanFactory :这是一个工厂,用于生成任意bean。
采取延迟加载,第一次getBean时才会初始化Bean

ApplicationContext:是BeanFactory的子接口,功能更强大。
(国际化处理、事件传递、Bean自动装配、各种不同应用层的Context实现)。

当配置文件被加载,就进行对象实例化。
ClassPathXmlApplicationContext 用于加载classpath(类路径、src)下的xml
加载xml运行时位置 --> /WEB-INF/classes/…xml

FileSystemXmlApplicationContext 用于加载指定盘符下的xml
加载xml运行时位置 --> /WEB-INF/…xml
通过java web ServletContext.getRealPath() 获得具体盘符

在这里插入图片描述

6、装配Bean 基于XML

6.1 实例化方式
3种bean实例化方式默认构造静态工厂实例工厂
在这里插入图片描述

6.1.1默认构造
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6.1.2静态工厂
常用与spring整合其他框架(工具)
静态工厂:用于生成实例对象,所有的方法必须是static

共有的:
在这里插入图片描述
在这里插入图片描述

测试类
在这里插入图片描述
6.1.3 实例工厂
实例工厂:必须先有工厂实例对象,通过实例对象创建对象。提供所有的方法都是“非静态”的。

在这里插入图片描述bean.xml
在这里插入图片描述
测试类
在这里插入图片描述
6.3 作用域
作用域:用于确定spring创建bean实例个数。
在这里插入图片描述
取值
singleton 单例,默认值。
prototype 多例,每执行一次getBean将获得一个实例。例如:struts整合spring,配置action多例。

在这里插入图片描述

UserService.java
在这里插入图片描述
UserServiceImpl.java

在这里插入图片描述
bean.xml
在这里插入图片描述

测试类
在这里插入图片描述

6.4 生命周期
6.4.1初始化和销毁
目标方法执行前后执行后,将进行初始化或销毁。
在这里插入图片描述
在这里插入图片描述
UserService.java
在这里插入图片描述
UserServiceImpl.java

在这里插入图片描述bean.xml
在这里插入图片描述

测试类
在这里插入图片描述
6.4.2 BeanPostProcessor 后处理Bean
spring 提供一种机制,只要实现此接口BeanPostProcessor,并将实现类提供给spring容器,spring容器将自动执行,在初始化方法前执行before(),在初始化方法后执行after() 。

配置<bean class="">

在这里插入图片描述
Factory hook(勾子) that allows for custom modification of new bean instances, e.g. checking for marker interfaces or wrapping them with proxies.

spring提供工厂勾子,用于修改实例对象,可以生成代理对象,是AOP底层。

模拟

A a =new A();
a = B.before(a)			--> 将a的实例对象传递给后处理bean,可以生成代理对象并返回。
a.init();
a = B.after(a)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值