Spring 学习01

一、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方法)

参考资料:

《黑马程序员》

原文地址:https://www.cnblogs.com/pony1223/p/9840268.html

时间: 2024-10-10 06:41:37

Spring 学习01的相关文章

Spring学习01——HelloSpring

这是一个spring入门demo: package com.su.test; public class HelloWorld { public void say(){ System.out.println("Spring4!"); } } package com.su.service; import org.springframework.context.ApplicationContext; import org.springframework.context.support.Cla

《Spring学习笔记》:Spring、Hibernate、struts2的整合(以例子来慢慢讲解,篇幅较长)

<Spring学习笔记>:Spring.Hibernate.struts2的整合(以例子来慢慢讲解,篇幅较长) 最近在看马士兵老师的关于Spring方面的视频,讲解的挺好的,到了Spring.Hibernate.struts2整合这里,由于是以例子的形式来对Spring+Hibernate+struts2这3大框架进行整合,因此,自己还跟着写代码的过程中,发现还是遇到了很多问题,因此,就记录下. 特此说明:本篇博文完全参考于马士兵老师的<Spring视频教程>. 本篇博文均以如下这

spring学习毕竟

java web 24 堂课  spring学习笔记 16.01 构造器注入 1.\applicationContext.xml 默认在src目录下 <bean name="user" class="com.mr.user.User">  <constructor-arg>   <value>小强</value>  </constructor-arg>  <constructor-arg>   

设计模式学习01—单例模式

一.动机与定义 系统中有些资源只能有一个,或者一个就够,多个浪费.例如一个系统只能有一个窗口管理器或文件系统.一个系统只能有一个计时器或序号生成器.web系统只能有一个页面计数器等等.此时,最好就需要把这些资源设置成有且仅有一个实例. 代码中也就是如何保证一个类只有一个实例并且这个实例能够被访问呢?只有一个实例的就意味着不能让其他类来实例化,也就是只能自己实例化自己.能够被访问也就意味着自身要对外提供全局方法来获取到这个实例,这就是单例模式. 单例模式定义:确保某一个类只有一个实例,而且自行实例

Struts2 + Spring 学习(一)搭建struts开发环境

·为Web应用增加Struts2支持 1. 登陆struts2官网下载struts2的最新版,本文所用的是Struts 2.3.16.2 我们所下载的压缩包内内容应给如下 其中,apps包含了struts2的实例应用,docs包含了struts2的相关文档,lib包含了Struts2框架的核心类库以及struts2的第三方插件类库,src包含了struc包含了struts2框架的全部源码. 2. 在Eclipse新建Web工程,将是所用到的类库放到WEB-INF/路径下 3. 编辑Web应用的w

Spring学习笔记(一)

Spring学习笔记(一) Spring核心思想: IOC:  Inversion Of Control (控制反转) / DI: Dependency Injection (依赖注入) AOP: Aspect Oriented Programming (面向切面编程) IOC 1. 简单的应用 Model package com.wangj.spring.model; public class User { private String username; private String pas

不错的Spring学习笔记(转)

Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是spring.jar和commons-logging.jar.此外为了便于测试加入了JUnit包.   在Myeclipse中创建Java项目.   编写一个接口类,为了简单,只加入了一个方法.   Java代码   1.package com.szy.spring.interfacebean;  

OSX学习01之更新头像

前不久在官网上守株待兔,买了一个官翻版865,其实最想买294的,可是米不足啊——所以,在同时下了865和293的订单,并纠结了一天后,确定了865,剩余的钱够一个Mac mini了,如果不买也可以日后买iMac. 相关的内容等会儿写另一帖,废话就不说了. 拆机后简单的设置下账户信息,但是没觉得账户图片好看,又没发现又什么方式设置账户图片,纠结了很久. 本机没有什么图片,这时候可以先把图片下载下来再说. 进入系统偏好设置-->用户与群组-->当前用户,点击现有头像-->最近使用-->

spring学习一——基本搭建,属性注入的两种方式

今天用spring 3.2.5搭建了基本的环境,spring出的太快了,前段时间才3.2.5,今儿个一瞧已经上了4的版本了,稍后给出spring的jar下载地址,毕竟现在官网上找不到了啊. 废话少说了,spring 3.2.5已经将所有的依赖包都放在了dist的lib下面,并且都有doc包和源码包,很是方便.先导入所需的jar包:core,context,beans,expression 四个jar包,除此之外,还需导入commons-logging. 下一步,新建xml文件,建议名称为 app