背景:同样的bean类型有2个。
尝试用autowired+componet或者resource+component来解决。
1、component指定名称示例,id为maizims:
package hello; import org.springframework.stereotype.Component; @Component("maizims") public class MessageServiceImpl implements MessageService { public String getMessage(String str) { return "麦子金服欢迎"+str; } }
可以观察到,直接在component后面的括号里面加上一个字符串即可。字符串的名字就是beanId。
2、autowired。
可以放在成员变量上面,也可以放在构造方法上。
如果有多个bean,需要结合@qualifier使用。
使用方法也简单,直接在qualifier后面的括号里面加个字符串,代表引用的bean的Id
package germmy.groovy import hello.MessageService import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired import org.springframework.beans.factory.annotation.Qualifier; class Simple implements ScriptService { @Autowired @Qualifier("maizims") private MessageService messageService public void run() { String name = messageService.getMessage("16楼MM"); System.out.println(name); } }
3、利用resource。
举例:
package germmy.groovy import hello.MessageService import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired import org.springframework.beans.factory.annotation.Qualifier; class Simple implements ScriptService { @Resource(name="maizims") private MessageService messageService public void run() { String name = messageService.getMessage("16楼MM"); System.out.println(name); } }
总结,既然是用到id来识别的,比如maizims。这个就相当于xml文件中的beanId。
resource用法举例:http://stackoverflow.com/questions/4462466/autowiring-two-different-beans-of-same-class
autowired和qualifier举例:http://stackoverflow.com/questions/15516769/spring-autowire-two-beans-of-the-same-class-which-are-not-defined-in-applicatio
配置文件外挂的用法:http://stackoverflow.com/questions/23555149/spring-3-mvc-using-component-value-to-read-properties-from-a-file-is-not-wor
component扫描多个包的写法,很简单,再加一个就行:https://segmentfault.com/q/1010000000686297
http://www.mkyong.com/spring/spring-autowiring-qualifier-example/ qualifier举例。
相关推荐
在Spring框架中,`@Resource`和`@Component`是两个重要的注解,它们用于不同的目的,但都与依赖注入(Dependency Injection,简称DI)息息相关。理解这两个注解的使用和区别是掌握Spring框架核心概念的关键。 首先...
`@Component`注解结合`@Autowired`(另一种依赖注入的方式)或`@Resource`,使得我们可以编写更加简洁、松耦合的代码。 `@Autowired`和`@Resource`虽然都能实现依赖注入,但它们之间存在一些差异。`@Autowired`默认...
Spring 依赖注入:@Autowired,@Resource 和@Inject 区别与实现原理 Spring 依赖注入是指在应用程序中将对象之间的依赖关系自动装配的过程。Spring 框架提供了多种依赖注入方式,包括 @Autowired、@Resource 和@...
另一种方法是在Mapper类上同时添加Spring的注解,比如@Repository或@Component。这样做的好处是IDEA可以更好地识别这些类属于Spring管理的Bean,从而减少报错的可能性。 ##### 解决方案3:允许注入对象为NULL 如果...
8. **`@Autowired`的替代品**:Spring还提供了一些其他的注解,如`@Resource`(基于名称的注入)和`@Value`(用于注入基本类型或属性值)作为`@Autowired`的补充。 结合前一篇文章中的注解笔记,我们可以推断出上一...
除了`@Autowired`,Spring框架还提供了其他的依赖注入注解,如`@Resource`(主要用于JSR-250规范,基于名称的注入)和`@Inject`(JSR-330规范,基于类型和名称的注入)。这些注解在不同的场景下有不同的优势,开发者...
在实例化bean时,它会根据`@Resource`、`@Autowired`等注解进行依赖注入。 综上所述,`@resource所需包`应该包含了Spring运行所需的库文件,如Spring核心库、AOP库、容器相关库等,以便正确地理解和使用`@Resource`...
- @Autowired与@Resource:虽然两者都可以用来自动装配,但@Autowired默认按类型匹配,而@Resource默认按名字匹配。 总结,Spring的@Autowired自动装配机制极大地简化了bean之间的依赖管理,提高了代码的可维护性。...
@Component public class SpringContextUtil implements ApplicationContextAware { private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext ...
与`@Autowired`注解不同,`@Resource`默认是按照名称来匹配依赖的,而`@Autowired`则是基于类型匹配的。 接下来,我们详细讲解`bean-resource`的使用步骤: 1. **定义Bean**:在XML配置文件中,通过`<bean>`标签...
本教程将深入探讨`@Resource`和`@Component`这两个核心注解的用法,以及它们在Spring MVC中的应用。 ### 1. `@Component`注解 `@Component`是Spring框架的核心注解,用于标记一个Java类为Spring管理的bean。当...
@Resource 注解的作用相当于 @Autowired,唯一的区别是 @Resource 默认按照名称匹配的方式(byName)进行注入。@Resource 有两个属性,name 和 type,分别用于指定 Bean 的名称和类型。 二、类的注册 在 Spring 3....
除了@Service和@Resource,Spring还提供了一些其他常见的注解,包括@Controller(用于控制器,如Struts中的action)、@Repository(用于DAO层组件,数据访问组件)和@Component(通用注解,当组件类别不确定时使用)...
@Autowired 的工作原理是,在启动 Spring IoC 时,容器自动装载了一个 AutowiredAnnotationBeanPostProcessor 后置处理器,当容器扫描到 @Autowired、@Resource 或 @Inject 时,就会在 IoC 容器自动查找需要的 bean...
`@Resource`注解与`@Autowired`类似,但它是JSR-250规范的一部分,其默认按名称进行装配。如果Bean有名字,可以用`@Resource`注解: ```java @Component public class MyClass { @Resource(name = "myBean") ...
`@Autowired`、`@Qualifier`、`@Resource`和`@Component`等注解,都是Spring框架中不可或缺的一部分,它们共同构成了Spring框架强大的功能基础。理解并熟练掌握这些注解的使用,对于提升开发效率和代码质量具有重要...
本部分主要关注以下五个关键注解:`@Component`、`@Value`、`@Resource`、`@Autowired`以及生命周期方法注解`@PostConstruct`和`@PreDestroy`。 1. **`@Component`**:这个注解是Spring中的基础组件注解,用于标记...
Spring 框架提供了多种类型的注解,例如 @Autowired、@Resource、@Component 等。 1. 使用 Spring 注解来注入属性 在使用 Spring 框架之前,我们通常使用 setter 方法来注入属性,例如: Java 代码 ```java ...
`@Autowired`、`@Qualifier`、`@Value`、`@Configuration`、`@Component`和`@Resource`等注解协同工作,构建了一个灵活且强大的依赖注入系统。通过理解并熟练运用这些注解,开发者可以更高效地开发和管理Spring应用...