Spring5框架总结学习(从入门到进阶)

news2024/9/21 22:56:44

文章目录

  • Spring5
    • 1、如何创建一个Spring项目(idea版)
    • 2、 IOC容器
      • 1、XML解析+工厂模式+反射
      • 2、bean管理
        • 1、总述
        • 2、基于XML创建对象
        • 3、基于XML注入属性
        • 4、基于XML注入属性,属性值为空或特殊符号
        • 5、基于XML注入属性,外部bean
        • 6、基于XML注入属性,内部bean和级联赋值
        • 7、基于XML注入属性,级联赋值
        • 8、基于XML注入属性,集合属性(数组,list,map)
        • 9、基于XML注入属性,集合属性(数组,list,map)

Spring5

———————————————————————————————————————————————————————————

1、如何创建一个Spring项目(idea版)

1、新建一个java工程,并在项目下创建一个lib文件夹,用来存放Spring框架要导入的jar包

在这里插入图片描述

2、创建一个User类

在这里插入图片描述

3、创建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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<!--    配置User对象创建-->
	<bean id="user" class="com.Spring5.User"></bean>
    
</beans>

4、进行测试代码编写

		//加载Spring配置文件
        ApplicationContext context =new ClassPathXmlApplicationContext("bean1.xml");

        //获取配置创建的对象
        //"user"为配置文件中User类,id的值
        User user=context.getBean("user", User.class);

        user.add();

2、 IOC容器

1、XML解析+工厂模式+反射

IOC思想基于IOC容器完成的,IOC底层就是对象工厂。

Spring提供IOC容器实现2种方式

  • BeanFactory:是Spring内部接口,不提供开发人员使用。加载配置文件时,不会创建对象,只有这个对象被使用时才会创建。
  • ApplicationContext:BeanFactory的子接口,提供更强大的功能,一般由开发人员使用。加载配置文件时,就会把配置文件内的对象全部创建。

2、bean管理

1、总述

2.1、 主要包括2种操作

  • Spring创建对象
  • Spring注入属性

2.2、2种实现方式

  • 基于配置文件方式
  • 基于注解方式

2、基于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.Spring5.User"></bean>
    
</beans>
  • id 代表这个类的唯一标识
  • class 类的全路径
  • 创建对象时,默认执行无参构造函数。

3、基于XML注入属性

第一种方式:使用set方法注入

	public class User {
    private String name;
    public void add()
    {
        System.out.println("add......");
    }

    public void setName(String name) {
        this.name = name;
    }
}
<bean id="user" class="com.Spring5.User">
    <!--name:属性名字
        value:想要设置的属性名字
    -->
    <property name="name" value="AA"></property>
</bean>

第二种方式:使用含参构造函数

	private String name;
    private String passwd;

    public User(String name, String passwd) {
        this.name = name;
        this.passwd = passwd;
    }
<bean id="user" class="com.Spring5.User">

		<!--name:属性名字
            value:想要设置的属性名字
        -->
    
    <constructor-arg name="name" value="AA"></constructor-arg>
    <constructor-arg name="passwd" value="1234"></constructor-arg>
    
</bean>

4、基于XML注入属性,属性值为空或特殊符号

空值、name=null

<property name="name">
    <null></null>
 </property>

特殊符号 name= <<南京>>

	<property name="name">
    <value><![CDATA[<<南京>>]]></value>
    </property>

5、基于XML注入属性,外部bean

原方法:
在这里插入图片描述
基于配置文件方法

public class UserService {
    private UserDao userDao;
    
    public void add()
    {
        userDao.update();
    }
     public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
}
 <bean id="userSevice" class="com.service.UserService">
 
 		<!--  ref属性:创建userDao标签的id值   -->
        <property name="userDao" ref="userDao1"></property>
    </bean>
    <bean id="userDao1" class="com.Dao.UserDaoDemo"></bean>

在这里插入图片描述

6、基于XML注入属性,内部bean和级联赋值

一对多关系

员工类

public class Emp {
    private String name;
    private String sex;
    private Dept dept;

    public void setName(String name) {
        this.name = name;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public void setDept(Dept dept) {
        this.dept = dept;
    }
}

部门类

public class Dept {
    private String dname;

    public void setDname(String dname) {
        this.dname = dname;
    }
}

配置文件

<!--  内部bean--->
 <bean id="emp" class="com.company.Emp">

        <property name="name" value="AA"></property>
        <property name="sex" value=""></property>
        
        <property name="dept">
            <bean id="dept1" class="com.company.Dept">
                <property name="dname" value="人力资源部"></property>
            </bean>
        </property>
    </bean>

7、基于XML注入属性,级联赋值

 <bean id="emp" class="com.company.Emp">

        <property name="name" value="AA"></property>
        <property name="sex" value=""></property>
        
        <property name="dept" ref="dept1"> </property>
 <bean id="dept1" class="com.company.Dept">
 
         <property name="dname" value="人力资源部"></property>
 </bean>
  </bean>

8、基于XML注入属性,集合属性(数组,list,map)

public class Student {
    private String[] course;
    private List<String> list;
    private Map<String,String> map;
    private Set<String> set;

    public void setCourse(String[] course) {
        this.course = course;
    }

    public void setList(List<String> list) {
        this.list = list;
    }

    public void setMap(Map<String, String> map) {
        this.map = map;
    }

    public void setSet(Set<String> set) {
        this.set = set;
    }
}
<!--    集合属性注入-->
    <bean name="stu" class="com.jihe.Student">

<!--        数组-->
        <property name="course">
            <list>
                <value>数据库</value>
                <value>c++</value>
                <value>java</value>
                <value>pthyon</value>
            </list>
        </property>

<!--        list-->
        <property name="list">
            <list>
                <value>数据库</value>
                <value>c++</value>
                <value>java</value>
                <value>pthyon</value>
            </list>
        </property>

<!--        map-->
        <property name="map">
            <map >
                <entry key="1" value="A"></entry>
                <entry key="2" value="B"></entry>
                <entry key="3" value="C"></entry>
            </map>
        </property>
        
<!--       set-->
        <property name="set">
            <set>
                <value>1</value>
                <value>2</value>
            </set>
        </property>

    </bean>

9、基于XML注入属性,集合属性(数组,list,map)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/99217.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【第十二章 MVCC(多版本并发控制),隐藏字段,undolog(版本链),readview,原理分析(RC,RR)】

第十二章 MVCC&#xff08;多版本并发控制&#xff09;&#xff0c;隐藏字段&#xff0c;undolog&#xff08;版本链&#xff09;&#xff0c;readview&#xff0c;原理分析&#xff08;RC&#xff0c;RR&#xff09; 1.基本概念: &#xff08;1&#xff09; 当前读&#xff1…

hevc 基于均值的RDO模式删减

1 在获得粗略模式候选列表L4之后&#xff0c;对尺寸为4x4和8x8的PU保留8种预测模式&#xff0c; 对尺寸16x16&#xff0c;32x32, 64x64的PU保留3种预测模式&#xff0c;如果可以跳过部分模式的RDO计算&#xff0c;则可以进一步减少编码时间。 2 由于HCost计算是RDO计算的一种较…

springBoot+Cache(自定义有效时间配置)

一、背景 sprinbBoot的cache是不是支持动态设置缓存注解的&#xff0c;因此本次自己实现一个可以动态设置缓存时间的配置。 源码&#xff1a;示例地址 二、步骤 1、pom.xml添加依赖配置 <dependency><groupId>org.springframework.boot</groupId><arti…

Linux系统编程(续)

静态库制作及使用步骤&#xff1a; 1.将.c生成.o文件 gcc -c add.c -o add.o 2.使用ar工具制作静态库 ar rcs lib自定义库名.a 后面需要的.c文件 3.编译静态库到可执行文件中 gcc test.c 自制的库.a -o test 注意:如果程序中没有函数声明&#xff0c;编译器会自动给个隐式声明…

Java+MySQL基于SSM的在线投票系统

随着社会的发展,人们在处理一些问题的时候不同意见越来越多,这源于人们对思想的解放和对社会的认识。所以在处理同一问题上,为了征求不同人的意见在线投票系统诞生了。 基于SSM的在线投票系统以钦州学院为背景,运用在校所学习的软件开发原理,采用Spring&#xff1a;SpringMVC&a…

如何在网页画一个旋转的粉色圣诞树(含源代码)

0 效果 做法&#xff1a; 创建三个文件tree.html、tree.js、tree.css&#xff0c;放在同一个目录下按1、2、3小节填充这三个文件浏览器打开tree.html文件 1 .HTML-基本布局 搞一个.html文件&#xff0c;内容如下 <!DOCTYPE html> <html lang"en"><…

【OpenCV-Python】教程:7-1 理解 kNN (k-Nearest Neighbour)

OpenCV Python 理解kNN &#xff08;k-Nearest Neighbour&#xff09; 【目标】 理解 kNN 算法的基本概念 【理论】 kNN是监督学习中最简单的分类算法之一。其思想是在特征空间中搜索与测试数据最接近的匹配。我们将用下图来研究它。 在图像中&#xff0c;有两个"家族…

一文看懂 InnoDB 的内存淘汰逻辑(LRU)

InnoDB淘汰的逻辑是怎样的呢&#xff1f; InnoDB 内存管理用的是最近最少使用 (Least Recently Used, LRU) 算法&#xff0c;这个算法的核心就是淘汰最久未使用的数据。 下图是一个 LRU 算法的基本模型。 InnoDB 管理 Buffer Pool 的 LRU 算法&#xff0c;是用链表来实现的。…

Go项目实战:02-微服务micro services

1、微服务&#xff08;micro services&#xff09; 单体式架构服务 过往大家熟悉的服务器。 特性&#xff1a; 1、复杂性随着开发越来越高&#xff0c;遇到问题解决困难。2、技术债务逐渐上升。3、耦合度高&#xff0c;维护成本大。 - 1、出现bug&#xff0c;不容易排查 - 2…

[ 数据结构 -- 手撕排序算法第六篇 ] 快速排序

文章目录前言一、常见的排序算法二、快速排序的基本思想三、快速排序的不同实现1.hoare版本2. 挖坑法3. 前后指针法4.三种版本单趟排序结果5.快速排序三数取中优化6.小区间优化四、快速排序的特性总结前言 手撕排序算法第六篇&#xff1a;快速排序&#xff01; 从本篇文章开始…

JavaSE面试题(二)

1&#xff1a;说一说八大基本数据类型 2&#xff1a;面向对象 面向对象的核心&#xff0c;就是类和对象。Java中的面向对象的思想&#xff1a;万物皆对象。 类&#xff1a;是对一类事物的描述&#xff0c;是抽象的&#xff0c;看不见&#xff0c;摸不着。 对象&#xff1a;是实…

week 7 吴恩达 调参 ,batch norm,softmax

文章目录前言7.1调整参数的过程 Turing progress7.2、scale7.3 如果在实践中探寻超参数7.4 batch normalization 批量归一化7.5 将BN算法拟合到神经网络中7.6 为什么 BN有效&#xff1f;7.7测试时的BN7.8 7.9 softmax regression7.10深度学习的框架前言 7.1调整参数的过程 Turi…

CentOS 8:环境变量

环境变量 环境变量&#xff0c;就是放在当前环境中的变量 无论Linux &#xff0c;还是Windows&#xff0c;都有环境变量 比如&#xff0c;最常用的环境变量 PATH, JAVA_HOME 定义环境变量 export JAVA_HOME/opt/jdk1.8 显示环境变量 echo $JAVA_HOME 查看所有环境变量…

c语言位操作和变量存储类型

c语言位操作 c语言变量存储类型 格式[存储类型说明符] 数据类型说明符 变量名&#xff0c;例如&#xff0c;auto int a;但一般情况下auto是省略的 其他类型说明符还有&#xff1a;static 、extern、register auto最普通动态存储&#xff0c;但所在范围的函数程序结束后&#xf…

处理模型视图中的选择

有关在视图中选择的项的信息存储在QItemSelectionModel类中&#xff0c;这将维护单个模型中项的模型索引&#xff0c;并且独立于任何视图。由于一个模型可以有多个视图&#xff0c;因此可以在视图之间共享选择&#xff0c;从而允许应用程序以一致的方式显示多个视图 选择由选…

Redis高并发锁(二)乐观锁

文章目录redis乐观锁1. watch 监控key2. multi 开启事务3. exec 执行事务4. 演示1) 先用两个连接AB访问redis2) A监控key,此时库存是45013) A开启事务&#xff0c;并且将库存-1,事务进入队列等待执行4&#xff09;此时B更新库存为20015&#xff09;A开始执行事务业务改造1. Sto…

C++11--包装器与可变参数摸板

文章目录可变参数模板递归函数方式展开参数包函数包装器举个例子bind函数举个例子可变参数模板 C11的新特性可变参数模板能够让我们创建可以接受可变参数的函数模板和类模板 // Args是一个模板参数包&#xff0c;args是一个函数形参参数包 // 声明一个参数包Args... args&…

Spring Cloud之Feign消费和Hystrix熔断

Spring Cloud的Feign消费和Hystrix熔断 现如今&#xff0c;由于互联网的流行&#xff0c;很多特产都可以在网上订购&#xff0c;你可以在堆满积雪的冬北订购海南的椰子&#xff0c;海南的椰子就会采用很快的物流方式调送到堆满积地的东北&#xff0c;就相当于在本地实现了买椰…

Opencv(C++)笔记--图像金字塔

目录 1--图像金字塔的原理 2--图像金字塔的用途 3--Opencv API 3-1--拉普拉斯金字塔上采样 3-2--高斯金字塔下采样 3-3--代码实例 4--参考 1--图像金字塔的原理 图像金字塔常用于图像缩放&#xff08;resize&#xff09;和图像分割当中&#xff0c;不同分辨率的图像以金…

CSS基础总结(四)浮动

文章目录 一、为什么需要浮动 1.传统网页布局的三种方式 2.标准流 二、浮动的概述 三、浮动的特性 1.脱标 2.一行显示&#xff0c;顶部对齐 3.具备行内块元素特性 四、清除浮动 1.为什么要清除浮动 2.清除浮动的本质与策略 3.清除浮动的四大方法 &#xff08;1&…