【第一章:Spring概述、特点、IOC容器、IOC操作bean管理(基于xml方式创建对象,注入属性)】

news2024/11/29 0:49:27

第一章:Spring概述、特点、IOC容器、IOC操作bean管理(基于xml方式创建对象,注入属性)

1.Spring是什么?
①Spring是一款主流的java EE 轻量级开源框架。
②广义的Spring:Spring技术栈,Spring不再是一个单纯的应用框架,而是逐渐发展成由多个不同子项目组成的成熟技术。例如:Spring Framework、SpringMVC,SpringBoot等。
③狭义的Spring:特指Spring Framework。Spring框架是一个分层的、面向切面编程的java应用程序,有两个核心模块Ioc和AOP。
④Ioc:控制反转,把创建对象过程交给Spring进行管理。
⑤AOP:面向切面编程。不修改源代码进行功能的增强。
2.Spring特点:
①方便解耦,简化开发。
②AOP编程的支持。
③方便程序的测试。
④方便集成各种优秀框架。
⑤降低Java API开发难度。
⑥方便进行事务操作。
3.IOC容器:
(1)什么是IOC:
①控制反转,把对象的创建和对象之间调用的过程,交给spring处理。
②使用IOC的目的:为例耦合度降低。
(2)IOC底层原理:
①XML解析、工厂模式、反射。
②IOC容器底层就是对象工厂。
③spring提供IOC容器实现的两种方式(两个接口)
BeanFactory:IOC容器基本实现,是spring内部的使用接口,不提供开发人员进行使用(加载配置文件的时候不会创建对象,在获取/使用对象的时候才去创建对象)。
ApplicationContext:BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员进行使用(加载配置文件的时候就会把在配置文件中的对象创建)。
④ApplicationContext接口实现类:
FileSystemXmlApplicationContext和ClassPathXmlApplicationContext
在这里插入图片描述4.IOC操作bean管理:
①bean管理指的是两个操作:spring创建对象;spring注入属性。
②bean管理操作有两种方式:基于XML配置文件方式实现;基于注解方式实现。
5.IOC操作bean管理(基于XML方式):
1)基于XML创建对象:

 <bean id="user" class="spring1.User"></bean>

①在spring配置文件中,使用bean标签,标签里面添加对应属性,就可以实现对象创建。
②在bean标签中有很多属性,介绍常用属性:

id属性:唯一标识
class属性:类的全路径(包和类的路径)
name属性:和id属性一样,name属性内容可以加特殊符号

③创建对象的时候,默认也是执行无参构造方法,完成对象创建。
(2)基于XML方式注入属性:
①DI:依赖注入,就是注入属性。(DI是IOC中一种具体实现,称为依赖注入,就是注入属性。注入属性要在创建对象的基础之上注入)
第一种方式:set方式注入。
1.创建属性和属性对应的set方法;

	 //1.创建属性
    private  String bname;
    private String bauthor;
    //2.创建属性对应的set方法
    public void setBname(String bname) {
        this.bname = bname;
    }
    public void setBauthor(String bauthor) {
        this.bauthor = bauthor;
    }

2.在spring配置文件配置对象创建,配置属性注入。

 <bean id="book" class="spring1.Book" >
        <!--使用property完成属性注入
        name:类里面的属性名称
        value:向属性注入的值
        -->
        <property name="bname" value="java从入门到精通"></property>
        <property name="bauthor" value="宋红康"></property>
    </bean>
@Test
    public void testBook1(){
        //1.加载spring配置文件
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("bean1.xml");
        //2.获取配置创建的对象
        Book book = applicationContext.getBean("book", Book.class);
        System.out.println(book);
        book.testDemo();
    }

第二种注入方式:使用有参数的构造器注入。
1.创建类,定义属性,创建属性对应有参的构造方法;

public class Orders {
    private String oname;
    private  String address;
    public Orders(String oname, String address) {
        this.oname = oname;
        this.address = address;
    }
}

2.在spring配置文件中配置。

<!--有参构造注入属性-->
    <bean id="orders" class="spring1.Orders">
        <constructor-arg name="oname" value="电脑"></constructor-arg>
        <constructor-arg name="address" value="中国"></constructor-arg>
    </bean>
 @Test
    public void testOrders(){
        //1.加载spring配置文件
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("bean1.xml");
        //2.获取配置创建的对象
        Orders orders = applicationContext.getBean("orders", Orders.class);
        System.out.println(orders);
        orders.orderTest();
    }

第三种方式:p名称空间注入(了解)。
使用p名称空间注入,可以简化基于XML配置方式。
第一步:添加p名称空间在配置文件中。

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd">

第二步:进行属性的注入,在bean标签里边进行操作。

 <bean id="book" class="spring1.Book" p:bname="三十而立" p:bauthor="lay"></bean>

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

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

相关文章

华为OD机试题,用 Java 解【计算最大乘积】问题

最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…

【基础算法】哈希表(开放寻址法)

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…

聚观早报|饿了么星选停止运营;百度2022财报全年营收1236.75亿元

今日要闻&#xff1a;饿了么星选停止运营&#xff1b;百度2022财报全年营收1236.75亿元&#xff1b;微软收购暴雪获力挺&#xff1b;全国首例&#xff01;这一代练平台被叫停&#xff1b;现代汽车已开始在美国生产电动汽车 饿了么星选停止运营 2 月 22 日&#xff0c;饿了么旗下…

使用Vite创建VUE项目

使用Vite来创建vue项目 很久没有接触前端的技术了&#xff0c;一下子就冒出来很多技术&#xff0c;有的根本没见过呀&#xff0c;vue变成了3&#xff0c;vue-cli也变得不好用了&#xff0c;说vite很好用&#xff0c;那就创建个项目试试吧。 有一点前提哈&#xff0c;电脑上要…

华为OD机试题,用 Java 解【磁盘容量排序】问题

最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…

【100个 Unity实用技能】 | 将Dictionary字典中的数据序列化 到Unity Inspector监视器面板

Unity 小科普 老规矩&#xff0c;先介绍一下 Unity 的科普小知识&#xff1a; Unity是 实时3D互动内容创作和运营平台 。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者&#xff0c;借助 Unity 将创意变成现实。Unity 平台提供一整套完善的软件解决方案&#xff…

【vue2每日小知识】实现store中modules模块的封装与自动导入

&#x1f973;博 主&#xff1a;初映CY的前说(前端领域) &#x1f31e;个人信条&#xff1a;想要变成得到&#xff0c;中间还有做到&#xff01; &#x1f918;本文核心&#xff1a;省去我们store仓库中分模块时的需要每次导入index的问题 目录 【前言】在store中如何简…

UART 串口通信实验

目录 一、UART 简介 1、 UART 通信格式 二、I.MX6U UART 简介 1、硬件原理 2、寄存器 UARTx_UCR1(x1~8) UARTx_UCR2​ UARTx_UCR3​ UARTx_USR2​ 其他寄存器 三、代码编写 1、编写bsp_uart.h 2、编写bsp_uart.c 3、main 不管是单片机开发还是嵌入式 Linux 开发&a…

Kubernetes入门教程 --- 使用kubeadm进行集群安装

Kubernetes入门教程 --- 使用kubeadm和二进制安装1. Introduction1.1 架构图1.2 关键字介绍1.3 简述2. 使用Kubeadm Install2.1 申请三个虚拟环境2.2 准备安装环境2.3 配置yum源2.4 安装Docker2.5 时间同步2.6 安装组件2.7 部署集群2.8 Master安装网络插卡3. 查询状态3.1 查询n…

【数据库】一文讲清redis的主从复制

目录 主从复制 一&#xff0c; 主从复制原理 二&#xff0c;主从复制配置 1&#xff0c;一主双从 1、配置三个redis示例 2、配置主从 3、集群测试 2&#xff0c; 主从切换 哨兵模式 一&#xff0c; 什么是哨兵模式 二&#xff0c; 配置哨兵 三&#xff0c;启动哨兵 …

公网远程连接Oracle数据库【内网穿透】

文章目录1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程OracleOracle&#xff0c;是甲骨文公司的一款关系数据库管理系…

阅读笔记8——NMS

一、基本NMS 1. 处理过程 为了保证物体检测的召回率&#xff0c;对于同一个真实物体往往会有多于1个的候选框输出。但是多余的候选框会影响检测精度&#xff0c;因此需要利用NMS过滤掉重叠的候选框&#xff0c;基本的NMS方法利用得分高的边框抑制得分低且重叠程度高的边框。 如…

追梦之旅【数据结构篇】——详解C语言实现链栈

详解C语言实现链栈~&#x1f60e;前言&#x1f64c;整体实现内容分析&#x1f49e;1.头文件编码实现&#x1f64c;2.功能文件编码实现&#x1f64c;3.测试函数功能代码&#x1f64c;总结撒花&#x1f49e;&#x1f60e;博客昵称&#xff1a;博客小梦 &#x1f60a;最喜欢的座右…

再获最佳推荐,华为高端存储凭什么征服DCIG?

近日&#xff0c;全球著名技术分析机构DCIG发布《DCIG 2023-24高端存储阵列TOP5》报告&#xff0c;华为OceanStor Dorado 18000凭借可靠性、易用性和安全性等诸多优势&#xff0c;在DELL EMC、IBM、HPE、PureStorage等一众国际厂商中脱颖而出&#xff0c;荣获最佳推荐榜首。一直…

Linux——进程概念(进程状态)

目录 进程状态 三态模型 五态模型 七态模型 Example eg1:阻塞态&#xff1a;等待某种资源的过程 eg2:挂起态 Linux内核源代码 Linux进程状态查看 Linux运行状态 R运行状态&#xff08;running&#xff09;: S睡眠状态&#xff08;sleeping)&#xff1a; D磁盘休眠状…

Android Json 数据解析优化

文章目录基于 Gson 的 Json 数据解析库1. 背景2. 使用2.1 在模块下的 build.gradle 文件中加入远程依赖2.2 常规使用2.3 其它 API2.3 Retrofit 替换 Gson3. Json 数据解析库 UML 类图与时序图3.1 json-parse 类图3.2 json-parse 时序图4. Json 工具类&#xff08;JsonUtils&…

运动控制器PSO视觉飞拍与精准输出的C++开发(一):单轴PSO

本文主要介绍正运动技术EtherCAT控制器在VS平台采用C语言实现的各种PSO功能。正运动提供多种PSO模式供用户搭配不同的场景使用。 本节主要讲解采用TABLE寄存器存储的数据表触发比较&#xff0c;更多周期比较模式、二维三维比较模式参见下一节说明。 一、硬件介绍 ZMC408CE是…

STM32 CubeMX按键点灯

本文代码使用 HAL 库。 文章目录前言一、按键原理图二、CubeMX 创建工程三、代码讲解&#xff1a;1. GPIO的输入HAL库函数&#xff1a;2. 消抖&#xff1a;3. 详细代码四&#xff0c;实验现象&#xff1a;总结前言 我们继续讲解 stm32 f103&#xff0c;这篇文章将详细 为大家讲…

MATLAB | 如何用MATLAB绘制花里胡哨的山脊图

本期推送教大家如何绘制各种样式的山脊图&#xff0c;这里做了一个工具函数用来实现好看的山脊图的绘制&#xff0c;编写不易请多多点赞&#xff0c;大体绘制效果如下&#xff1a; 依旧工具函数放在文末。 教程部分 0 数据准备 数据为多个一维向量放在元胞数组中&#xff0c;…

oracle数据库常用操作

1.连接登录切换用户su - oracle以管理员模式登录到sqlplus&#xff1a;sqlplus / as sysdba oracle登录身份有三种&#xff1a;1.1Normal 普通身份&#xff1b;1.2.sysdba 系统管理员身份&#xff1b;若以 ‘sysdba’ 方式认证&#xff0c;登录用户为 ‘SYS’&#xff0c;为 Or…