首页 > 其他分享 >@Autowired 和 @Resource

@Autowired 和 @Resource

时间:2023-06-18 14:44:46浏览次数:35  
标签:Resource Autowired add userService public 注入

相同点:

@Autowired 和 @Resource 都是 Spring/Spring Boot 项目中,用来进行依赖注入的注解。

不同点:

1、依赖查找顺序不同:

1)@Autowired 先根据类型(byType)查找,如果存在多个(Bean)再根据名称(byName)进行查找;

2)@Resource 先根据名称(byName)查找,如果(根据名称)查找不到,再根据类型(byType)进行查找。

2、支持的参数不同:

@Autowired 和 @Resource 在使用时都可以设置参数,比如给 @Resource 注解设置 name 和 type 参数,实现代码如下:

@Resource(name = "userinfo", type = UserInfo.class)
private UserInfo user;

  二者支持的参数以及参数的个数完全不同,其中 @Autowired 只支持设置一个 required 的参数,而 @Resource 支持 7 个参数

 

3、依赖注入的方式不同:

@Autowired 支持属性注入、构造方法注入和 Setter 注入,而 @Resource 只支持属性注入和 Setter 注入

常见依赖注入有以下 3 种实现:

  1. 属性注入
  2. 构造方法注入
  3. Setter 注入

1、属性注入:

@RestController
public class UserController {
    // 属性注入
    @Autowired
    private UserService userService;
 
    @RequestMapping("/add")
    public UserInfo add(String username, String password) {
        return userService.add(username, password);
    }
}

  

2、构造方法注入:

@RestController
public class UserController {
    // 构造方法注入
    private UserService userService;
 
    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }
 
    @RequestMapping("/add")
    public UserInfo add(String username, String password) {
        return userService.add(username, password);
    }
}

  

3、Setter注入:

@RestController
public class UserController {
    // Setter 注入
    private UserService userService;
 
    @Autowired
    public void setUserService(UserService userService) {
        this.userService = userService;
    }
 
    @RequestMapping("/add")
    public UserInfo add(String username, String password) {
        return userService.add(username, password);
    }
}

  

 

标签:Resource,Autowired,add,userService,public,注入
From: https://www.cnblogs.com/coooookie/p/17489118.html

相关文章

  • getResourceAsStream()返回值为null
    getResourceAsStream()返回值为nulljavaWeb项目,写文件下载的时候遇到getServletContext().getResourceAsStream("/store/"+filename)获取的值为null//获得读取本地文件的输入流in=getServletContext().getResourceAsStream("/store/"+filename);目录结构如下查......
  • 云原生周刊:DevOps-resources
    推荐一个GitHub仓库“DevOps-resources”。这个GitHub仓库包含了学习和实践DevOps所需的资源列表。它包括涉及云计算、容器化、微服务、自动化和安全问题的文章、书籍、课程和工具。资源按最佳实践、代码基础设施和安全性等类别进行排序,使得用户可以更轻松地找到与他们需求......
  • Vue插件:Vue-resource github搜索示例
     1:安装插件  vue-resourcevue的插件库,在vue1.0年代使用几率很高2:界面效果3:代码信息说明:该示例代码基本上是与《“Vue中通过事件总线方式组件间传递数据及调用Vue脚手架中的axios数据调用方式获取github提供的用户接口数据信息”》一文中的代码相同。        故:此处......
  • spring boot ResourceUtil工具类获取不到jar的classPath下面文件问题
    先说结论这种方式是获取不到jar里面的文件的,但是在本地可以跑,打成jar包就读取不到文件了,即便ResourceUtils是spring提供的。Filefile=ResourceUtils.getFile("classpath:temp\\file\\info.txt");spring提供的ClassPathResource对象是可以在本地和jar环境都获取到资源......
  • JDK没有JAVAX.ANNOTATION.JAR包解决方案,无法使用@RESOURCE解决方案
    高版本JDK无法使用@Resource注解解决方案1.普通项目下载javax.annotation-api-1.3.2.jar,并在lib目录中引入即可2.Maven项目Maven项目:在pom.xml中进行配置<dependency><groupId>javax.annotation</groupId><artifactId>jsr250-api</artifactId><ver......
  • Failed to load resource: xxx 504 (Gateway Time-out)
    问题描述:上传文件js,报错如下:Failedtoloadresource:theserverrespondedwithastatusof504(GatewayTime-out) 问题原因:网络超时 解决办法:nginx配置 proxy_read_timeout150;location/{proxy_read_timeout150;//单位为秒}就是把超时时间调长一点,保证......
  • Autowired注解与Resource注解的区别
    两者的用法其实这两个注解的作用都一样,都是在做bean的注入,在使用过程中,两个注解有时候可以替换使用.两者的共同点@Resource注解和@Autowired注解都可以用作bean的注入.在接口只有一个实现类的时候,两个注解可以互相替换,效果相同.两者的不同点@Resource注解是Java自身......
  • 资源释放发方式二:try-with-resource
        ......
  • brpc - ResourcePool
    资源池ResourcePoolResourcePool<T>::singleton()->get_resource(id,arg1);template<typenameT>classResourcePool{...}是个类模板,单例模式。主要成员:get_resource/return_resource有个LocalPool成员,依赖它实现get和return。LocalPool有一个概念是FreeChunk,......
  • couldn't clear tomcat cache java.lang.NoSuchFieldException: resourceEntries
    2015-09-2500:17:11,435WARN[dqapp24http-nio-8002-exec-22]com.opensymphony.xwork2.util.LocalizedTextUtilcouldn'tcleartomcatcachejava.lang.NoSuchFieldException:resourceEntriesatjava.lang.Class.getDeclaredField(Class.java:2062)~[na:1.8......