@Autowired默认注入问题?
ioc容器存在“同一类型”通过@Bean生成的对象和@Component注解扫描的对象,使用@Autowired注解导入ioc容器中该类型对象,问题是得到的对象是通过那个...
ioc容器存在“同一类型”通过@Bean生成的对象和@Component注解扫描的对象,使用@Autowired注解导入ioc容器中该类型对象,问题是得到的对象是通过那个注解生成的?跟两个注解的优先级相关吗?还是其他什么原因?
展开
4个回答
展开全部
你好,很高兴回答你的问题。如果Spring管理了两个同类型的对象。通过@Autowired来注入的话会报错。因为Spring不知道要选哪个。
可以在要选的那个对象注解处同时加注解@Primary。这样@Autowired处就会注入用@Primary注解的对象。
如果有帮助到你,请点击采纳。
可以在要选的那个对象注解处同时加注解@Primary。这样@Autowired处就会注入用@Primary注解的对象。
如果有帮助到你,请点击采纳。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有优先级说法
@Component
This is a generic annotation and can be applied to any class of the application to make it a spring managed component(simply, generic stereotype for any spring managed component). when the classpath is scanned by the spring’s component-scan (@ComponentScan) feature, it will identify the classes annotated with @Component annotation (within the given package) and create the beans of such classes and register them in the ApplicationContext. @Component is a class level annotation and its purpose it to make the class as spring managed component and auto detectable bean for classpath scanning feature.
if you want to know more about @Component and other stereo type annotations, it is recommended to look at this article.
@Bean
@Bean is used to explicitly declare and register a bean (as a configuration bean) in Spring IOC container that is returned from a method. @Bean is a method level annotation and it is used within a class that is annotated with @Configuration. Simply, @Bean annotation is used to register the bean returned by a method as a spring configuration bean in IOC Container. @Bean is only a method level annotation and it cannot be used with classes and object declaration.
@Bean annotation indicates that a method produces a bean that should be managed by the Spring container.
To declare a bean, simply annotate a method with the @Bean annotation. When JavaConfig encounters such a method, it will execute that method and register the return value as a bean within a ApplicationContext. By default, the bean name will be the same as the method name.The following is a simple example of a @Bean method declaration.
@Configurationpublic class ApplicationConfig { @Bean
public User adminUserProfile()
{
return new User("Chathuranga","Tennakoon");
}
}
In the ApplicationConfig class, you can see that we first use the @Configuration annotation to inform Spring that this is a Java-based configuration file. Afterward, the @Bean annotation is used to declare a Spring bean and the DI requirements.
The @Bean annotation is equivalent to the <bean> tag, the method name is equivalent to the id attribute within the <bean> tag.
I hope that after reading this article, you have got a clear idea about the real purpose and use of @Bean and @Component annotations.
@Component
This is a generic annotation and can be applied to any class of the application to make it a spring managed component(simply, generic stereotype for any spring managed component). when the classpath is scanned by the spring’s component-scan (@ComponentScan) feature, it will identify the classes annotated with @Component annotation (within the given package) and create the beans of such classes and register them in the ApplicationContext. @Component is a class level annotation and its purpose it to make the class as spring managed component and auto detectable bean for classpath scanning feature.
if you want to know more about @Component and other stereo type annotations, it is recommended to look at this article.
@Bean
@Bean is used to explicitly declare and register a bean (as a configuration bean) in Spring IOC container that is returned from a method. @Bean is a method level annotation and it is used within a class that is annotated with @Configuration. Simply, @Bean annotation is used to register the bean returned by a method as a spring configuration bean in IOC Container. @Bean is only a method level annotation and it cannot be used with classes and object declaration.
@Bean annotation indicates that a method produces a bean that should be managed by the Spring container.
To declare a bean, simply annotate a method with the @Bean annotation. When JavaConfig encounters such a method, it will execute that method and register the return value as a bean within a ApplicationContext. By default, the bean name will be the same as the method name.The following is a simple example of a @Bean method declaration.
@Configurationpublic class ApplicationConfig { @Bean
public User adminUserProfile()
{
return new User("Chathuranga","Tennakoon");
}
}
In the ApplicationConfig class, you can see that we first use the @Configuration annotation to inform Spring that this is a Java-based configuration file. Afterward, the @Bean annotation is used to declare a Spring bean and the DI requirements.
The @Bean annotation is equivalent to the <bean> tag, the method name is equivalent to the id attribute within the <bean> tag.
I hope that after reading this article, you have got a clear idea about the real purpose and use of @Bean and @Component annotations.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
搞不懂这个问题有何意义?同一类型还要分别用两个不同的注解来注入容器?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询