idea-Spring框架与ioc容器

news2024/12/23 18:45:59

Sping是轻量级的开源J2EE框架,可以解决企业应用开发的复杂性

Spring有两个核心部分为Ioc和AOP

Ioc:控制反转,吧创建对象过程交给Sping进行管理

AOP:面向切面,不修改代码进行功能增强

创建Maven项目

IDEA-2024 就直接创建java项目即可

创建完成项目后需要在pom.xml文件中添加依赖这里我提了我使用的项目依赖,如果下载失败可以尝试自己安装maven然后将仓库设置为阿里云中央仓库

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.24</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>5.3.24</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>

 Sping框架基础就配置好了

IOC底层实现

xml解析

工厂模式

反射技术

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

Sping提供了Ioc容器的两种实现方式(两个接口)

BeanFactory和APPlicationContext

ioc操作Bean管理

Bean管理是指

Sping创建对象

Spirng注入对象

public class User{

        private String userName;

        public void setUserName(String userName){

        this.userName=userName;

        }        

}

Sping 一般使用自动注入如果你的xml配置没有出错那么你在项目中的

src/test/java右键新建就会出现xml文件,如果没有就是你的 pom.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"
       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是一个容器   class代表着文件的位置-->
    <bean id="c1" class="com.zk.c1">
        <constructor-arg value=""/>
        <!--name是一注入内容的方法   value代表着注入的内容-->
        <property name="f2" value="---c1代码"/>
    </bean>
</beans>

这是我的c1文件

package com.zk;

public class c1 {
    private String f2;
    public c1() {

    }
    public c1(String f2) {
        this.f2 = f2;
    }

    public void f1(){
        System.out.println("adsfasdf"+f2);
    }
    public void setF2(String f2){
        this.f2 = f2;
    }


}

他还有很多别的注入方式

构造函数注入

 <bean id="c1" class="com.zk.c1">
        <constructor-arg index="0" value="-----xxxx-----">
    </bean>

这是集合注入

<?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 id="jh" class="com.zk.jh" >
    <property name="y" >
      <array>
          <value>1</value>
          <value>2</value>
          <value>3</value>
      </array>
    </property>
    <property name="z">
        <list>
            <value>1</value>
            <value>2</value>
            <value>3</value>
        </list>
    </property>
    <property name="w">
        <map>
           <entry key="1" value="2"></entry>
        </map>
    </property>
</bean>
</beans>
package com.zk;

import java.util.List;
import java.util.Map;

public class jh {
    private int x;
    private String[] y;
    private List<String> z;
    private Map<String,String> w;

    public void setX(int x) {
        this.x = x;
    }

    public void setZ(List<String> z) {
        this.z = z;
    }

    public void setW(Map<String,String> w) {
        this.w = w;
    }
    public void setY(String[] x) {
       this.y = x;
    }
    public void g (){
        System.out.println(x+","+y+","+z+","+w);
    }
}

 

此处为我的jh文件 

自动注入

<?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"
       default-autowire="byType">

    <bean id="dao" class="com.zk.imp.c5dao"></bean>
    <bean id="dao2" class="com.zk.imp.c4dao"></bean>
    <bean id="c4dao" class="com.zk.selv.ceev" autowire="byType">
    </bean>

这里我自动注入了我的dao类 

刚才的方法方法过于麻烦这里我们使用另外的方式

注解

注解是一种特殊的代码标记

@注解名(属性名  = 属性值)

<?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:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
<!--注解的代码
    <context:component-scan base-package="com.zk.dao"/>
-->
</beans>

 @Autowired根据属性类型进行自动装配

@Qualifier根据属性名称进行注入需要和 @Autowired一起使用

@Resource可以根据类型和名称注入

@value根据普通类型注入

package com.zk.dao.img;


import com.zk.dao.a1dao;
import com.zk.dao.sev;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

@Component
public class uu implements sev {

    private a1dao dao;
    @Autowired
    @Qualifier(value = "aa1")
    public void adda1dap(a1dao dao){
        this.dao=dao;
    }
    @Override
    public void acc() {
        dao.cc();
    }
}

 

 

package com.zk.dao.img;

import com.zk.dao.a1dao;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;

@Component
public class aa1 implements a1dao {
    @Override
    public void cc() {
        System.out.println(123);
    }
}

这样即可完成自动注入 

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

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

相关文章

为什么有人认为Linux不如macOS?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Linux的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;首先要明确你说的是哪个Lin…

Git分支的状态存储——stash命令的详细用法

文章目录 6.6 Git的分支状态存储6.6.1 git stash命令6.6.2 Git存储的基本使用6.6.3 Git存储的其他用法6.6.4 Git存储与暂存区6.6.5 Git存储的原理 6.6 Git的分支状态存储 有时&#xff0c;当我们在项目的一部分上已经工作一段时间后&#xff0c;所有东西都进入了混乱的状态&am…

前端网页开发学习(HTML+CSS+JS)有这一篇就够!

目录 HTML教程 ▐ 概述 ▐ 基础语法 ▐ 文本标签 ▐ 列表标签 ▐ 表格标签 ▐ 表单标签 CSS教程 ▐ 概述 ▐ 基础语法 ▐ 选择器 ▐ 修饰文本 ▐ 修饰背景 ▐ 透明度 ▐ 伪类 ▐ 盒子模型 ▐ 浮动 ▐ 定位 JavaScript教程 ▐ 概述 ▐ 基础语法 ▐ 函数 …

Si24R05—高度集成的低功耗 2.4G+125K SoC 芯片

Si24R05是一款高度集成的低功耗SoC芯片&#xff0c;具有低功耗、Low Pin Count、宽电压工作范围&#xff0c;集成了13/14/15/16位精度的ADC、LVD、UART、SPI、I2C、TIMER、WUP、IWDG、RTC、无线收发器、3D低频唤醒接收器等丰富的外设。内核采用RISC-V RV32IMAC&#xff08;2.6 …

【BES2500x系列 -- RTX5操作系统】CMSIS-RTOS RTX -- 实时操作系统的核心,为嵌入式系统注入活力 --(一)

&#x1f48c; 所属专栏&#xff1a;【BES2500x系列】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f49…

本地部署应用测试01:ChatTTS

目的&#xff1a; 参考网上多种教程&#xff0c;学习开源大模型的部署与相关知识点&#xff0c;在此总结记录。 知识点&#xff1a; 1.大模型部署与应用大致步骤 首先需要下载项目的源码&#xff0c;并完成项目环境的搭建其次需要下载训练好的权重参数文件&#xff0c;以便…

微信公众号绑定开发者后端,报错“系统发生错误,请稍后重试”的坑

一、问题描述 在公众号后端填写完基本配置&#xff0c;点击保存&#xff0c;发现提示“系统发生错误&#xff0c;请稍后重试”。联系公众号客服回复&#xff0c;涉及开发内容不给支持-_-|| 二、经多次百度&#xff0c;结合实际尝试&#xff0c;总结解决方案如下&#xff1a;…

深入理解TCP协议:工作原理、报文结构及应用场景

TCP协议详解 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是因特网协议套件中最重要的协议之一。它为应用程序提供了可靠、面向连接的通信服务。TCP协议确保数据包按顺序到达&#xff0c;并且没有丢失或重复。本文将详细介绍TCP协议的工…

OS复习笔记ch11-1

外围设备的管理和磁盘调度 外围设备 从CPU的角度来看&#xff0c;外设有几个比较重要的I/O接口&#xff08;interfaces&#xff09; 状态reg&#xff1a;向CPU报告设备的状态&#xff08;忙碌/空闲&#xff09;命令reg&#xff1a;接收CPU命令&#xff0c;存储 CPU 需要执行的…

Java变量:声明、作用域和命名约定

Java变量&#xff1a;声明、作用域和命名约定 什么是变量&#xff1f; 在Java中&#xff0c;变量是保存特定数据类型值的内存位置的名称。它是java编程中的一个基本概念&#xff0c;允许您在程序执行期间存储和操作数据。 Java中的变量可以保存各种类型的数据&#xff0c;包括…

【ai】tx2-nx:配置tritonserver2.17.0-jetpack4.6 环境并运行例子

2.17.0 for jetpack 4.6运行需要 如果在jetson上构建Triton : Note: When building Triton on Jetson, you will require a newer version of cmake. We recommend using cmake 3.21.0. Below is a script to upgrade your cmake version to 3.21.0. You can use cmake 3.18.4…

金融居间CRM系统赋能金服企业精细化管理客户

金融居间CRM系统可以帮助金融服务企业实现精细化管理客户。通过CRM系统&#xff0c;企业可以更好地了解和跟踪客户需求、行为和历史记录。以下是一些具体的赋能方式&#xff1a; 1. 客户数据集成与管理 将客户的个人信息、财务状况、交易历史等数据集成到一个统一的平台中&…

三步问题00

题目链接 三步问题 题目描述 注意点 n范围在[1, 1000000]之间结果可能很大&#xff0c;需要对结果模1000000007 解答思路 动态规划的思想根据dp[i - 1]、dp[i - 2]、dp[i - 3]推出dp[i]需要注意的是结果可能很大&#xff0c;在计算的过程中需要模1000000007防止越界 代码…

华为数通——OSPF

正掩码&#xff1a;/24 255.255.255.0 反掩码&#xff1a; 255.255.255.255 -255.-255.-255.0 0.0.0.255 例如掩码&#xff1a;255.255.252.0 反掩码&#xff1a;0.0.3.255 在反掩码里面&#xff0c;0 bit 表示精确匹配&#xff0c;1…

2024年有什么赚钱的副业推荐半年还清贷款,成功变现12.3w的全套玩法都放这里了!!!

要说推荐副业&#xff0c;我是最有发言权了。普通打工人一个&#xff0c;年轻不懂事&#xff0c;经常超前消费&#xff0c;欠了一屁股债&#xff0c;没得办法&#xff0c;就只能到处找能赚钱的门路。 尝试了30的副业&#xff0c;就发现能赚钱的不是太辛苦&#xff0c;就是需要…

目标检测——SCUT-HEAD:大规模人头检测数据集的深度剖析

引言 亲爱的读者们&#xff0c;您是否在寻找某个特定的数据集&#xff0c;用于研究或项目实践&#xff1f;欢迎您在评论区留言&#xff0c;或者通过公众号私信告诉我&#xff0c;您想要的数据集的类型主题。小编会竭尽全力为您寻找&#xff0c;并在找到后第一时间与您分享。 在…

Unity3D 八叉树划分空间和可视化

也许更好的阅读体验 成果展示 代码 OctreeNode using System.Collections; using System.Collections.Generic; using UnityEngine; public class OctreeNode {//空间内包含的物体public List<GameObject> areaObjects;//空间中心public Vector3 center;//空间大小pub…

MySQL:SELECT list is not in GROUP BY clause 报错 解决方案

一、前言 一大早上测试环境&#xff0c;发现测试环境的MySQL报错了。 SELECT list is not in GROUP BY clause and contains nonaggregated column二、解决方案 官方文档中提到&#xff1a; 大致意思&#xff1a; 用于GROUP BY的SQL / 92标准要求满足以下条件&#xff1a; SE…

RA6M1语音识别演示板

介绍&#xff1a; 本应用说明解释了瑞萨电子语音识别演示的硬件规格 主板RTK0EA0004D00001BJ&#xff0c;采用RA6M1 应用图示&#xff1a; 开发板如图所示&#xff1a; 原理图&#xff1a; 学下布局&#xff1a;

如何在软件开发时代实现技术+业务的双重突破?【含资源】

在当前的软件开发时代&#xff0c;许多企业面临着核心技术缺失、专业人才短缺以及产品能力单一等问题&#xff0c; 迫切需要加强技术实力&#xff0c;补充和扩展原有的业务和行业能力。 将技术与业务需求深度结合&#xff0c;构建适应时代需求的技术业务模式&#xff0c;成为软…