上一遍文章中有简单的介绍@Autowired注解的使用,没有查看的同学可以点击查看,但是那偏文章只介绍了@Autowired注解的一种使用方式,当然也是常用的方式就是@Autowired注解加在成员变量上,今天将介绍另外的几种使用方式:
-
@Autowired注解加在方法上
-
@Autowired注解加在构造方法上
-
@Autowired注解加在参数上
1,@Autowired注解加在方法上
修改之前的UserService如下在setUserDao方法上加上@Autowired注解:
@Service
public class UserService {
// @Autowired(required=false)
private UserDao userDao;
public UserDao getUserDao() {
return userDao;
}
@Autowired
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
/**
* 增加一个tostring方法 方便测试
*/
@Override
public String toString() {
return "UserService [userDao=" + userDao + "]";
}
}
测试代码如下:
AnnotationConfigApplicationContext applicationContext2 = new AnnotationConfigApplicationContext(MainScanConfig.class);
UserService object = (UserService) applicationContext2.getBean("userService");
System.out.println("实例bean为 === "+object);
运行我们可以发现userDao同样成功的注入到了UserService中了
2,@Autowired注解加在构造方法上
我们继续修改UserService把@Autowired注解加在UserService对应的构造方法上如下:
@Service
public class UserService {
// @Autowired(required=false)
private UserDao userDao;
/**
* spring 在启动的时候会调用这个有参构造方法
* @param userDao
*/
@Autowired
public UserService(UserDao userDao){
this.userDao=userDao;
}
/**
* 增加一个tostring方法 方便测试
*/
@Override
public String toString() {
return "UserService [userDao=" + userDao + "]";
}
}
运行测试我们可以发现userDao同样成功的注入到了UserService中
3,@Autowired注解加在参数上
继续修改以上代码如下:
@Service
public class UserService {
// @Autowired(required=false)
private UserDao userDao;
/**
* spring 在启动的时候会调用这个有参构造方法
* 如果只有一个有参构造方法则@Autowired注解也可以省略
* @param userDao
*/
public UserService(@Autowired UserDao userDao){
this.userDao=userDao;
}
/**
* 增加一个tostring方法 方便测试
*/
@Override
public String toString() {
return "UserService [userDao=" + userDao + "]";
}
}
注解与第二种的区别@Autowired加到了对应的参数中,如果就一个有参构造方法,@Autowired注解也可以省略,测试结果可以发现同样成功注入
虽然后边这几种方法我们不常用,但是作为知识的补充还是有必要的,万一哪位同学写了这样的代码,我们也不至于看不懂
以上是今天文章的所有内容,欢迎大家吐槽
推荐阅读
深入理解spring生命周期与BeanPostProcessor的实现原理
更多优质文章请关注以下公众号查阅:
相关推荐
`@Autowired`是Spring框架自带的一个注解,主要用于自动装配bean。它主要基于类型匹配,Spring会尝试找到与目标字段或方法参数类型相同的bean来注入。如果找到多个候选bean,可以通过指定`@Qualifier`来指定特定的...
4. **@Qualifier注解**:如果还有多个bean,且没有`@Primary`,Spring会检查`@Autowired`注解是否带有`@Qualifier`,并根据指定的bean名称进一步筛选。 5. **索引**:如果以上方式都无法确定唯一bean,那么可以为...
Spring 注解@Resource 和@Autowired Spring 框架中提供了两个重要的注解,分别是@Resource 和@Autowired,它们都是用于 bean 的自动装配的。了解这两个注解的区别和使用场景是非常重要的。 首先,@Autowired 是 ...
在Spring框架中,`@Autowired`注解是一个关键特性,用于简化依赖注入的过程。依赖注入是一种设计模式,它允许我们解耦代码,提高模块的可测试性和可维护性。在这个主题中,我们将深入探讨`@Autowired`的工作原理、...
- **@Autowired注解的可选性**:使用`required`属性控制是否必须注入。默认为`true`,表示必须注入,否则抛出异常;设为`false`则允许不注入。 ```java @Autowired(required = false) private MyService ...
在Spring框架中,注解是实现依赖注入的重要方式,其中包括`@Autowired`和`@Resource`两个常用的注解。它们虽然都可以用来注入依赖,但在实际使用中存在一些区别。 首先,`@Autowired`注解是Spring框架特有的,主要...
在Spring框架中,`@Autowired`注解是一个关键特性,用于自动装配Bean的依赖。它极大地简化了传统XML配置中的bean依赖注入过程。本笔记将深入探讨如何在Spring 4中利用`@Autowired`注解配置注入关系,以及它与前一篇...
Spring注解详解 -- @Autowired、@Resource和@Service Spring框架中有三个非常重要的注解,即@Autowired、@Resource和@Service。这三个注解都是Spring框架中最常用的注解,它们都是用于解决Spring框架中的依赖注入...
在工具方面,IDEA等现代Java集成开发环境提供了对Spring注解的强大支持,如代码提示、自动完成、重构等,使得开发过程更加高效。同时,对于复杂的项目,使用Maven或Gradle构建工具管理依赖,结合Spring Boot等快速...
在Spring框架中,`@Autowired`注解是一个关键的依赖注入(DI)工具,它极大地简化了组件之间的关联。本文将深入探讨`@Autowired`的工作原理以及其在Spring中的实现方式。 首先,`@Autowired`的基本作用是自动装配Bean...
`@Autowired`是Spring提供的一个注解,主要用于自动装配Bean。当在字段、方法或构造器上添加`@Autowired`时,Spring会尝试找到类型匹配的Bean并将其注入。例如,如果有一个名为`dataSource`的Bean,且类型为`...
Spring框架中,使用@Autowired注解可以将依赖项注入到Bean中,但是当我们需要将依赖项注入到抽象父类时,会遇到一些问题。如果我们直接使用@Autowired注解在抽象父类中,可能不会生效,因为抽象父类不能被实例化。...
在使用 @Autowired 注解时,如果在 Spring IOC 容器里面存在多个相同类型的 Bean 实例,那么 Spring 启动的时候,会提示一个错误,大概意思原本只能注入一个单实例 Bean,但是在 IOC 容器里面却发现有多个,导致注入...
Spring Ioc源码分析系列--@Autowired注解的实现原理 @ Автоwired注解是 Spring Framework 中的一个重要组件,它提供了自动装配的功能,能够将 Bean 之间的依赖关系自动解析和注入。今天,我们将深入探讨 @...
【@Autowired注解详解及其实现原理】 在Spring框架中,`@Autowired`注解是核心的依赖注入(Dependency Injection,DI)工具,它允许开发者自动地将Bean实例注入到需要的地方,无需显式地通过setter方法或构造函数来...
@Inject 的注入方式与 @Autowired 类似,但 @Inject 是 JSR330 规范的一部分,而 @Autowired 是 Spring 自带的依赖注入方式。 四、依赖注入注解的实现原理 依赖注入注解的实现原理是通过 BeanPostProcessor 接口的...
这个注解是Spring框架的核心特性之一,极大地简化了代码的编写和维护。接下来,我们将深入探讨`@Autowired`的工作原理、使用场景以及相关的最佳实践。 ### 1. `@Autowired`的基本用法 `@Autowired`注解可以用于...
随着Spring的发展,@Autowired注解应运而生,这是Annotation版本的自动装配。它允许开发者在类的字段、方法或构造器上直接声明依赖,大大减少了XML配置的量。例如: ```java @Service public class UserService { ...
@Autowired注解是Spring框架的一部分,用于自动装配bean。它允许你无需显式配置XML或Java配置,就能将依赖注入到你的类中。当你在一个字段、构造函数、方法或者参数上使用@Autowired时,Spring容器会自动查找类型...
在使用 @Autowired 时,需要在配置文件中添加 `<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />` 来启用注解处理。 ### 1.1 多个同类型 Bean 的处理 当有多...