# 1.Spring框架简介
回忆:
Mybatis框架:ORM框架
一个半自动的(Object)对象-(Relation)关系型数据库(Mapping)映射框架
作用在MVC设计模式的M(Model 数据模型层)层
Mybatis替换了JDBC技术
简介:
Spring框架
一个作用在C(Controller 控制器层)层的框架
原生的Java Web项目,C层使用Servlet进行开发
Spring(MVC)框架可以替换C层中的Servlet,让整个Java Web项目的结构更简单—代码更少
Spring框架的特性:
IoC/DI:说的是一件事
IoC:Inverse of Control:控制反转
原始的Java对象的来源是程序员在项目代码中手动new出来
IoC所指的,就是剥夺程序员这个new对象的权利,让new对象这个事儿交给Spring框架去做
原先是自产自销,现在是国家分配
现在如果我们需要一个Java对象(例如在UserService中需要一个UserDAOImpl对象)
那么不要自己new,向Spring提出需求,由Spring给你一个对象
DI:Dependency Injection:依赖注入
Spring框架自己本身也不生成Java对象,仅用来保存和分配Java对象
也就是说,Spring利用IoC容器容纳项目中必须的Java对象,并且在合适的时候将这个对象分配出去
这个对象所有用到的属性需要在Spring的配置文件中进行声明,而不是在new的时候进行赋值
例如:汽车想要运行,依赖于发动机和车轮,那么体现汽车和发送机、车轮之间的关系 就是通过Spring的配置文件进行的
过程称之为依赖注入
AOP:面向切面编程 Aspect Oriented Programming
面向切面编程是对面向对象编程(OOP)的一种补充
原先构建一个对象:new一个对象,这个对象有属性,有方法
对象方法的定义:返回值、方法名、参数列表 + 方法体
例子:之前的用户登录状态验证,需要在每一个用户动作(方法)之前都对用户的登录状 态进行验证
但是使用AOP之后,可以将用户登录状态验证作为一个“切面”,加入到每一个用户动作之 前——取代复制粘贴
# 2.一个简单的Spring案例
一个Java Web的用户登录功能:
总结使用Spring管理JavaBean的流程:
1.创建一个Spring的对JavaBean管理的全局配置文件:
spring-bean.xml(applicationContext.xml)
<?xml version="1.0" encoding="UTF-8"?>
<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">
<!--
EmpMapperImpl empMapperImpl = new EmpMapperImpl();
在Spring这个容器中(IoC容器)声明一个UserDAOImpl对象
也就是说,以后凡是用到UserDAOImpl对象的地方都不用手动new了,都是从IoC容器中申请
id:指定当前IOC容器创建对象的变量名称
class:指定当前IOC容器创建对象的类型
bean标签的属性:
class:声明装在Spring IOC容器中的对象(bean)的类型
id:给这个对象(bean)起一个名字
-->
<bean id="empMapperImpl" class="com.huade.mapper.EmpMapperImpl"></bean>
</beans>
通过这个配置文件,Spring IOC容器将能够得知当前项目中需要哪些对象(Bean)
2.在Java代码中声明一个ClassPathXmlApplicationContext对象,这个对象就是Spring IOC容器对 象(炒豆的锅):
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("config/spring-config.xml");
3.在需要使用Java对象的地方,声明从Spring IOC容器中获取一个JavaBean对象(从炒豆的锅里 拿出一个豆):
UserDAO userDao = (UserDAO) ctx.getBean("userDaoImpl");
注意:在实例化Spring IOC容器的时候,需要保证一个项目中只能够有一个IOC容器(锅)