ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring框架概述(尚硅谷第一部分学习笔记)

2021-05-05 21:58:18  阅读:125  来源: 互联网

标签:xml String 配置文件 Spring 概述 硅谷 IOC 属性


Spring框架概述(第一部分)

  1. Spring是轻量级的开源的javaEE框架(外部依赖比较小)

  2. Spring 可以解决企业应用开发的复杂性

  3. Spring 有两个核心部分:IOC和Aop

    (1) IOC:控制反转,把创建对象过程交给spring管理,进行对象的实例化

    (2)Aop:面向切面,不修改源代码的情况下进行功能的增强

  4. Spring特点

    (1)方便解耦,简化开发

    (2)Aop编程支持

    (3)声明式事物的支持 方便事物操作

    (4)方便程序的测试

    (5)方便集成各种优秀框 即方便和其他框架整合

    (6)降低java EE API的使用难度

  5. spring下载地址

    https://repo.spring.io/release/org/springframework/spring/****

IOC容器

  1. 什么是IOC

    (1)控制反转,把我们对象的创建和对象之间调用过程,都交给Spring进行管理

    (2)使用IOC目的,为了降低耦合度

    (3)做入门案例就是IOC实现

  2. IOC底层实现原理

    (1)xml解析,工厂模式,反射 :目的:降低耦合度

    第一步: xml配置文件,配置创建对象
    <bean id="user" class="com.atguigu.spring5.User" ></bean>
    
    第二步:有service类和dao类   创建工程类
    1.创建工厂类XXXFactory 类
    2.String classValue=class属性值//  用xml解析
    3.Class clazz=Class.froName(classValue)//通过反射创建对象
    4.return   (XXXDao)clazz.newInstance();
    
    
    
  3. IOC接口(BeanFactory)

    (1)IOC思想基于IOC容器完成,IOC容器底层就是对象工程

    (2)Spring’提供了IOC容器实现两种方法(两个接口)

    • BeaFactory:

      IOC容器基本实现,是Spring内部的使用接口,不提供开发人员进行使用

      区别:加载配置文件的时候不会去创建对象,在获得对象(使用对象)的时候才会去创建对象

    • ApplicationContext:

      BeaFactory接口的子接口,提供了更多更强大的功能,一般由开发人员进行使用

      区别:加载配置文件时候就会把在配置文件对象进行创建

    (3)ApplicationContext接口实现类:

    • 实现类FileSystemXmlApplicationContext:

              ApplicationContext context=new FileSystemXmlApplicationContext("c\xxx\bean1.xml");
              //区别:是路径是根路径c盘符下开始,即全路径
      
    • 实现类ClassPathXmlApplicationContext:

              ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml");
              //区别:类路径 
      
  4. IOC操作Bean管理(基于xml方法实现,注解方式实现)

    (1)什么是Bean管理

    • Spring 创建对象

    • Spring注入属性

       private  String UserName;
       //它的set get方法交给Spring处理
      

    (2)Bean管理操作有两种方法

    • 基于xml方法实现

      1.基于xml方式创建对象
      <!--配置USer对象创建-->
          <bean id="user" class="com.atguigu.spring5.User" ></bean>
      	(1)在spring配置文件中,使用Bean标签,标签里添加对应的属性,就可以实现对象创建
      	(2)在bean标签有很多属性,介绍常用属性
      		id属性:唯一标识
      		class属性:创建那个类  类的全路径(包类路径)
      		name属性:跟id属性类似  区别就是name值可以有其他符号如'\'
      	(3)创建对象的时候,默认也是执行无参的构造方法
      		
      2.基于xml方式注入属性
      (1)DI:依赖注入,就是注入属性(DI是IOC中一种具体实现,注入属性要在创建对象基础上完成)
      
      3. 第一种注入方式,使用set方法进行注入
      (1)创建类,定义属性和对应的set方法
      public class Book {
      //    创建属性
          private String bname;
          private String bauthor;
      //    创建属性对应的set方法
      
          public void setBname(String bname) {
              this.bname = bname;
          }
      
          public void setBauthor(String bauthor) {
              this.bauthor = bauthor;
          }
      (2)在spring配置文件配置对象属性,在配置文件注入
      	<!--1 配置Book对象创建-->
          <!--2 set方法注入属性-->
          <bean id="book" class="com.atguigu.spring5.Book">
              <!-- 使用property完成属性注入
                  name:类里面属性名称
                  value:向属性注入值
              -->
              <property name="bname" value="易筋经"></property>
              <property name="bauthor" value="达摩老祖"></property>
          </bean>
      
      
      4.第二种注入方式:使用有参数的构造方法注入
      (1)创建一个类 定义属性,创建带参的构造方法
      public class Orders {
          private  String oname;
          private String address;
      
          public Orders(String oname, String address) {
              this.oname = oname;
              this.address = address;
          }
      }
      (2)在spring配置文件中进行配置
       <!--1 配置orders对象创建-->
          <!--2 有参构造注入属性-->
          <bean id="order" class="com.atguigu.spring5.Orders">
              <!-- 使用property完成属性注入
                  name:类里面属性名称
                  value:向属性注入值
              -->
              <constructor-arg name="oname" value="abc"></constructor-arg>
              <constructor-arg name="address" value="china"></constructor-arg>
          </bean>
      5.P名称空间注入
      (1)使用p名称空间注入,可以简化基于xml配置的方式
      第一步  添加p名称空间在配置文件中:xmlns:p="http://www.springframework.org/schema/p
      <beans xmlns="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            *** xmlns:p="http://www.springframework.org/schema/p"***
             xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
      第二步进行属性注入,在bean标签里面进行操作
      <bean id="book" class="com.atguigu.spring5.Book" p:bname="九阳神功" p:bauthor="达摩老祖">
          </bean>
         
      
      
  5. IOC操作Bean管理 (xml注入其他属性)

    (1)字面量:

    • ​ null值

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

       <!--属性包含特殊符号
                  1,把<>进行转义
                  2,把带特殊符号内容写到CDATA中
              -->
              <constructor-arg name="oname" value="abc"></constructor-arg>
              <constructor-arg name="address" >
                  <value><![CDATA[<<南京>>]]>
                  </value>
              </constructor-arg>
      

    (2)注入属性外部bean

    • 创建两个类service 和dao类

    • 在service调用dao里面的方法

    • 在spring配置文件中配置

      <bean id="userService" class="com.atguigu.spring5.service.UserService" >
              <property name="userDao"  ref="userDaoImpl"></property>
      
          </bean>
          <bean id="userDaoImpl" class="com.atguigu.spring5.dao.UserDaoImpl">
      
          </bean>
      

    (3)注入属性=内部bean和级联赋值

    • 一对多关系:部门和员工

      一个部门可以有多个员工,一个员工可以属于多个部门

      部门是一,员工是多

    • 在实体类之间表示一对多关系,员工表示所属部门,使用对象类型属性进行表示

    • 在spring配置文件中进行配置

       <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>
      

      (3) IOC操作Bean管理(xml注入集合属性)

      • 注入以一个数组类型属性

      • 注入一个List集合类型属性

      • 注入一个Map集合类型属性

        (1)创建类,定义数组的list,map set集合,生产对应的get方法
        package com.atguigu.spring5.collectiontype;
        
        import java.util.List;
        import java.util.Map;
        import java.util.Set;
        
        public class Stu {
            //数组类型属性
            private String courses;
            //list集合类型的属性
            private List<String > list;
            //Map集合类型的属性
            private Map<String,String> maps;
            private Set<String> sets;
        
            public void setCourses(String courses) {
                this.courses = courses;
            }
        
            public void setList(List<String> list) {
                this.list = list;
            }
        
            public void setMaps(Map<String, String> maps) {
                this.maps = maps;
            }
        
            public void setSets(Set<String> sets) {
                this.sets = sets;
            }
        }
        (2)在spring配置文件中进行配置
        <?xml version="1.0" encoding="UTF-8"?>
        <beans xmlns="http://www.springframework.org/schema/beans"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:p="http://www.springframework.org/schema/p"
               xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
                <!--集合属性-->
            <bean id="stu" class="com.atguigu.spring5.collectiontype.Stu">
                <property name="courses">
                    <array>
                        <value>英语</value>
                        <value>java课程</value>
                        <value>数据库课程</value>
                    </array>
                </property>
                <property name="list">
                    <list>
                        <value>张三</value>
                        <value>小三</value>
                    </list>
                </property>
        
                <property name="maps">
                    <map>
                        <entry key="JAVA" value="java"></entry>
                        <entry key="PHP" value="php"></entry>
                    </map>
                </property>
                <property name="sets">
                    <set>
                        <value>Mysql</value>
                        <value>redis</value>
                    </set>
                </property>
        
        
            </bean>
        </beans>
        
        • 设置对象类型的值

            <property name="courselist">
                      <list>
                          <ref bean="course1"></ref>
                          <ref bean="course2"></ref>
                      </list>
                  </property>
          
              </bean>
              <bean id="course1" class="com.atguigu.spring5.collectiontype.Course">
                  <property name="cname" value="ss"></property>
              </bean>
              <bean id="course2" class="com.atguigu.spring5.collectiontype.Course">
                  <property name="cname" value="MyBatis"></property>
              </bean>
          
          
          • 把注入部分提取出来

            (1)在spring配置文件中引用名称空间util

            <?xml version="1.0" encoding="UTF-8"?>
            <beans xmlns="http://www.springframework.org/schema/beans"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:p="http://www.springframework.org/schema/p"
                   xmlns:util="http://www.springframework.org/schema/util"
                   xsi:schemaLocation="http://www.springframework.org/schema/beans
                                       http://www.springframework.org/schema/beans/spring-beans.xsd
                                       http://www.springframework.org/schema/util
                                       http://www.springframework.org/schema/util/spring-util.xsd
                                       ">
            <!--     提取list集合类型属性注入-->
             <util:list id="booklist">
                 <value>易筋经</value>
                 <value>九阴真经</value>
                 <value>九阳神功</value>
             </util:list>
                <bean id="book" class="com.atguigu.spring5.collectiontype.Book">
                    <property name="list" ref="booklist"></property>
                </bean>
            </beans>
            

标签:xml,String,配置文件,Spring,概述,硅谷,IOC,属性
来源: https://blog.csdn.net/qq_55819440/article/details/116431121

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有