Spring学习笔记---尚硅谷

本文是Spring框架的学习笔记,涵盖了Spring的基本概念、IOC容器、AOP、JdbcTemplate以及事务管理等内容。从Spring的核心部分IOC和AOP出发,详细介绍了基于XML和注解的Bean管理,包括Bean的创建、注入属性、作用域和生命周期。接着讲解了AOP的基本概念、底层原理和使用,以及JdbcTemplate进行数据库操作的方法。最后,文章探讨了Spring的事务管理,包括编程式和声明式事务的实现与配置。
摘要由CSDN通过智能技术生成

课程内容

  • Spring框架概述
  • IOC容器
  • AOP
  • JdbcTemplate
  • 事务管理
  • Spring5新特性

Spring框架描述

  • Spring是轻量级开源的JavaEE框架

  • Spring可以解决企业开发的复杂性

  • Spring有两个核心部分:IOCAOP

    • IOC:控制反转,把创建对象的过程交给Spring进行管理
    • AOP:面向切面,不修改源代码进行功能增强
  • Spring特点

    • 方便解耦,简化开发
    • Aop编程支持
    • 方便程序测试
    • 方便和其他框架进行整合
    • 方便进行事务操作
    • 降低API开发难度
  • 现在使用的是Spring5

入门案例

  1. 下载Spring

<img src="在这里插入图片描述
2. 打开Idea,创建普通Java工程

  1. 导入Spring5相关的jar包
  1. 创建普通类,在这个类创建普通方法
public class User {
   
    public void add() {
   
        System.out.println("add.....");
    }
}
  1. 创建Spring配置文件,在配置文件配置创建的对象
  • Spring的配置文件使用xml格式

    在这里插入图片描述

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
        <!--配置User对象创建-->
        <bean id="user" class="com.atguigu.spring5.User"></bean>
    </beans>
    
  1. 进行测试代码编写
@Test
public void testAdd() {
   
    //1 加载配置文件
    ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");

    //2 获取配置创建的对象
    User user = context.getBean("user", User.class);
    System.out.println(user);
    user.add();
}

IOC容器

IOC底层原理

  • 什么是IOC

    • 控制反转,把对象创建和对象之间的调用过程,交给Spring进行管理
    • 使用IOC目的:降低耦合度
    • 入门案例就是IOC实现
  • xml解析、工厂模式、反射

  • IOC过程

    1. xml配置文件,配置创建的对象
    2. 有Service类和Dao类,创建工厂类
  • IOC接口(BeanFactory)

    • IOC思想基于IOC容器完成,IOC容器底层就是对象工厂
    • Spring提供了IOC容器实现的两种方式:(两个接口)
      • BeanFactory:IOC容器基本实现,是Spring内部使用接口,不提供开发人员进行使用
        • 加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象
      • ApplicationContext:BeaFactory接口的子接口,提供更多更强大的功能,一般由开发人员使用
        • 加载配置文件时候就会把在配置文件对象进行创建
    • ApplicationContext实现类
  • 什么是Bean管理

    1. Spring创建对象
    2. Spring注入属性

Bean管理操作—基于xml

1. 基于xml配置文件实现
  • 基于xml方式创建对象
    xml<bean id="user" class="com.atguigu.spring5.User"></bean>

    • 在Spring配置文件中,使用bean标签,标签里面添加对应属性,就可以实现 对象创建
    • 在bean标签中有很多属性,介绍常用属性
    • id属性:唯一标识
    • class属性:类的全路径(包类+路径)
    • 创建对象时,默认也是执行无参数构造方法完成对象
  • 基于xml注入属性

    • DI:依赖注入,就是注入属性

      • 第一种注入方式,set()方法进行注入

        <bean id="book" class="com.atguigu.spring5.Book">
            <!--   使用property完成属性注入
          name:类里面属性名称
          value:向属性注入的值
          -->
            <property name="bname" value="易筋经"></property>
            <property name="bauthor" value="达摩"></property>
        </bean>
        
      • 第二种注入方式,使用有参数的构造进行注入

        • 创建类,定义属性,创建属性对应有参数构造方法

        • 在Spring配置文件中配置

          <!-- 有参构造注入属性 -->
          <bean id="orders" class="com.atguigu.spring5.Orders">
              <constructor-arg name="oname" value="电脑">   </constructor-arg>
              <constructor-arg name="address" value="中国"></constructor-arg>
          </bean>
          
        • p名称空间注入(做了解)

          • 使用p名称空间注入,可以简化基于xml配置的set()方法输入,使用时需要有set()方法
          • 第一步:添加p名称空间在配置文件中xmlns:p="http://www.springframework.org/schema/p"
          • 第二步:进行属性注入
            <bean id="book" class="com.atguigu.spring5.Book" p:bname="九阳神功" p:bauthor="无名氏">
            </bean>
            
      • xml注入其他类型属性

        • null值

          <!--null值-->
          <property name="address">
              <null/>
          </property>
          
        • 属性值包含特殊符号

          <!-- 属性值包含特殊符号
                 1. 把<>进行转译 &lt;&gt;
                 2. 把带特殊符号的内容写到CDATA
              -->
          <property name="address">
              <value><![CDATA[<<南京>>]]></value>
          </property>
          
    • 注入属性----外部bean(使用ref属性

      1. 创建两个类service类和dao类

      2. 在service调用dao里面的方法

      3. 在Spring配置文件中进行配置

        <!--  1.service和dao对象创建  -->
        <bean id="usrService" class="com.atguigu.spring5.service.UserService">
            <!--    注入UserDao对象
            name属性值,类里面属性名称
            ref属性:创建userDao对象bean标签id值
            -->
        	<property name="userDao" ref="userDaoImpl"></property>
        </bean>
        <bean id="userDaoImpl" class="com.atguigu.spring5.dao.UserDaoImpl"></bean>
        
    • 注入属性----内部bean和级联赋值

      1. 一对多的关系:部门和员工

        • 一个部门有多个员工,一个员工属于一个部门
        • 部门是一,员工是多
      2. 在实体类之间表示一对多关系,员工表示所属部门,使用对象类型进行表示

      3. 在Spring配置文件中进行配置

        <!--  内部bean  -->
        <bean id="emp" class="com.atguigu.spring5.bean.Emp">
            <!--    设置两个普通属性    -->
            <property name="ename" value="lucy"></property>
            <property name="gender" value=""></property>
            <!--    设置对象属性    -->
            <property name="dept">
                <bean id="dept" class="com.atguigu.spring5.bean.Dept">
                    <property name="dname" value="安保部"></property>
                </bean>
            </property>
        </bean>
        
      4. 注入属性----级联赋值

        <bean id="emp" class="com.atguigu.spring5.bean.Emp">
            <!--    设置两个普通属性    -->
            <property name="ename" value="lucy"></property>
            <property name="gender" value=""></property>
            <!--   级联赋值     -->
            <property name="dept" ref="dept"></property>
        </bean>
        <bean id="dept" class="com.atguigu.spring5.bean.Dept">
            <property name="dname" value="财务部"></property>
        </bean>
        

        或者

         <bean id="emp" class="com.atguigu.spring5.bean.Emp">
             <!--    设置两个普通属性    -->
             <property name="ename" value="lucy"></property>
             <property name="gender" value=""></property>
             <!--   级联赋值     -->
             <property name="dept" ref="dept"></property>
             <property name="dept.dname" value="技术部"></property>
        </bean>
        <bean id="dept" class="com.atguigu.spring5.bean.Dept">
            <property name="dname" value="财务部"></property>
        </bean>
        
    • xml注入集合属性

      1. 注入数组

      2. 注入List集合属性

      3. 注入Map集合

        <!--集合类型属性注入-->
        <bean id="stu" class="com.atguigu.spring5.coolectiontype.Stu">
            <!--   数组类型属性注入    -->
            <property name="courses">
                <array>
                    <value>java课程</value>
                    <value>数据库课程</value>
                </array>
            </property>
            <!--   list属性注入    -->
            <property name="list">
                <list>
                    <value>张三</value>
                    <value>小三</value>
                </list>
            </property>
            <!--   map类型属性输入    -->
            <property name="maps">
                <map>
                    <entry key="JAVA" value="java"></entry>
                    <entry key="PHP" value="php"></entry>
                </map>
            </property>
            <!--   set类型注入    -->
            <property name="sets">
                <set>
                    <value>MySQL</value>
                    <value>Redis</value>
                </set>
            </property>
        </bean>
        
      4. ​ 在集合里面设置对象类型值

        <!--集合类型属性注入-->
        <bean id="stu" class="com.atguigu.spring5.coolectiontype.Stu">
            <!--  注入list集合类型,值是对象    -->
            <property name="courseList">
                <list>
                    <ref bean="course1"></ref>
                    <ref bean="course2"></ref>
                </list>
            </property>
        </bean>
        
        <!--  创建多个Course对象  -->
        <bean id="course1" class="com.atguigu.spring5.coolectiontype.Course">
            <property name="cname" value="Spring5框架课程"></property>
        </bean
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值