首页 > 其他分享 >@Autowired作用在方法上 @autowired注解放在方法上,如果方法没有参数,spring容器会在类加载完后执行一次这个方法;如果方法中有参数的话,还会从容器中自动注入这个方法的参数,然后

@Autowired作用在方法上 @autowired注解放在方法上,如果方法没有参数,spring容器会在类加载完后执行一次这个方法;如果方法中有参数的话,还会从容器中自动注入这个方法的参数,然后

时间:2023-11-30 14:23:47浏览次数:31  
标签:容器 name getName 参数 User 方法 public

@Autowired作用在方法上 @autowired注解放在方法上,如果方法没有参数,spring容器会在类加载完后执行一次这个方法;如果方法中有参数的话,还会从容器中自动注入这个方法的参数,然后执行一次这个方法。

@autowired
用于测试的实体类User,并将这个类注入到Spring容器中,为@autowired注解放在方法做前提工作

@Component
public class User {

    private String name = "张三";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

这是一个配置类,SpringBoot启动后会加载这个配置类,把@autowired放在方法上

// 测试一
@Configuration
public class UserConfig {

    @Autowired
    public void getName(User user){
        System.out.println("主动注入的User:"+user.getName());
    }
}

启动SpringBoot后控制台打印(测试一):

在这里插入图片描述
// 测试二
@Configuration
public class UserConfig {

 

    @Autowired
    public void getName(){
        System.out.println("主动注入的User:.......");
    }
}

启动SpringBoot后控制台打印(测试二):

在这里插入图片描述
结论:@autowired注解放在方法上,如果方法没有参数,spring容器会在类加载完后执行一次这个方法;如果方法中有参数的话,还会从容器中自动注入这个方法的参数,然后执行一次这个方法。

 

@autowired(required = false)
测试一
@Component
public class User {

    private String name = "张三";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

// 测试一
@Configuration
public class UserConfig {

    @Autowired(required = false)
    public void getName(User user){
        System.out.println("主动注入的User:"+user.getName());
    }
}

测试一结果:

在这里插入图片描述
测试二
不将User注入到容器中

 

public class User {

    private String name = "张三";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

@Configuration
public class UserConfig {

    @Autowired(required = false)
    public void getName(User user){
        System.out.println("主动注入的User:"+user.getName());
    }
}

测试二结果:

在这里插入图片描述​​​​​​​

没有执行getName方法

结论:@autowired(required = false)作用在方法上,当方法有参数时,如果IOC容器中有方法参数的对象,那么会自动注入并执行方法一次;如果IOC容器中没有方法的参数对象,那么这个方法不会被执行,不管这个方法上有多少个参数,只要有一个参数对象是IOC容器中没有的,这个方法便不会被执行。如果方法没有参数,那么会被执行一次。
 

原文链接:https://blog.csdn.net/Maxiao1204/article/details/128829925

标签:容器,name,getName,参数,User,方法,public
From: https://www.cnblogs.com/sunny3158/p/17867228.html

相关文章

  • npm install 报pnpm无法加载文件 (解决方法 )
    例如:我现在要运行一个TS的项目,我的电脑上没有安装pnpm,导致我的vscode一直报错无法加载 Pnpm安装npminstall-gpnpmpnpm:无法加载文件pnpm:无法加载文件C:\Users\HP\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅https:/go.micro......
  • Linux校验文件MD5和SHA值的方法
    1、需求背景下载或传输文件后,需要计算文件的MD5、SHA256等校验值,以确保下载或传输后的文件和源文件一致2、校验方法如上图所示,可以使用Linux自带的校验命令来计算一个文件的校验值Linux自带的校验命令有:md5sum、sha1sum、sha224sum、sha256sum、sha384sum、sha512sum......
  • [转载]控制台程序隐藏的四种方法总结
    原帖地址找不到了。学习计算机,往往先从Windows环境下学习编程,学习编程,往往从C学起,学习C,往往又从控制台程序学习,何为控制台,就是那个黑框白字的界面。对于这样一个最初认为奇陋无比而现在认为无所不能的编程平台,有时候需要将界面隐藏起来。那么如何做呢?方法1:在头文件下加上一句预......
  • 【必读】开发者必备!轻松学习MySQL事务的使用方法
    在日常开发中我们经常会遇到需要同时处理多个操作的情况,比如在购物时,我们需要同时完成支付和更新库存两个操作。这时,如果其中一个操作失败了,我们就需要进行回滚,以保证数据的一致性。那么,如何在MySQL中实现这样的功能呢?答案就是——事务。下面我们就来介绍一下MySQL事务是什么?它......
  • 容器技术
    二容器技术2.1基础设施层选型智慧校园基础设施层提供基础设施保障,异构通信网络、广泛的物联和海量的数据汇集存储,为智慧校园的各种应用提供基础支持,为大数据挖掘、分析提供数据支撑。基础设施层主要包括信息化基础设施、数据库与服务器等。本章主要介绍基础设施和服务器。2.1.1......
  • 创建 HTTP 服务器监听端口的方法
    Node.js创建HTTP服务器监听端口的方法一、使用http模块创建服务器Node.js内置了http模块,通过它我们可以轻松创建一个HTTP服务器。下面是一个简单的例子:consthttp=require('http');constserver=http.createServer((req,res)=>{//处理请求逻辑r......
  • 编程设计模式中,工厂方法模式为什么叫工厂方法?(AI)
    来自你的消息:编程设计模式中,工厂方法模式为什么叫工厂方法?来自WeTabAI的消息:工厂方法模式是一种常用的面向对象设计模式,它被称为工厂方法是因为在这种模式中,我们将对象的创建过程封装到一个工厂类中,通过工厂类来创建对象。工厂方法模式的核心思想是定义一个用于创建对象的......
  • linux命令使用方法(不断更新)
    find/-inametest    #查找所有/目录下文件名为test的文件find/type-f-mtime+30-name"文件名或表达式"   #查找/目录下类型为文件时间为30天以前-name“”中的文件find/type-d-mtime+30    #查找/目录下类型为目录时间为30天以前的目录find/ty......
  • VB.net开发必备技能——两个窗体之间的数据传递方法!
    为了温故而知新,本博客旨在记录我学习VB.net编程的过程,分享基础知识和实用技巧,帮助有需要的朋友轻松入门VB.net编程。无论您是想开发Windows平台上的应用程序,还是想在.NET生态系统中展现创造力和创新精神,本文都将为您提供宝贵的指导。作为程序员,你一定曾经遇到过需要在不同窗体之......
  • 让多媒体元素在既定容器中自由布局
    一功能可添加时间、日期、星期、字幕、图片、视频和背景音乐。可修改布局大小。画布及元素的个别属性(如x,y,width,height,fontsize)将会通过一定比例进行缩放,以此达到接近实际所看到的效果。可通过拖拽修改元素位置、添加新元素;可对元素进行收缩以改变其尺寸等属性。支持修改时间......