zoukankan      html  css  js  c++  java
  • 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方法)

    参考资料:

    《黑马程序员》

  • 相关阅读:
    Linux配置Java环境
    Oracle的flashback特性之一:Flashback Query
    Oracle的flashback特性之二:Flashback Table
    吴恩达深度学习笔记 (补)1.1~1.5 神经网络概述
    吴恩达深度学习笔记 2.10~2.18 向量化与python
    吴恩达深度学习笔记 2.6~2.9 logistic中的梯度下降
    吴恩达深度学习笔记 2.3 logistic回归损失
    吴恩达深度学习笔记2.2 logistic回归
    吴恩达深度学习笔记2.1 二分分类
    [ubuntu]安装并使用python 3.6及与2.7的切换
  • 原文地址:https://www.cnblogs.com/pony1223/p/9840268.html
Copyright © 2011-2022 走看看