一、Spring概念

1 spring是开源的轻量级框架

2 spring核心主要两部分:

(1)aop:面向切面编程,扩展功能不是修改源代码实现

(2)ioc:控制反转,

- 比如有一个类,在类里面有方法(不是静态的方法),调用类里面的方法,创建类的对象,使用对象调用方法,创建类对象的过程,需要new出来对象

- 把对象的创建不是通过new方式实现,而是交给spring配置创建类对象

3 spring是一站式框架

(1)spring在javaee三层结构中,每一层都提供不同的解决技术

- web层:springMVC

- service层:spring的ioc

- dao层:spring的jdbcTemplate

4 spring版本

(1)hibernate5.x

(2)spring4.x

二、Spring的ioc操作

1 把对象的创建交给spring进行管理

2 ioc操作两部分:

(1)ioc的配置文件方式

(2)ioc的注解方式

三、IOC底层原理

1 ioc底层原理使用技术

(1)xml配置文件

(2)dom4j解决xml

(3)工厂设计模式

(4)反射

2 画图分析ioc实现原理

四、IOC入门案例

第一步 导入jar包

(1)解压资料zip文件

Jar特点:都有三个jar包

(2)做spring最基本功能时候,导入四个核心的jar包就可以了

(3)导入支持日志输出的jar包

第二步 创建类,在类里面创建方法

第三步 创建spring配置文件,配置创建类

(1)spring核心配置文件名称和位置不是固定的

- 建议放到src下面,官方建议applicationContext.xml

(2)引入schema约束

(3)配置对象创建

第四步 写代码测试对象创建

(1)这段代码在测试中使用

五、配置文件没有提示问题

1 spring引入schema约束,把约束文件引入到eclipse中

(1)复制约束路径

六、Spring的bean管理(xml方式)

1.Bean实例化的方式

1 在spring里面通过配置文件创建对象

2 bean实例化三种方式实现

第一种 使用类的无参数构造创建(重点)

类里面没有无参数的构造,出现异常

第二种 使用静态工厂创建

(1)创建静态的方法,返回类对象

第三种 使用实例工厂创建

(1)创建不是静态的方法,返回类对象

2.Bean标签常用属性

(1)id属性:起名称,id属性值名称任意命名

- id属性值,不能包含特殊符号

- 根据id值得到配置对象

(2)class属性:创建对象所在类的全路径

(3)name属性:功能和id属性一样的,id属性值不能包含特殊符号,但是在name属性值里面可以包含特殊符号

(4)scope属性

- singleton:默认值,单例

prototype:多例

- request:创建对象把对象放到request域里面

- session:创建对象把对象放到session域里面

- globalSession:创建对象把对象放到globalSession里面

七、属性注入介绍

1 创建对象时候,向类里面属性里面设置值

2 属性注入的方式介绍(三种方式)

(1)使用set方法注入

(2)使用有参数构造注入

(3)使用接口注入

3 在spring框架里面,支持前两种方式

(1)set方法注入(重点)

(2)有参数构造注入

使用有参数构造注入属性

使用set方法注入属性(重点)

八、注入对象类型属性(重点)

1 创建service类和dao类

(1)在service得到dao对象

2 具体实现过程

(1)在service里面把dao作为类型属性

(2)生成dao类型属性的set方法

(3)配置文件中注入关系

九、P名称空间注入(了解)

十、注入复杂类型属性【掌握】

1 数组

2 list集合

3 map集合

4 properties类型

<!-- 注入复杂类型属性值 -->
<bean id="person" class="cn.itcast.property.Person">
<!-- 数组 -->
<property name="arrs">
<list>
<value>小王</value>
<value>小马</value>
<value>小宋</value>
</list>
</property> <!-- list -->
<property name="list">
<list>
<value>小奥</value>
<value>小金</value>
<value>小普</value>
</list>
</property> <!-- map -->
<property name="map">
<map>
<entry key="aa" value="lucy"></entry>
<entry key="bb" value="mary"></entry>
<entry key="cc" value="tom"></entry>
</map>
</property> <!-- properties -->
<property name="properties">
<props>
<prop key="driverclass">com.mysql.jdbc.Driver</prop>
<prop key="username">root</prop>
</props>
</property>
</bean>

十一、IOC和DI区别

(1)IOC: 控制反转,把对象创建交给spring进行配置

(2)DI: 依赖注入,向类里面的属性中设置值

(3)关系:依赖注入不能单独存在,需要在ioc基础之上完成操作

十二、Spring整合web项目原理

1 加载spring核心配置文件,

(1)new对象,功能可以实现,效率很低

2 实现思想:把加载配置文件和创建对象过程,在服务器启动时候完成

3 实现原理

(1)ServletContext对象

(2)监听器

(3)具体使用:

- 在服务器启动时候,为每个项目创建一个ServletContext对象

- 在ServletContext对象创建时候,使用监听器可以具体到ServletContext对象在什么时候创建

- 使用监听器监听到ServletContext对象创建时候,

-- 加载spring配置文件,把配置文件配置对象创建

-- 把创建出来的对象放到ServletContext域对象里面(setAttribute方法)

- 获取对象时候,到ServletContext域得到 (getAttribute方法)

参考资料:

《黑马程序员》

Spring 学习01的更多相关文章

  1. spring学习(01)之IOC

    spring学习(01)之IOC IOC:控制反转——Spring通过一种称作控制反转(IOC)的技术促进了低耦合.当应用了IOC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创 ...

  2. Spring学习-01

    一.Srping 一个轻量级DI.IOC.AOP的容器框架 DI:依赖注入 IOC:控制反转 AOP:面向切面 二.构造器注入 Constructor-arg 属性:index/name/type/r ...

  3. Spring学习01——HelloSpring

    这是一个spring入门demo: package com.su.test; public class HelloWorld { public void say(){ System.out.print ...

  4. Spring学习01(IOC)

    1.Spring概述 简介 2002年,Rod Jahnson首次推出了Spring框架雏形interface21框架. 2004年3月24日,Spring框架以interface21框架为基础,经过 ...

  5. 我的Spring学习记录(二)

    本篇就简单的说一下Bean的装配和AOP 本篇的项目是在上一篇我的Spring学习记录(一) 中项目的基础上进行开发的 1. 使用setter方法和构造方法装配Bean 1.1 前期准备 使用sett ...

  6. Spring学习之——手写Spring源码V2.0(实现IOC、D、MVC、AOP)

    前言 在上一篇<Spring学习之——手写Spring源码(V1.0)>中,我实现了一个Mini版本的Spring框架,在这几天,博主又看了不少关于Spring源码解析的视频,受益匪浅,也 ...

  7. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  8. spring 学习之 bean 的注入方式 property和constructor-arg的使用方式

    spring 学习之 bean 的注入方式 property和constructor-arg的使用方式. bean的注入方式: property 注入是: 通过setxx方法注入. construct ...

  9. Java虚拟机JVM学习01 流程概述

    Java虚拟机JVM学习01 流程概述 Java虚拟机与程序的生命周期 一个运行时的Java虚拟机(JVM)负责运行一个Java程序. 当启动一个Java程序时,一个虚拟机实例诞生:当程序关闭退出,这 ...

随机推荐

  1. python中类中属性和方法的具体定义方法和使用

    1. Python中类中特性分成属性和方法 属性和方法都分为私有和公有的,私有的只可以在本类中使用外部是无法访问的 2. 定义属性(成员变量)的语法格式(公有属性/私有属性) class 类名: de ...

  2. [PLC]ST语言四:INV_MEP_MEF_PLS_PLF_MC_MCR

    一:INV_MEP_MEF_PLS_PLF_MC_MCR 说明:简单的顺控指令不做其他说明. 控制要求:无 编程梯形图: 结构化编程ST语言: (*运算结果的反转INV(EN);*) M415:=in ...

  3. linux重启tomcat的shell脚本

    基本思路: 先检查待重启的tomcat的进程是否存在 存在则执行shutdown. 然后再次检查进程是否还存在,不存在则执行kill 然后删除工作空间及10天前的日志. 最后执行启动. #!/bin/ ...

  4. CDH 5.16.1 离线部署 & 通过 CDH 部署 Hadoop 服务

    参考 Cloudera Enterprise 5.16.x Installing Cloudera Manager, CDH, and Managed Services Installation Pa ...

  5. Codeforces Round #546 (Div. 2) E - Nastya Hasn't Written a Legend

    这题是一个贼搞人的线段树 线段树维护的是 区间和a[i - j] 首先对于update的位置可以二分查找 其次update时候的lazy比较技巧 比如更新的是 l-r段,增加的是c 那么这段的值为: ...

  6. VC++ MFC程序设置以管理员权限运行

    1.引入资源文件 (.manifest文件),文件中的 name 值为程序全称.exe:文件内容如下: <?xml version="1.0" encoding=" ...

  7. PAT甲题题解-1021. Deepest Root (25)-dfs+并查集

    dfs求最大层数并查集求连通个数 #include <iostream> #include <cstdio> #include <algorithm> #inclu ...

  8. 《linux内核分析》chapter3读书笔记

  9. Alpha冲刺第6天

    Alpha第六天 1.团队成员 郑西坤 031602542 (队长) 陈俊杰 031602504 陈顺兴 031602505 张胜男 031602540 廖钰萍 031602323 雷光游 03160 ...

  10. WM_CONCAT和LISTAGG 语法例子

    select to_char(replace(wm_concat(name), ',', '')) from codeitems where setid = 'A018' and ' like cod ...