`

一分钟学会spring注解之@Autowired注解(二)

阅读更多

上一遍文章中有简单的介绍@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的实现原理

 

 

更多优质文章请关注以下公众号查阅:

 

分享到:
评论

相关推荐

    (转)Spring中@Autowired注解和@Resource注解的区别

    `@Autowired`是Spring框架自带的一个注解,主要用于自动装配bean。它主要基于类型匹配,Spring会尝试找到与目标字段或方法参数类型相同的bean来注入。如果找到多个候选bean,可以通过指定`@Qualifier`来指定特定的...

    通过@Autowired注解注入bean的顺序,以及@bean注入.rar

    4. **@Qualifier注解**:如果还有多个bean,且没有`@Primary`,Spring会检查`@Autowired`注解是否带有`@Qualifier`,并根据指定的bean名称进一步筛选。 5. **索引**:如果以上方式都无法确定唯一bean,那么可以为...

    Spring注解@Resource和@Autowired.doc

    Spring 注解@Resource 和@Autowired Spring 框架中提供了两个重要的注解,分别是@Resource 和@Autowired,它们都是用于 bean 的自动装配的。了解这两个注解的区别和使用场景是非常重要的。 首先,@Autowired 是 ...

    Spring使用@Autowired注解自动装配

    在Spring框架中,`@Autowired`注解是一个关键特性,用于简化依赖注入的过程。依赖注入是一种设计模式,它允许我们解耦代码,提高模块的可测试性和可维护性。在这个主题中,我们将深入探讨`@Autowired`的工作原理、...

    Spring@Autowired注解与自动装配.rar

    - **@Autowired注解的可选性**:使用`required`属性控制是否必须注入。默认为`true`,表示必须注入,否则抛出异常;设为`false`则允许不注入。 ```java @Autowired(required = false) private MyService ...

    Spring框架中 @Autowired 和 @Resource 注解的区别

    在Spring框架中,注解是实现依赖注入的重要方式,其中包括`@Autowired`和`@Resource`两个常用的注解。它们虽然都可以用来注入依赖,但在实际使用中存在一些区别。 首先,`@Autowired`注解是Spring框架特有的,主要...

    SSH笔记-通过@Autowired配置注入关系

    在Spring框架中,`@Autowired`注解是一个关键特性,用于自动装配Bean的依赖。它极大地简化了传统XML配置中的bean依赖注入过程。本笔记将深入探讨如何在Spring 4中利用`@Autowired`注解配置注入关系,以及它与前一篇...

    详解Spring注解--@Autowired、@Resource和@Service

    Spring注解详解 -- @Autowired、@Resource和@Service Spring框架中有三个非常重要的注解,即@Autowired、@Resource和@Service。这三个注解都是Spring框架中最常用的注解,它们都是用于解决Spring框架中的依赖注入...

    学习Spring笔记_Annotation(注解)_Autowired_Qualifier

    在工具方面,IDEA等现代Java集成开发环境提供了对Spring注解的强大支持,如代码提示、自动完成、重构等,使得开发过程更加高效。同时,对于复杂的项目,使用Maven或Gradle构建工具管理依赖,结合Spring Boot等快速...

    12 @Autowired是如何工作的?-Spring注解源码深度揭秘-慕课专栏1

    在Spring框架中,`@Autowired`注解是一个关键的依赖注入(DI)工具,它极大地简化了组件之间的关联。本文将深入探讨`@Autowired`的工作原理以及其在Spring中的实现方式。 首先,`@Autowired`的基本作用是自动装配Bean...

    Spring In Action 使用@Autowired 和@ Resource 自动装配Bean

    `@Autowired`是Spring提供的一个注解,主要用于自动装配Bean。当在字段、方法或构造器上添加`@Autowired`时,Spring会尝试找到类型匹配的Bean并将其注入。例如,如果有一个名为`dataSource`的Bean,且类型为`...

    Spring使用@Autowired为抽象父类注入依赖代码实例

    Spring框架中,使用@Autowired注解可以将依赖项注入到Bean中,但是当我们需要将依赖项注入到抽象父类时,会遇到一些问题。如果我们直接使用@Autowired注解在抽象父类中,可能不会生效,因为抽象父类不能被实例化。...

    【Java面试】@Resource 和 @Autowired 的区别.doc

    在使用 @Autowired 注解时,如果在 Spring IOC 容器里面存在多个相同类型的 Bean 实例,那么 Spring 启动的时候,会提示一个错误,大概意思原本只能注入一个单实例 Bean,但是在 IOC 容器里面却发现有多个,导致注入...

    Spring Ioc源码分析系列--@Autowired注解的实现原理.doc

    Spring Ioc源码分析系列--@Autowired注解的实现原理 @ Автоwired注解是 Spring Framework 中的一个重要组件,它提供了自动装配的功能,能够将 Bean 之间的依赖关系自动解析和注入。今天,我们将深入探讨 @...

    @Autowired 注解是如何实现的?(csdn)————程序.pdf

    【@Autowired注解详解及其实现原理】 在Spring框架中,`@Autowired`注解是核心的依赖注入(Dependency Injection,DI)工具,它允许开发者自动地将Bean实例注入到需要的地方,无需显式地通过setter方法或构造函数来...

    详解Spring依赖注入:@Autowired,@Resource和@Inject区别与实现原理

    @Inject 的注入方式与 @Autowired 类似,但 @Inject 是 JSR330 规范的一部分,而 @Autowired 是 Spring 自带的依赖注入方式。 四、依赖注入注解的实现原理 依赖注入注解的实现原理是通过 BeanPostProcessor 接口的...

    Spring @Autowired

    这个注解是Spring框架的核心特性之一,极大地简化了代码的编写和维护。接下来,我们将深入探讨`@Autowired`的工作原理、使用场景以及相关的最佳实践。 ### 1. `@Autowired`的基本用法 `@Autowired`注解可以用于...

    Spring的Autowired自动装配(XML版本+Annotation版本+源码+解析)

    随着Spring的发展,@Autowired注解应运而生,这是Annotation版本的自动装配。它允许开发者在类的字段、方法或构造器上直接声明依赖,大大减少了XML配置的量。例如: ```java @Service public class UserService { ...

    spring 注解Autowired、service、Autowired 的使用

    @Autowired注解是Spring框架的一部分,用于自动装配bean。它允许你无需显式配置XML或Java配置,就能将依赖注入到你的类中。当你在一个字段、构造函数、方法或者参数上使用@Autowired时,Spring容器会自动查找类型...

    spring3注解详细

    在使用 @Autowired 时,需要在配置文件中添加 `<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />` 来启用注解处理。 ### 1.1 多个同类型 Bean 的处理 当有多...

Global site tag (gtag.js) - Google Analytics