@autowired和@Resource

简介: 前言关于注解和xml配置的官方回答Are annotations better than XML for configuring Spring?The introduction of annotation-based configurations raised the question of whether this approach is 'better'

前言

关于注解和xml配置的官方回答

Are annotations better than XML for configuring Spring?

The introduction of annotation-based configurations raised the question of whether 
this approach is 'better' than XML. The short answer is it depends. The long 
answer is that each approach has its pros and cons, and usually it is up to the 
developer to decide which strategy suits them better. Due to the way they are 
defined, annotations provide a lot of context in their declaration, 
leading to shorter and more concise configuration. However, XML excels at 
wiring up components without touching their source code or recompiling them. 
Some developers prefer having the wiring close to the source while others 
argue that annotated classes are no longer POJOs and, furthermore, 
that the configuration becomes decentralized and harder to control.

No matter the choice, Spring can accommodate both styles and even mix them 
together. It’s worth pointing out that through its JavaConfig option, Spring 
allows annotations to be used in a non-invasive way, without touching the 
target components source code and that in terms of tooling, all configuration 
styles are supported by the Spring Tool Suite.

两种注解的说明

@autowired

简介

autowired是spring官方提供的一种装配方式。

使用方法

1.使用在方法上:

public class SimpleMovieLister {

    private MovieFinder movieFinder;

    @Autowired
    public void setMovieFinder(MovieFinder movieFinder) {
        this.movieFinder = movieFinder;
    }

    // ...

}

2.使用在字段上

  @Autowired
    private MovieCatalog movieCatalog;

说明

autowired主要是用bytype的方式注入。

@Resource

简介

@resource是java自带的一种装配方式。

使用方法

与@autowired相似
1.指定name属性

 @Resource(name="myMovieFinder")
    public void setMovieFinder(MovieFinder movieFinder) {
        this.movieFinder = movieFinder;
    }

2.默认[使用默认提供名称]

 @Resource
    public void setMovieFinder(MovieFinder movieFinder) {
        this.movieFinder = movieFinder;
    }

说明

@Resource默认按名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行名称查找。

总结

两种方式的功能大致相同,默认推荐使用@Resource方式,这是j2ee生的方式。能降低和spring的耦合度。

更多具体详情请参见官方:http://spring.io

目录
相关文章
|
6月前
|
Java Spring 容器
@Resource 这个注解什么用啊
@Resource 这个注解什么用啊
233 0
|
1月前
|
Java Spring 容器
@Resource 和 @Autowired 介绍 为什么使用 @Autowired 会报错,改成@Resource 就对了
本文介绍了`@Autowired`和`@Resource`两种依赖注入注解的区别及使用场景,并解释了为什么在某些情况下使用`@Autowired`会导致错误,而改成`@Resource`则可以解决问题。
123 0
|
2月前
|
Java Spring 容器
@Autowired和@Resource
@Autowired和@Resource
|
6月前
|
Java Spring 容器
@Resource 和 @Autowired区别是什么?
@Resource 和 @Autowired区别是什么?
|
6月前
|
Java Spring
spring注解@Autowired、@Resource说明
spring注解@Autowired、@Resource说明
|
Java 编译器 Spring
Spring框架@Autowired和@Resource到底有什么区别
Spring框架@Autowired和@Resource到底有什么区别
517 0
|
Java 测试技术 开发者
Spring探索丨既生@Resource,何生@Autowired?
读了本文你将会了解到:1、@Resource和@Autowired来源;2、Spring官方为什么会支持这两个功能如此相似的注解?3、为什么@Autowired属性注入的时候Idea会曝出黄色的警告?4、@Resource和@Autowired推荐用法
525 5
Spring探索丨既生@Resource,何生@Autowired?
|
Java 测试技术 开发者
Spring探索:既生@Resource,何生@Autowired?
提到Spring依赖注入,大家最先想到应该是@Resource和@Autowired,很多文章只是讲解了功能上的区别,对于Spring为什么要支持两个这么类似的注解却未提到,属于知其然而不知其所以然。不知大家在使用这两个注解的时候有没有想过,@Resource又支持名字又支持类型,还要@Autowired干嘛,难道是Spring官方没事做了?
13734 3
Spring探索:既生@Resource,何生@Autowired?
|
开发框架 Java Spring
@Autowired与@Resource有何区别?
@Autowired与@Resource有何区别?
93 0
|
开发框架 Java Spring
spring注解:@Autowired 和@Resource
spring注解:@Autowired 和@Resource
307 0