spring学习之路(3) spring的依赖注入

自动化革命:AI在需求分析、代码生成与测试中的深度应用 在2025年的科技浪潮中,人工智能(AI)已不再是实验室中的概念,而是深度渗透至软件开发的全生命周期。从需求分析的精准捕捉,到代码生成的自动化创作,再到测试环节的智能覆盖,AI正以革命性姿态重塑软件工程的核心环节。本文将结合2025年最新数据与行业实践,解析AI如何在这三大领域实现深度应用。 阅读详情

bean.xml

<!--spring的依赖注入
        注入的方式有三种:
            1,使用构造函数注入
            2,使用set方法注入
            3.使用注解注入
        注入的数据类型有三种:
            1,基本类型和string类型
            2,其他bean类型
            3,复杂类型(集合类型) 
     -->
    <!-- 构造函数注入
        标签:constructor-arg
        涉及的属性:
            type:指定参数的类型
            index:指定参数的索引位置,从0开始
            name:指定参数的名称
            ==========上面三个属性是指定给哪个参数赋值,下面两个属性是指定给参数赋什么值===================
            value:指定基本数据类型或string类型的数据
            ref:指定其他bean类型数据
    -->
<bean id="customerService" class="service.impl.CustomerServiceImpl">
        <constructor-arg name="name" value="user"></constructor-arg>
        <constructor-arg name="password" value="123"></constructor-arg>
        <constructor-arg name="customerDao" ref="customerDao"></constructor-arg>
    </bean> <bean id="customerDao" class="dao.impl.CustomerDaoImpl"></bean> 

CustomerServiceImpl.class

public class CustomerServiceImpl implements CustomerService {
    private String name;
    private String password;
    private CustomerDao customerDao;

    /*
     * 构造函数注入
     * 提供构造函数让参数注入
     */
public CustomerServiceImpl(String name, String password,CustomerDao customerDao) {
    this.name = name;
    this.password = password;
    this.customerDao = customerDao;
    }

    public void saveCustomer(){
    System.out.println("业务层调用持久层   "+name+" "+password);
    customerDao.saveCustomer();
    }
}

bean.xml

<!-- set方法注入
        name:指定参数的名称
        value:指定基本数据类型或string类型的数据
        ref:指定其他bean类型数据
     -->

    <!-- <bean id="customerService" class="service.impl.CustomerServiceImpl">
        <property name="name" value="user"></property>
        <property name="password" value="123"></property>
        <property name="customerDao" ref="customerDao"></property>
    </bean> -->

CustomerServiceImpl.class

public class CustomerServiceImpl implements CustomerService {
    private String name;
    private String password;
    private CustomerDao customerDao;

    public void saveCustomer(){
    System.out.println("业务层调用持久层   "+name+" "+password);
    customerDao.saveCustomer();
    }

    /* set方法注入
     * 生成set方法以让数据注入
     */

   /* public void setName(String name) {
        this.name = name;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public void setCustomerDao(CustomerDao customerDao) {
        this.customerDao = customerDao;
    }
    */

}

bean.xml

<!-- 当配置了注解之后,要告知spring在创建容器时要扫描的包,配置了该标签后,spring才会去指定的包以及其子包下找相应的注解
 -->
     <context:component-scan base-package="service"></context:component-scan>
    <context:component-scan base-package="dao"></context:component-scan> 

CustomerServiceImpl.class

/*
 * 
 * 注解:
 * <bean id="customerService" class="service.impl.CustomerServiceImpl"></bean>
 * 创建bean对象
 *  @Component
 *      作用相当与配置一个bean标签,有一个id属性,默认为首字母小写的类名
 *  由此注解衍生了的三个注解:
 *      @Controller 用于表现层的注解
 *              @Service    用于业务层的注解
 *              @Repository 用于持久层的注解
 *      它们和@Component的作用和属性一模一样
 * 注入数据:
 *  @Autowired
 *      作用:自动按照类型注入
 *      如果注入的bean在容器中类型不唯一,即一个接口有多个实现类,它会把变量名作为bean的id,在容器中查找,找到后也能注入成功
 *      如果没有找到一致的id,就会报错
 *      @Qualifier
 *      作用:在自动按照类型注入的基础上,再按照bean的id注入       
 *      属性:
 *          value:用于指定bean的id
 *  @Resource
 *      作用:直接按照id进行注入   
 *      属性:
 *          name:用于指定bean的id
 *  以上三个注解都是用于注入其他bean类型,而注入基本数据类型和string类型用@Value
 *  @Value
 *      属性:
 *          value:用于指定要注入的数据
 *  它可以借助spring中的el${}表达式读取properties文件中的配置    
 *  
 * 改变作用范围:
 *  @Scope  
 *       作用:用于改变bean的作用范围
 * 
 */
@Service("customerServiceImpl")
public class CustomerServiceImpl implements CustomerService {
    @Value("aaa")
    private String name;
    @Value("123")
    private String password;

    //@Resource(name="customerDaoImpl")
    //@Qualifier("customerDaoImpl")
    @Autowired
    private CustomerDao customerDao;


    public void saveCustomer(){
    System.out.println("业务层调用持久层   "+name+" "+password);
    customerDao.saveCustomer();
    }    
}

bean.xml文件可以用一个class代替

/*
 * 一个spring的配置类,相当于bean.xml
 */

//@Configuration//他就是把当前类看出spring的配置类,一般也可以不用
@ComponentScan({"service","dao"})
public class SpringConfiguration {

}
YOLOv11增量学习数据回放优化:解决新类别引入时的灾难性遗忘问题 本文提出了一种基于生成式潜在回放和提示学习的YOLOv11增量学习系统,旨在解决目标检测中的灾难性遗忘问题。系统采用改进的YOLOv11骨干网络,结合条件变分自编码器生成旧类别特征,并通过渐进式提示调优模块实现高效参数更新。关键技术包括:1) C3k2模块和C2PSA注意力增强特征提取;2) CLIP引导的VAE潜在空间数据回放;3) 类特定与超类别提示相结合的增量调优策略;4) 自适应特征金字塔与显式视觉中心融合机制。实验表明,该方法在保持原有检测性能的同时,显著降低了增量学习过程中的遗忘现象。 阅读详情

相关推荐

解决相同型号USB设备在Windows系统中重复枚举问题

本文详细解析了Windows系统中相同型号USB设备重复枚举问题的成因及解决方案。通过修改注册表、使用PsTools工具清除设备记录以及编程实现自动化处理等方法,有效解决设备识别混乱问题,特别适用于自动化测试和工业设备管理场景。

weixin_42561040的博客 566

Spring5

Spring

weixin_44787078的博客 620

Loupe Browser实战指南:解锁10xGenomics单细胞数据的可视化奥秘

本文提供了Loupe Browser的实战指南,帮助用户无需编程即可探索和可视化10xGenomics单细胞数据。文章详细介绍了从数据导入、界面导航到细胞亚群鉴定、差异基因分析的核心操作流程,并分享了高级技巧与避坑指南,是快速上手这一强大可视化工具的必备参考。

weixin_29313423的博客 208

Spring注解@Component、@Repository、@Service、@Controller区别

https://blog.youkuaiyun.com/xiao190128/article/details/54890759/   service  是有用的相当于 xml配置中得bean  id = service  也可以不指定 不指定相当于 bean id =  com. service.service 就是这个类的全限定名,表示给当前类命名一个别名,方便注入到其他需要用到的类中;不加的话,默认别名就...

weixin_33940102的博客 6882

AI Agent在智能投研中的实战:多智能体信息整合与策略生成

本文将带你从0到1完整搭建一套基于LangChain和AutoGen的多智能体AI投研系统首先,我们会一起梳理智能投研的核心痛点、金融数据的独特性,以及为什么传统AI Agent,尤其是多智能体协同架构,是破局的唯一最优解;RAG检索增强生成(但这次是金融领域定制化的,包括向量检索+时序数据检索+知识图谱检索的“三元检索增强”)、AutoGen多智能体协同框架。

软件工程实践的博客 381

华大 HC32F460 DMA数据传输实战:从配置到中断处理的完整指南

本文提供了华大半导体HC32F460微控制器DMA(直接内存访问)功能的完整实战指南。详细解析了DMA的配置流程、中断处理机制以及软件与硬件触发方式,并附有实验代码示例。通过合理使用DMA进行数据传输,可以显著解放CPU资源,提升嵌入式系统的实时性与运行效率。

weixin_29194255的博客 255

Spring 中的 Service 有多个实现类,怎么注入?

发表于福建Controller中注入service的时候使用@Autowired自动注入,来指定注入哪一个。Controller中注入service的时候使用来指定注入哪一个。每个service的impl都可以指定名称(使用Controller中注入service的时候使用名称来指定注入哪一个(使用。

竹林幽深 367

Computer Networks 和 Computer & Security投稿经验

论文投稿

qq_50604294的博客 9236

关于Springboot的@Service注入的方式

1. 最近在写代码过程中发现Service注入的方式原来有这么多种的,所以记录一下这些方式。 2. 最常用的就是这种直接用@AutoWire的方式了: @Service public class TestServiceImp implements TestService { // } @RestController public class TestController { ...

BAStriver的博客 9796

(2-4-01)目标检测与分割:地面提取(1)

请看下面的例子,生成了虚拟 LiDAR 点云数据,然后使用 DBSCAN 聚类方法进行 LiDAR 地面提取,并根据聚类结果可视化地面和非地面点云。首先生成虚拟 LiDAR 点云数据,然后基于设定的高程阈值进行地面提取,并通过 Open3D 可视化地面和非地面点云。地面提取是LiDAR(激光雷达)数据处理中的一个重要步骤,其目标是从点云数据中分离出地面点,即地面表面上的点。LiDAR点云数据通常包含地面点和非地面点(例如建筑物、树木等),地面提取的目标是从这些点中准确识别和提取地面点。

码农三叔 703

ICC2: 如何让CTS指定pin多长指定长度

这里create_clock不需要写到sdc里,在脚本里写就行,需要注意的是脚本里存在remove_clock_tree的话,add_buffer就要放remove_clock_tree后面,或者给guide buffer设don't touch也行。跟innovus的操作逻辑一样,如果要让tree上的某一点长长,要先考虑这个点后面的clock tree能正常balance。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?-5意味着长长5ns,相反正值意味着做短。

m0_61544122的博客 686

错误问题记录

java.lang.OutOfMemoryError: PermGen space: 错误解释:内存溢出 解决办法,tomcat安装目录--bin--catalina.bat: 找到: echo Using CATALINA_BASE: "%CATALINA_BASE%" 在这句话上面加上:set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=256M -XX:MaxPermSize=512m,然后想修改多大就可以改成什么 ...

jrq1205183714的博客 1530

OpenOCD入门到精通:第28章 综合实战:RISC-V 调试

RISC-V调试实战摘要 本文介绍了RISC-V调试规范及其在OpenOCD中的实现。主要内容包括: RISC-V Debug规范的两个版本(0.11和0.13)及其差异,OpenOCD通过自动检测DTMCS寄存器版本号选择对应驱动实现。 RISC-V调试架构的分层设计,包含DTM、Debug Module、Program Buffer等核心组件,以及三种内存访问方式(progbuf、sysbus、abstract)。 以GD32VF103为例的实战调试配置,包括硬件连接、OpenOCD配置文件编写和GDB

从事嵌入式linux android驱动开发,拥有全栈能力 285

Spring学习3:Spring依赖注入机制

Spring依赖注入: Spring 基于构造函数的依赖注入 Spring 基于设值函数的依赖注入 Spring 注入内部Beans Spring 注入集合 一、Spring基于构造函数的依赖注入: 当容器调用带有一组参数的类构造函数时,基于构造函数的id就可以完成,其中每个参数代表一个对其他类的依赖,我们用一个例子来理解Spring基于构造函数的依赖注入: 步骤 描述 1 创...

qq_41617848的博客 483

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Spring学习3-DI依赖注入

(1)别名 alias 为bean设置别名 , 可以设置多个。 <!--设置别名:在获取Bean的时候可以使用别名获取--> <alias name="userT" alias="userNew"/> (2)Bean的配置 bean就是java对象,由Spring创建和管理; id 是bean的标识符,要唯一,如果没有配置id,name就是默认标识符; 如果配置id,又配置name,那么name是别名,name可设置多个别名,可以用逗号,分号,空格隔开; 如果不配置id和name

weixin_45176509的博客 1131

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Spring学习3 - <Bean>的属性、DI依赖注入三种方式

文章目录1. 属性设置 - XML配置文件、以及与其等价的注解形式2. 依赖注入DI的方式2.1 属性自动注入 - 不推荐代码准备阶段代码测试2.2 子节点构造器注入 - 不推荐2.3 子节点手动注入2.3.1 Property不是多值类2.3.1 是多值类 - Property需要子、孙节点 1. 属性设置 - XML配置文件、以及与其等价的注解形式 注意: - 所有Bean都懒加载,不过优先...

weixin_39651356的博客 472

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Spring 4 学习笔记3:依赖注入(DI)

详细介绍依赖注入(Dependency Injection)原理,并且介绍了依赖注入的主要三种方式以及它们的优缺点。

acherie的博客 1109

Spring3学习笔记之依赖注入配置

一、构造器注入: 1)常量值 简写: 全写:常量 2)引用 简写: 全写: 二、setter注入: 1)常量值 简写: 全写:常量 2)引用 简写: 全写: 3)数组:没有简写形式 ...

classjavac的博客 117

Spring5学习3——(依赖注入)(跟着狂神学的)

概念 依赖注入(Dependency Injection,D) 依赖 : 指Bean对象的创建依赖于容器 . Bean对象的依赖资源 . 注入 : 指Bean对象所依赖的资源 , 由容器来设置和装配 . 构造器注入 我们在之前的案例已经讲过了 Set 注入 (重点) 要求被注入的属性 , 必须有set方法 , set方法的方法名由set + 属性首字母大写 , 如果属性是boolean类型 , 没有set方法 , 是 is . 测试pojo类 : Address.java pu.

qq_43605227的博客 140

Spring学习笔记[3] -- DI依赖注入

DI 概述 DI:Dependency Injection,依赖注入,在Spring框架负责创建Bean对象的时候,动态的将依赖对象注入到Bean组件中 入门程序 在IOC入门程序中,如果UserServiceImpl的实现类中有一个属性,那么使用Spring框架的IOC功能时,可以通过依赖注把该属性的值传递进来。 创建接口 public interface UserServ...

310

Spring 4.0 学习日记(3)--- Spring依赖注入方式

依赖注入的几种数据类型的注入方式很简单 没啥说的 看代码就是了package com.wow.StudentInfo;public class Address { private String address; public String getAddress() { return address; } public void setAddress(St

大萌萌德 863

【Spring 学习笔记】3. 依赖注入 (未完待续)

源码查看路径。

weixin_38491553的博客 143

Spring学习3—控制反转(IOC)基于Annotation(注解)的依赖注入实现

Spring学习3—控制反转(IOC)基于Annotation(注解)的依赖注入实现

master_yao的博客 436

Spring学习(3)-spring核心思想IOC(控制反转)和DI(依赖注入)

spring核心思想IOC(控制反转)和DI(依赖注入) 核心思想——IOC(Inversion Of Control 控制反转)和DI(Dependency Injection 依赖注入) 上一篇简单了解的控制反转的思想和作用,这一篇深入一点。 1.一般的程序 在一个一般的java程序内,一切皆对象,对象依赖另一个对象,比如电脑对象依赖游戏对象,相当于电脑类中有一个属性是游戏对象。 在MVC思想中,java代码结构是: Model:实体模型(entity)、服务模型(service)、数据模型(dao)

算法工程师dongab的博客 545

Spring3学习笔记题记

准备记录自己的Spring3学习日志,虽然之前使用过,也断断续续学习过spring,但是,感觉没有学习到精要,或者全面...还不能对之有更全面的了解,现准备全面补课,一并记之.......

笃行之 101

《Spring从入门到精通》学习之 依赖注入(DI--Dependency Injection)的3种实现方式

什么是依赖注入:  Spring 使用DI来实现IoC功能。常用有3种DI注入方式。接口注入(Interface Injection) Set注入(setter injection) 构造注入(constructor injection)。  准备工作定义与要注入的对象和接口。 sample用的DB类和接口①.DataBase 接口packa

926
上一篇: spring学习之路(2) 配置Spring
下一篇: cglib org.objectweb.asm.ClassWriter.<init>
QEcode
博客等级 码龄10年 39粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值