spring框架之IoC学习与梳理(1)

目录

一、spring-IoC的基本解释。

二、spring-IoC的简单demo(案例)。

(1)maven-repository官网中找依赖坐标。

(2).pom文件中通过标签引入。

(3)使用lombok帮助快速开发。

(4)通常情况。手动new对象,setter方法完成对象初始化。

(5)基于XML配置使用IoC。(本demo使用IoC容器创建bean对象)

<1>新建spring的主配置文件。

<2>XML中配置DataConfig类对象。

<3>测试类中使用ApplicationContext容器获取bean对象。


一、spring-IoC的基本解释。

  • IoC是Inversion of Control的缩写,意为“控制反转”。

  • 在通常,类的对象都由开发者手动创建。当企业级开发量很大时,需要频繁的创建对象,这很浪费时间。将更多的精力放到业务代码上的编写是很重要的!
  • 当使用IoC将对象的创建操作进行反转,让spring提供的IoC容器根据需要自动的创建对象。(如使用.xml配置文件管理bean对象)

二、spring-IoC的简单demo(案例)。

(1)maven-repository官网中找依赖坐标。

https://mvnrepository.com/


  • 添加spring-context(上下文)依赖。这样可以通过该依赖传递导入其他所需的坐标。


(2).pom文件中通过标签<dependence>引入。
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.18</version>
</dependency>


(3)使用lombok帮助快速开发。
  • 无需手动提供构造器、getter、setter、toString()等等方法。
  • 记得安装这个插件(高版本idea自动绑定安装)。


  • lombok依赖的坐标。
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.30</version>
    <scope>provided</scope>
</dependency>

  • 只需在需要提供这些基础方法的类上添加注解@Data即可。


  • 使用注解@Data。


(4)通常情况。手动new对象,setter方法完成对象初始化。
package com.fs.test;

import com.fs.demo.DataConfig;

public class Main {
    public static void main(String[] args) {
        //不要IoC——所有对象自己创建
        DataConfig dataConfig = new DataConfig();
        dataConfig.setUrl("jdbc:mysql://localhost:3306/test");
        dataConfig.setDriverName("com.mysql.jdbc.Driver");
        dataConfig.setUserName("root");
        dataConfig.setPassword("root123");
        System.out.println(dataConfig);
    }
}


(5)基于XML配置使用IoC。(本demo使用IoC容器创建bean对象)
  • 以后学习基于注解使用IoC更多。(springboot框架)
  • 除了使用ApplicationContext容器(简称"IoC"容器)外。还可以使用BeanFactory创建bean对象。(IoC思想)
  • 简单说:开发者把需要交给IoC容器管理的对象在XML文件中进行配置。spring框架读取指定配置文件,根据配置文件中的配置信息来自动帮开发者创建对象。

<1>新建spring的主配置文件。
  • resources目录下新建即可。
  • 注意:需要提前导入spring-context的依赖坐标。


<2>XML中配置DataConfig类对象。
  • 使用<bean>标签配置需要指定生产的"DataConfig"类的bean对象。
  • 使用<property>标签配置"DataConfig"类的所有成员属性初始值。
<?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">
    <bean class="com.fs.demo.DataConfig" id="config">
        <property name="driverName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/test"></property>
        <property name="userName" value="root"></property>
        <property name="password" value="root123"></property>
    </bean>
</beans>

<3>测试类中使用ApplicationContext容器获取bean对象。
  • 注意getBean()方法中的参数需要与XML配置文件中配置的bean对象的id保持一致!
package com.fs.test;

import com.fs.demo.DataConfig;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp {
    public static void main(String[] args) {
        //从类路径下加载bean配置文件,得到ApplicationContext容器对象
        ClassPathXmlApplicationContext ApplicationContext = new ClassPathXmlApplicationContext("springConfig.xml");
        //使用容器对象的getBean方法,通过配置文件里面的唯一标识id得到该bean对象
        Object dataConfigObj = ApplicationContext.getBean("dataConfig");
        //强制类型转换
        DataConfig dataConfig = (DataConfig) dataConfigObj;
        System.out.println(dataConfig);

    }
}
  • 测试类MainApp运行结果。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

系统架构设计师教材:信息系统及信息安全

信息系统 信息系统的5个基本功能&#xff1a;输入、存储、处理、输出和控制。信息系统的生命周期分为4个阶段&#xff0c;即产生阶段、开发阶段、运行阶段和消亡阶段。 信息系统建设原则 1. 高层管理人员介入原则&#xff1a;只有高层管理人员才能知道企业究竟需要什么样的信…

基于STM32单片机设计的宠物喂食监控系统

1. 项目开发背景 随着宠物数量的增加&#xff0c;尤其是人们对宠物的养护需求日益增多&#xff0c;传统的人工喂养和管理方式难以满足现代养宠生活的需求。人们越来越希望通过智能化手段提高宠物养护的质量和效率&#xff0c;特别是对于宠物喂食、饮水、温湿度控制等方面的智能…

帕金森患者:科学锻炼,提升生活质量

帕金森病&#xff0c;作为一种常见的神经系统退行性疾病&#xff0c;给患者的日常生活带来了诸多挑战。然而&#xff0c;通过科学的锻炼&#xff0c;患者不仅可以在一定程度上缓解症状&#xff0c;还能提升生活质量。本文将详细介绍帕金森患者应该进行的几种关键锻炼&#xff0…

GA-CNN-LSTM-Attention、CNN-LSTM-Attention、GA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比

GA-CNN-LSTM-Attention、CNN-LSTM-Attention、GA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比 目录 GA-CNN-LSTM-Attention、CNN-LSTM-Attention、GA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比预测效果基本介绍程序设计参考资料 预测效果 基本介绍 基于GA-CNN-LST…

redis 实践与扩展

文章目录 前言一、springboot整合redis1、jedis1.1、单点模式1.2、哨兵模式1.3 集群模式1.4、关于jedis线程不安全的验证 2、lettuce(推荐)2.1、单点模式2.2、哨兵模式2.3、集群模式 3、RedisTemplate config 二、redis常用知识点1、缓存数据一致性2、缓存雪崩3、缓存击穿4、缓…

積分方程與簡單的泛函分析7.希爾伯特-施密特定理

1)def函數叫作"由核生成的(有源的)" 定义: 设 是定义在区域上的核函数。 对于函数,若存在函数使得, 则称函数是“由核生成的(有源的)”。 这里的直观理解是: 函数的“来源”可以通过核函数 与另一个函数的积分运算得到。 在积分方程理论中,这种表述常…

RH850F1KM-S4-100Pin_ R7F7016453AFP MCAL PWM 测试

1、PortPin配置 2、PwmChannel配置 4、PwmComplexDriverInit 配置注意事项 此参数指定通道是否初始化并由复杂驱动程序使用。 True:通道将被初始化并由复杂驱动程序使用。False:通道不会被初始化并被复杂驱动程序使用。

Spring Boot Starter介绍

前言 大概10来年以前&#xff0c;当时springboot刚刚出现并没有流行&#xff0c;当时的Java开发者们开发Web应用主要是使用spring整合springmvc或者struts、iBatis、hibernate等开发框架来进行开发。项目里一般有许多xml文件配置&#xff0c;其中配置了很多项目中需要用到的Be…

【科研建模】Pycaret自动机器学习框架使用流程及多分类项目实战案例详解

Pycaret自动机器学习框架使用流程及项目实战案例详解 1 Pycaret介绍2 安装及版本需求3 Pycaret自动机器学习框架使用流程3.1 Setup3.2 Compare Models3.3 Analyze Model3.4 Prediction3.5 Save Model4 多分类项目实战案例详解4.1 ✅ Setup4.2 ✅ Compare Models4.3 ✅ Experime…

CY T 4 BB 5 CEB Q 1 A EE GS MCAL配置 - MCU组件

1、ResourceM 配置 选择芯片信号: 2、MCU 配置 2.1 General配置 1) McuDevErrorDetect: - 启用或禁用MCU驱动程序模块的开发错误通知功能。 - 注意:采用DET错误检测机制作为安全机制(故障检测)时,不能禁用开发错误检测。2) McuGetRamStateApi - enable/disable th…

【论文阅读】RAG-Reward: Optimizing RAG with Reward Modeling and RLHF

研究背景 研究问题&#xff1a;这篇文章要解决的问题是如何优化检索增强生成&#xff08;RAG&#xff09;系统&#xff0c;特别是通过奖励建模和人类反馈强化学习&#xff08;RLHF&#xff09;来提高大型语言模型&#xff08;LLMs&#xff09;在RAG任务中的效果。研究难点&…

关于WPF中ComboBox文本查询功能

一种方法是使用事件&#xff08;包括MVVM的绑定&#xff09; <ComboBox TextBoxBase.TextChanged"ComboBox_TextChanged" /> 然而运行时就会发现&#xff0c;这个事件在疯狂的触发&#xff0c;很频繁 在实际应用中&#xff0c;如果关联查询数据库&#xff0…

java求职学习day15

多线程 1 基本概念 1.1 程序和进程的概念 &#xff08;1&#xff09;程序 - 数据结构 算法&#xff0c;主要指存放在硬盘上的可执行文件。 &#xff08;2&#xff09;进程 - 主要指运行在内存中的可执行文件。 &#xff08;3&#xff09;目前主流的操作系统都支持多进程&a…

2025年数学建模美赛:A题分析(1)Testing Time: The Constant Wear On Stairs

2025年数学建模美赛 A题分析&#xff08;1&#xff09;Testing Time: The Constant Wear On Stairs 2025年数学建模美赛 A题分析&#xff08;2&#xff09;楼梯磨损分析模型 2025年数学建模美赛 A题分析&#xff08;3&#xff09;楼梯使用方向偏好模型 2025年数学建模美赛 A题分…

2024年终总结:技术成长与突破之路

文章目录 前言一、技术成长&#xff1a;菜鸟成长之路1. 学习与实践的结合2. 技术分享与社区交流 二、生活与事业的平衡&#xff1a;技术之外的思考1. 时间管理与效率提升2. 技术对生活的积极影响 三、突破与展望&#xff1a;未来之路1. 技术领域的突破2. 未来规划与目标 四、结…

go入门Windows环境搭建

简介 Go 即 Golang&#xff0c;是 Google 公司 2009 年 11 月正式对外公开的一门编程语言。 根据 Go 语言开发者自述&#xff0c;近 10 多年&#xff0c;从单机时代的 C 语言到现在互联网时代的 Java&#xff0c;都没有令人满意的开发语言&#xff0c;而 C往往给人的感觉是&a…

机器学习:支持向量机

支持向量机&#xff08;Support Vector Machine&#xff09;是一种二类分类模型&#xff0c;其基本模型定义为特征空间上的间隔最大的广义线性分类器&#xff0c;其学习策略便是间隔最大化&#xff0c;最终可转化为一个凸二次规划问题的求解。 假设两类数据可以被 H x : w T x…

MyBatis框架基础学习(1)

目录 一、MyBatis框架介绍。 &#xff08;1&#xff09;简化开发。 &#xff08;2&#xff09;持久层&#xff1f; &#xff08;3&#xff09;框架的解释&#xff01; 二、JDBC开发缺点。 &#xff08;1&#xff09;硬编码。 &#xff08;2&#xff09;操作繁琐。 三、MyBatis框…

如何有效进行软件集成测试?常见的集成测试工具分享

在现代软件开发的过程中&#xff0c;集成测试是确保系统各部分有效协同工作的关键步骤。软件集成测试是指在软件开发过程中&#xff0c;将各个模块或组件组合在一起进行测试&#xff0c;以验证它们之间的交互是否符合设计要求和业务逻辑。集成测试的核心目标是发现不同模块互动…

电力场效应晶体管(电力 MOSFET),全控型器件

电力场效应晶体管&#xff08;Power MOSFET&#xff09;属于全控型器件是一种电压触发的电力电子器件&#xff0c;一种载流子导电&#xff08;单极性器件&#xff09;一个器件是由一个个小的mosfet组成以下是相关介绍&#xff1a; 工作原理&#xff08;栅极电压控制漏极电流&a…