1.框架:
将一些公用的模块进行集成,通过框架的形式进行管理(事务控制、权限控制(Shiro),日志收集log)
2.Spring框架
Servlet+jsp 3000
SSH: Struts2(重配置)+ Spring(业务层框架) +Hibernate(ORM)(500万)小中型企业 网站-办公软件
SSM: SpringMVC +Spring(业务层框架)+Mybatis(持久层框架)
3.Spring框架:
Spring框架是现在所有企业中都需要“使用”的框架,2大核心技术IOC和DI,AOP.Spring框架内部实现事务控制。只要引用了Spring的事务控制,从此程序员无需关注事务。
作用:Spring能够整合现阶段所有的主流框架,让程序调用浑然一体。方便管理。---粘合剂(胶水)
4.Spring的学习计划:
1.SpringIOC和DI
2.简化Spring配置
3.Spirng的AOP
4.AOP的练习
5.Spring整合JDBC和声明式事务处理。
5.Spring的IOC
IOC是控制反转
对象的创建过程由Spring容器来管理,程序员从此无需关注对象的创建过程,Spring容器管理对象的生命周期。
Person p1 = new Person(); -----程序员自己手动编辑
Person p2 = Spring容器.getXXX()方法; Spring容器创建
6.Spring的入门案例:
1.导入jar包
2.创建实体类(javaBean)
3.编辑配置文件(1.引入配置文件的头标签 2.编辑配置类)
4.启动Spring容器(内部创建对象)
5.从Spring容器中获取对象
7.具体实现步骤:
Bean:只要被Spring管理的类称之为bean
1.引入jar包文件:7个
2.定义实体类
3.编辑配置文件
默认的名称:applicationContext.xml
名称可以自定义:application-XXX.xml
4.启动Spring容器
Schema: 让指定的标签生效的
DTD: Mybatis中的配置文件使用
引入方式:
1.直接拷贝赋值
<?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-3.2.xsd ">
</beans>
8.Spirng创建对象的原理:
问题:Spring如何创建对象,对象是如何存储的,用户时如何获取的对象?
1.Spring容器启动时,首先会加载spring的核心配置文件。
2.Spring器逐行进行解析xml配置文件
3.当解析bean标签时开始创建对象,根据class属性中的数据通过反射机制创建对象。
4.将创建好的对象存入Spring所维护的Map<key,value>中 key就是bean中的ID.
value就是生成的对象。
5.用户传入key,通过key来获取Map中的value(对象)
6.Spring容器中的对象的生命周期默认条件下与Spring容器“同生共死”
9.Spring容器获取对象的方式:
1.通过ID对象对象
HelloSpring helloSpring = (HelloSpring) context.getBean("helloSpring");
2.通过class类型获取对象
说明:通过class类型获取时,可能会有风险,如果出现相同的calss类型会报错
10.头文件的引入:
1.拷贝
2.自动生成
1.引入约束文件
作用:能够出现自动提示标签
2.添加约束文件
3.自动生成头文件:
选择配置文件的约束
修改根标签/去掉前缀
4.通过模板自动引入
11.Spring创建对象的方式:
1.通过无参构造创建对象
通过反射调用
说明:通过默认的无参构造创建对象是spring中默认的方式,这样的方式用的最多,所以,以后在编辑构造方法时,需要先添加无参构造。
2.静态工厂创建对象 static
为什么需要工厂模式:
有些对象不能够通过反射直接创建,抽象类和接口等
实质:就是类名.静态方法
3.实例工厂
说明:实例化工厂本身需要创建对象
实质:通过 对象.方法 获取对象
4.Spring工厂:
12.对象的单例和多例
说明:
Spring创建的对象默认的条件下是单例对象。
可以通过scope改变对象的单例和多例
分析:
单例和多例的具体划分
Servlet、Service Dao层级代码。
购物车:要求每人一份的需要设置为多例对象
javaBean无需关注单例和多例,java安全机制默认设置。
扩展:
多例对象如何存储???
13.对象的懒加载机制:
什么时候使用对象,什么时候创建对象
说明:
扩展:
对象是多例的,懒加载配置false
lazy-init="false" scope="prototype"
如果对象的多例的,则统统懒加载,配置的懒加载属性不生效
14.DI 依赖注入
为属性赋值
1.set方法注入
前提条件,为属性赋值时必须添加set方法,否则不能正确注入。
15.Spring中IOC和DI的意义
1.无论之前是new对象和通过工厂模式实现。耦合性都是较高的。
Spring的IOC和DI一起联用时,可以为对象进行动态的赋值,如果修改实现类,只需要修改配置文件中的class属性即可,java代码不需要做任何的修改。最终实现松耦合。!!!
迄今为止,耦合性问题上没有人做的比Spring好。