Java教程Spring框架开发——第一天
Spring概念:
1、Spring是一个开源的轻量级框架,即是免费的提供源码的不需要依赖其他组件的框架;
2、Spring是一个一站式的框架;
- web层:springMVC
- service层:spring的IOC
- dao层:spring的jdbcTemplate
3、Spring核心主要是两部分:
- AOP:面向切面编程,扩展功能不是通过修改源代码实现;
- IOC:控制反转
|- 创建类对象的过程,需要new出来对象,比如有一个类,类里面有方法(不是静态的方法),调用类里面的方法,创建类的对象, 使用对象调用方法;
|- 对象的创建不是通过new来实现的,而是交给spring配置创建类对象;
4、spring版本
- hibernate5.x
- spring4.x
Spring 的ioc操作:
- 把对象的创建交给spring进行管理
- ioc操作两部分:
- ioc的配置文件方式
- ioc的注解方式
IOC 底层原理:
- ioc底层原理使用技术
- xml 配置文件
- dom4j 解析 xml
- 工厂设计模式
- 反射
- 画图分析IOC实现原理
Spring入门案例:
- 第一步 导入jar包:核心架包主要有4个,还有导入日志的架包
- 第二步 创建类,在类里面创建方法
原始做法 :
- 第三步 创建spring配置文件,配置创建类
1、spring核心配置文件名称和位置不是固定的。
|- 建议放到src下面,官方建议applicationContext.xml
2、引入schema约束
3、配置对象创建:
- 第四步 写代码测试对象创建
bean实例化的三种方式:
第一种:使用的类的无参构造创建(重点)
类里面没有无参构造时会出现异常;
第二种:使用静态工厂创建
创建静态的方法,返回类的对象
第三种:使用实例工厂创建
创建不是静态的方法,返回类的对象
Bean标签常用属性:
- id属性:起名称,id属性值名称任意命名,但是id属性值,不能包含特殊符号,可根据id值得到配置对象;
- class属性:创建对象所在类的全路径;
- name属性:功能和 id 属性一样的,id 属性值不能包含特殊符号,但是在name属性值里面可以包含特殊符号;
- scope属性:
- singleton:默认值,单例的,在bean标签中加上scope="singleton"
- prototype:多例的
- request∶WEB项目中,Spring创建一个Bean的对象,将对象存入到request域中
- session:WEB项目中,spring 创建一个Bean的对象,将对象存入到session域中
- globalSession:WEB项目中,应用在 Porlet环境.如果没有Porlet环境那么globalSession相当session
属性注入:
- 创建对象时,向类里面的属性设置值
- 属性注入的方式介绍(3种)
- 在spring种支持前两种方式
使用有参数构造注入属性:
使用set方法注入属性:
注入对象类型属性:
1、创建service类和dao类。
- 在service得到dao对象
2、具体实现过程:
- 在service里面把dao作为类型属性
- 生成dao类型属性的set方法
- 注入对象类型的属性
- 测试:
P命名空间注入:
- 引入P命名空间:
- P配置关系
- 测试
注入复杂类型属性:
- 数组:
- list集合:
- map集合:
- properties类型:
案例:
- 首先定义并生成set方法,以及进行输出
- 进行配置:
总体框架:
IOC和DI区别:
- IOC:控制反转,把对象创建交给spring进行配置
- DI:依赖注入,向类里面的属性中设置值
- 关系:依赖注入不能单独存在,需要在ioc基础之上完成操作。
spring整合web项目原理:
1、加载spring核心配置文件,
- new对象,功能可以实现,效率很低
2、实现思想:把加载配置文件和创建对象过程,在服务器启动时候完成
3、实现原理:
- ServletContext对象
- 监听器
- 具体使用:
- 在服务器启动时候,为每个项目创建一个v ServletContext 对象
- 在ServletContext,对象创建时候,使用监听器可以具体到SerxletContext对象在什么时候创建
- 使用监听器监听到ServletContext对象创建时候
- 加载spring配置文件,把配置文件配置对象创建
- 把创建出来的对象放到ServletContext域对象里面(setAttribute方法)
- 获取对象时候,到ServletContext域得到(getAttribute方法)