idea-Spring框架与ioc容器

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.mfbz.cn/a/716424.html

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

相关文章

CD4069做陶瓷和晶体振荡器的试验初步

在面包板上面&#xff0c;供电5v。尝试用4069做晶体振荡器 465K&#xff0c;1M陶瓷&#xff0c;不起振 4M陶瓷&#xff0c;不起振&#xff0c;在1脚加上68pf电容后起振&#xff0c;但幅度没有后面写的10M陶瓷和17.6的晶振的幅度大 10M陶瓷&#xff0c;起振ok 16M陶瓷&#…

微信分销商城小程序源码系统在线搭建 前后端分离 带完整的安装代码包以及搭建教程

系统概述 本微信分销商城小程序源码系统采用先进的前后端分离架构设计&#xff0c;前端使用Vue.js框架开发&#xff0c;后端则基于Spring Boot构建&#xff0c;确保了系统的高可维护性、扩展性和性能。系统集商品展示、在线交易、会员管理、分销推广、订单处理、数据统计等功能…

分析网页请求参数

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 既然是爬票&#xff0c;那么一定需要一个爬取的对象&#xff0c;本节实战将通过12306中国铁路客户服务中心所提供的查票请求地址获取火车票的相关信息…

vim 的 map+noremap

经常在 vim 的配置文件中&#xff0c;看到对于改键的设置。 他们的区别主要有两种 1 用于哪种模式。 2 是否用于递归。

从WWDC 2023看苹果的未来:操作系统升级与AI技术的融合

引言 在2024年的WWDC&#xff08;苹果全球开发者大会&#xff09;上&#xff0c;苹果公司展示了一系列创新技术和产品&#xff0c;其中最引人注目的莫过于操作系统的升级与AI技术的深度融合。作为一个备受期待的发布会&#xff0c;WWDC不仅向我们展示了苹果在技术上的前瞻性布…

第二十一章 访问者模式

目录 1 访问者模式介绍 2 访问者模式原理 3 访问者模式实现 4 访问者模式总结 1 访问者模式介绍 访问者模式(Visitor Pattern) 的原始定义是&#xff1a;允许在运行时将一个或多个操作应用于一组对象&#xff0c;将操作与对象结构分离 2 访问者模式原理 抽象访问者&#xf…

PHP7 数组的实现

前提 PHP版本&#xff1a;php7.0.29使用到的文件 php-src/Zend/zend_types.hphp-src/Zend/zend_hash.hphp-src/Zend/zend_hash.cphp-src/Zend/zend_string.h 本文 是《PHP7底层设计和源码实现》第5章 数组的实现&#xff0c;学习笔记 功能分析 整体结构 bucket 里面增加h字段…

mac安装高版本git(更新git)

问题 问题&#xff1a;新下载的idea&#xff0c;此idea的版本较高&#xff0c;但是在工作发现这个版本的git存在一定漏洞会导致一些信息泄露问题。 1.安装Homebrew 对于Mac更新git&#xff0c;最简单的就是使用brew命令。所以我们首先下载homebrew。已下载的同学忽略直接下一…

SN65HVD485EDR封装SOIC-8 半双工RS-485/RS-422收发器芯片 VP485

SN65HVD485EDR 主要的应用场景包括但不限于以下几个方面&#xff1a; 1. 工业自动化&#xff1a;在工业控制系统中&#xff0c;RS-485接口常用来连接传感器、执行器和其他现场设备到中央控制系统。由于SN65HVD485EDR 的高ESD保护和抗噪能力&#xff0c;它特别适合于工厂车间等…

SpringCloud:Feign远程调用

程序员老茶 &#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; P   S : 点赞是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#…

最新编程语言排行榜,C++ 和 Go 成为新王?!

大家好&#xff0c; 我是不爱敲代码吖,2024 年 6 月最新的 TIOBE 编程语言排行榜已经发布&#xff0c;如图&#xff1a; 注意&#xff0c;TIOBE 编程语言排行榜是基于 全球 工程师的数量、课程、热门网站、第三方供应商综合计算出来的&#xff0c;只是一个编程语言流行度和趋势…

office 修复命令

System.Runtime.InteropServices.COMException:“远程调用失败 DISM /Online /Cleanup-Image /RestoreHealth

[图解]建模相关的基础知识-11

1 00:00:00,700 --> 00:00:05,090 下一个知识点就是函数在集合上的限制 2 00:00:08,290 --> 00:00:10,200 符号可以这样来 3 00:00:10,210 --> 00:00:16,640 F然后一个往下的箭头A 4 00:00:16,650 --> 00:00:19,520 意思就是说F里面的元素 5 00:00:20,120 --&…

中国人口密度分布图

原文链接https://mp.weixin.qq.com/s?__bizMzUyNzczMTI4Mg&mid2247679489&idx3&sna05d4c0bed51c611101f7c777420d27e&chksmfa77613ccd00e82ad4177706fe02c365ed2cdb5974664af1df4ed513bfba48f762260433c419&token808263816&langzh_CN&scene21#wec…

AIOps在业务运维的最佳应用实践

随着企业IT基础架构的复杂性日益增加&#xff0c;传统运维模式难以满足高效、稳定的业务需求。AIOps&#xff08;人工智能运维&#xff09;作为一种新兴技术&#xff0c;通过数据驱动的自动化和智能化手段&#xff0c;有效提升了IT运维的效率和可靠性。本文将探讨AIOps在业务运…

Golang | Leetcode Golang题解之第150题逆波兰表达式求值

题目&#xff1a; 题解&#xff1a; func evalRPN(tokens []string) int {stack : make([]int, (len(tokens)1)/2)index : -1for _, token : range tokens {val, err : strconv.Atoi(token)if err nil {indexstack[index] val} else {index--switch token {case ""…

利用CNN识别英文语音数字

问题总述 任何一个数字&#xff0c;都是由10个基数构成的&#xff0c;本任务目的是借助于机器来实现英文语音数字的识别。下面&#xff0c;利用语音特征提取技术和卷积神经网络模型&#xff0c;对英文语音数字进行识别以解决上述问题。 步骤一&#xff1a;提取音频文件的语音…

【递归、搜索与回溯】综合练习二

综合练习二 1.组合2.目标和3.组合总和4.字母大小写全排列 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.组合 题目链接&#xff1a;77. 组…

海康充电桩报文校验TCP校验和

1 TCP校验文档校验文档要求&#xff1a; 校验码描述 校验码计算范围包含包头标识、消息头和消息体&#xff0c;校验算法采用 TCP 和校验&#xff0c;具体规则如下。 将待校验的所有数据分为 16 位的字&#xff08;大端序&#xff09;&#xff0c;如果总长度为奇数个字节&#…

hadoop未授权访问命令执行漏洞复现-vulfocus

1 介绍 Hadoop YARN&#xff08;Yet Another Resource Negotiator&#xff09;的ResourceManager是集群资源管理的核心组件&#xff0c;负责分配和管理集群资源以及调度作业。如果ResourceManager出现未授权访问漏洞&#xff0c;可能允许未经认证的用户访问或操作集群资源&…