@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容器中没有的,这个方法便不会被执行。如果方法没有参数,那么会被执行一次。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)