@Resource vs xml中的Property参数

时间:2016-04-11 18:29:35

标签: java spring spring-annotations

我最近开始使用Spring框架。我很困惑何时在xml文件中使用@Resource vs Property参数(传统方式)。设计新注释时考虑的特殊实际用例是什么?您是否建议完全转向使用Spring Annotations?

2 个答案:

答案 0 :(得分:1)

很多帖子已经很好地解释了@Resource@Autowired之间的区别,您也可以从我的blog找到。

基本上他们在注射之前指定了搜索bean的不同方法 默认情况下,@Autowired将按名称按类型汇编,而@Resource默认按名称汇编,然后键入。它们也属于不同的罐子。

关于Property argument in xml file,这是指定bean中字段值的方式。假设您要创建一个名为SamplePerson的bean,它是Person类的对象,您需要在xml中执行的操作是告诉Spring该对象中字段的值是什么,就像:

Person samplePerson = new Person();
samplePerson.setAge(23);
samplePerson.setName("Rugal");

在创建这样的bean之后,Spring上下文会将此对象放在其容器中以供以后使用。现在,您可以使用@Autowired@Resource将此samplePerson bean注入需要的位置

@Autowired
private Person samplePerson;

然后你会注意到这个person对象的属性对应于你的xml定义。

但实际上在XML下编码是很乏味的,我宁愿用Java风格进行所有配置,尽管有人可能认为它不够动态。
是的,您可以完全切换从XML配置到Java配置的所有内容。你可以从github得到我的样本 如果您是Spring的新手,我会鼓励您使用我的archetype。您将获得完全集成的代码库。

答案 1 :(得分:0)

@Autowired是特定于Spring的,而@Resource是JSR,但是当前的Spring支持它们。我将使用JSR,因为它也可以在没有Spring框架的情况下工作,因此如果您决定使用其他东西,那么更少的更改)。 关于注释与XML,请参阅此问题Spring annotation-based DI vs xml configuration?

这取决于用例。对我来说,注释更容易,因为它们允许将所有内容直接保存在java代码中,因此它只是自我记录。但有时您可能希望使用XML(例如,如果您想在不修改代码本身的情况下更改配置,则可以在不同的xml位置之间轻松切换)