上文系统的介绍了spring自动装配@Autowired注解的使用,没有查看的可以点击查看,@Autowired注解大家使用过,那今天的两个自动注入可能就不是每个同学都有使用过,不信你看
今天将从以下几方面来学习一下@Resource和@Inject注解:
-
@Resource注解的使用演示
-
@Inject注解的使用演示
-
@Resource和@Inject注解与@Autowired注解的区别
1,@Resource注解的使用演示
把上文中的例子注入修改如下:
// @Qualifier(value="userDao")
// @Autowired(required=false)
@Resource
private UserDao userDao2;
运行测试类结果如下:
实例bean为 === UserService [userDao=UserDao [version=2]]
让我们@Resource注解中加上一个name参数如下:
@Resource(name="userDao")
继续运行测试结果如下:
实例bean为 === UserService [userDao=UserDao [version=0]]
从运行结果我们可以发现:
-
@Resource注解默认根据参数名字寻找bean注入
-
@Resource也可以通过name参数指定需要注入的bean
-
@Resource注解不支持spring的@Primary注解优先注入
2,@Inject注解的使用演示
在演示@Inject注解前需要先在pom文件中增加如下依赖:
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
UserService类UserDao注入修改为如下:
@Inject
private UserDao userDao;
对应的主配置文件如下:
@Primary
@Bean(value = "userDao2")
public UserDao getUserDao(){
UserDao userDao = new UserDao();
userDao.setVersion(2);
return userDao;
}
运行测试类结果如下:
实例bean为 === UserService [userDao=UserDao [version=2]]
UserService类注入代码修改如下:
@Named("userDao")
private UserDao userDao;
运行测试类结果如下:
实例bean为 === UserService [userDao=UserDao [version=0]]
从以上运行结果我们可以得出:
-
@Inject注解默认是根据参数名去寻找bean注入
-
@Inject注解支持spring的@Primary注解优先注入
-
@Inject注解可以增加@Named注解指定注入的bean
3,@Resource和@Inject注解与@Autowired注解的区别
不同点
-
@Autowired是spring专有注解,@Resource是java中JSR250中的规范,@Inject是java中JSR330中的规范
-
@Autowired支持参数required=false,@Resource,@Inject都不支持
-
@Autowired,和@Inject支持@Primary注解优先注入,@Resource不支持
-
@Autowired通过@Qualifier指定注入特定bean,@Resource可以通过参数name指定注入bean,@Inject需要@Named注解指定注入bean
相同点
三种注解都可以实现bean的注入
以上是今天文章的所有内容,欢迎大家吐槽
推荐阅读
深入理解spring生命周期与BeanPostProcessor的实现原理
更多优质文章请关注以下公众号查阅:
相关推荐
Spring 依赖注入:@Autowired,@Resource 和@Inject 区别与实现原理 Spring 依赖注入是指在应用程序中将对象之间的依赖关系自动装配的过程。Spring 框架提供了多种依赖注入方式,包括 @Autowired、@Resource 和@...
为了更深入地学习Spring 3.0的注解注入,你可以阅读提供的文档`Spring 3注解注入.docx`,它应该包含了详细的示例和解释,帮助你更好地理解和掌握这一重要特性。通过熟练运用注解注入,可以显著提升代码的可读性和可...
2. 注解注入:在需要注入依赖的类中,使用`@Autowired`、`@Qualifier`、`@Resource`或`@Inject`等注解标记字段或方法。 3. 配置扫描:在Spring配置文件中,使用`<context:component-scan>`标签指定需要扫描的包,使...
Spring提供了多种注解来实现依赖注入,包括@Autowired、@Inject和@Resource。它们各有特点,下面将详细解释它们之间的区别。 首先,@Autowired是Spring框架自身提供的注解,主要用于类型匹配的自动装配。它具有一个...
其中,`@Autowired`是用于自动装配依赖的注解,Spring会根据类型或名称自动匹配并注入合适的bean。`@Qualifier`注解则用来指定注入哪个特定的bean,当有多个相同类型的bean时非常有用。此外,`@Resource`注解也是...
@Autowired 的工作原理是,在启动 Spring IoC 时,容器自动装载了一个 AutowiredAnnotationBeanPostProcessor 后置处理器,当容器扫描到 @Autowired、@Resource 或 @Inject 时,就会在 IoC 容器自动查找需要的 bean...
在Spring框架中,自动装配...理解并熟练掌握自动装配的原理和注解,能够更好地利用Spring框架的优势,构建更加灵活和可维护的Java应用。在实际使用中,应根据项目需求和bean的关系选择合适的装配策略,以达到最佳效果。
除了`@Autowired`,Spring框架还提供了其他的依赖注入注解,如`@Resource`(主要用于JSR-250规范,基于名称的注入)和`@Inject`(JSR-330规范,基于类型和名称的注入)。这些注解在不同的场景下有不同的优势,开发者...
Java EE 5.0中实现依赖注入的方式主要有两种:JSR-250规范的`@Resource`注解和JSR-330规范的`@Inject`注解。`@Resource`注解主要用于资源注入,如数据库连接池、JMS队列等,而`@Inject`注解则用于一般的依赖注入。 ...
Spring 提供了多种依赖注入方式,例如 `@Autowired`、`@Inject` 和 `@Resource`。 * `@Autowired`:由 Spring 提供,用于依赖注入。 * `@Inject`:由 JSR-330 提供,用于依赖注入。 * `@Resource`:由 JSR-250 提供...
在Spring中,我们可以使用注解如`@Inject`、`@Resource`、`@Autowired`以及构造函数、setter方法、field级别的注解来实现依赖注入。例如: ```java @Component public class UserRepository { private ...
4. **资源注入**:可以使用`@Resource`注解来注入Android资源,例如`@Resource(R.string.app_name)`将注入应用名称的字符串资源。 **使用示例** ```java public class MainActivity extends RoboActivity { @...
在EJB 3.0中,`@Resource`注解用于标记一个字段或方法,以便在运行时由容器自动注入所需的依赖。例如,对于数据源的注入,可以直接在字段上添加`@Resource`注解,指定`jndiName`为数据源的JNDI名称。这使得代码更加...
* @Resource:JSR-250 提供的注解,用于资源注入 * @Inject:JSR-330 提供的注解,用于依赖注入 三、切面编程 * @Aspect:声明一个切面(就是说这是一个额外功能) * @After:后置建言(advice),在原方法前执行 ...
@Inject注解允许开发人员声明依赖注入,而无需指定注入的来源,这在某些情况下比@Resource更灵活。 6. @NotNull:这个注解通常用于参数验证,表明该参数不能为null。在Java EE 6及以上版本中,这个注解可以配合Bean...
总结来说,Roboguice通过注解和注入器实现了Android应用中的依赖注入,简化了对象的创建和管理,提高了代码的可读性和可测试性。使用Roboguice,开发者可以专注于业务逻辑,而无需担心繁琐的依赖关系处理。
`@Resource`注解主要用于注入JSR-250资源,如JNDI绑定的对象,也可以用于注入Bean,但默认按名称装配。 三、使用注解装配的注意事项 - 当多个Bean符合`@Autowired`的条件时,可以使用`@Qualifier`指定具体的Bean...
- `@Inject`和`@Named`是JSR330规范的注解,功能与`@Autowired`和`@Qualifier`相似,跨框架兼容性更强。 - `@Resource`是JSR250规范的注解,通常用于注入JSR250标准的资源,它的行为与`@Autowired`类似,但默认按...
Spring从2.5版本开始引入了大量的注解,使得Bean定义和依赖注入可以通过注解轻松实现,提高了开发效率和代码的可读性。 1. **注解配置的优势** - **简洁性**:注解可以直接嵌入到类或方法中,避免了XML配置文件的...