目录
学习流程
1.Spring的基本概述
1.1spring是一个开源框架 轻量级 2003年兴起的 俗称一站式轻量级开源框架
1.2spring的好处:
1.3Spring的版本
1.4Spring的IOC入门
1.5官网:http://spring.io/ 没有JAR的可以去官网下载
1.6解压Spring的开发包
1.7三种jar简单介绍
1.8我们来创建一个WEB项目
1.9代码模板
1.10 SpringIOC底层实现详解!!! 例如之前使用MYSQL 换其他数据库 可能需要改源码 现在Spring就是在帮助我们 以后无需改源码 改配置文件即可
2.0 DI和IOC的区别
2.1 Spring的工厂类
2.2ApplicationContext和BeanFactory区别
2.3XML的自动提升 配置在celipse中wendow 查找到XML 去配置 前提你是有约束的
2.4Bean的相关的配置
2.5Bean的生命周期的配置(了解)
2.6Bean的作用范围的配置(重点)
2.7Spring的Bean的实例化方式(了解)
无参构造方法的方式(默认)
静态工厂实例化的方式
实例工厂实例化的方式
Spring的属性注入
Set方法的方式的属性注入
P名称空间的属性注入(Spring2.5以后)
SpEL的属性注入(Spring3.0以后)
集合类型属性注入(了解)
Spring的IOC的注解开发
Spring3.x和Spring4.x Spring5.x (已经出来了)
IOC俗称"控制反转"
控制反转:将对象的创建权反转给(交给)Spring。意思把对象交给Srping容器来创建 底层会使用Spring的工厂类通过xml配置文件+反射来实现 具体后面详细介绍 不需要NEW 来创建对象了 工厂模块不清楚的可以去看看23种设计模式 PS:有的也说24种
我学spring 用了 两种模式 一个maven 一个是普通自己导入jar 出现一大堆问题(已解决PS不会的去CSDN看看大佬博客立马get到错误的点了) 主要还是JAR包问居多 建议用maven还是不错的 前提有网络 不然缺少jar 无法去中央仓库去下载
由于网络限制上不了QQ 无法截图 具体详细 我博客写完会把我的SpringDemo上传到CSDN 感兴趣的可以下载学习
.jar 就是我们需要使用的Spring的jar包
javadoc.jar 是JAR包的官方文档 可以打开看看
sources.jar 是源码 感兴趣的可以把这个导入到项目中查看源码
下面是体系结构
引入包的话 目前我们首先引入上面红框框的四块jar 最基础的jar 后面使用其他的 再导入
0. 是apache提供的日志接口 --定义的都是接口规范
1.Spring的日志文件
2. 四个基本jar(最主要的!!)
创建一个接口及接口实现类
/**
* 用户管理DAO层接口
* @author jt
*
*/
public interface UserDAO {
public void save();
}
/**
* 用户管理DAO层实现类
* @author jt
*
*/
public class UserDAOImpl implements UserDAO {
private String name;
public void setName(String name) {
this.name = name;
}
public void save() {
System.out.println("UserDAOImpl执行了..."+name);
}
}
创建一个测试类
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
/**
* Spring的入门
* @author jt
*
*/
public class SpringDemo1 {
@Test
/**
* 传统方式的调用
*/
public void demo1(){
UserDAOImpl userDAO = new UserDAOImpl();
userDAO.setName("王东");
userDAO.save();
}
@Test
/**
* Spring的方式的调用
*/
public void demo2(){
// 创建Spring的工厂
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDAO userDAO = (UserDAO) applicationContext.getBean("userDAO");
userDAO.save();
}
@Test
/**
* 加载磁盘上的配置文件
*/
public void demo3(){
ApplicationContext applicationContext = new FileSystemXmlApplicationContext("C:\\applicationContext.xml");
UserDAO userDAO = (UserDAO) applicationContext.getBean("userDAO");
userDAO.save();
}
}
思考 这是传统方式 有什么不好的?
如果底层的实现切换了,需要修改源代码,能不能不修改程序源代码对程序进行扩展?
那么就引入了Spring的IOC底层实现
以前想创建对象 用传统方式 需要实现类 或者接口方式
问题2 面向接口编程的优缺点?(想深入研究去看大佬博客)
多态 方便程序的扩展 缺点 有耦合 联系过紧 需要改底层源代码
OCP原则认为:一个软件应该对扩展开放,对修改关闭。设计模式原则 这个很重要 我现在也是了解个皮毛
好的程序设计 应该满足OCP(设计模式) 尽量不修改底层源码的情况下对程序做扩展
工厂模式------>
applicationContext.xml的配置(默认名字) 上面是Bean的约束 可以去Spring查找的复制过来
上面是如何写Bean的约束 不清楚的可以百度
IOC:控制反转,将对象的创建权反转给了Spring。
DI:依赖注入(DI的前提是IOC的环境 才可以使用DI )前提必须有IOC的环境,
Spring管理这个类的时候将类的依赖的属性注入(设置)进来
2.1依赖 B中有A
Class A{}
Class B{
public void xxx(A a){}}
继承:is a 父子
Class A{}
Class B extends A{}
聚合:has a 包含
Spring工厂类的结构图
ApplicationContext继承BeanFactory。
个人理解 第一个 可以认为 是相对路径 默认查找Src路径下的配置文件 第二个是绝对路径 包含本地磁盘的路径
PS: 个人认为
Bean已经都交给Spring管理,Spring创建这些类的时候,有几种方式:
王东
赵洪
李冠希
李兵
赵如何
邓凤
aaa
bbb
ccc