我遇到了Spring 3提供的两个注释(@Component和@Configuration),我对它们有点困惑。
这是我读到的关于@Component
的内容
将这个“context:component”放在bean配置文件中,这意味着在Spring中启用自动扫描特性。基础包指明了你的组件存储在哪里,Spring将扫描这个文件夹,找到bean(用@Component注释)并在Spring容器中注册它。
所以我想知道<code>@Configuration</code>的用途是什么,那么如果<code>@Controller</code>将注册我的bean,而无需在spring配置XML文件中声明它们。
@Configuration
是Spring 3中引入的基于Java的配置机制的核心。它提供了基于XML的配置的替代方案。
因此,以下两个片段是相同的:
<beans ...>
<context:component-scan base-package="my.base.package"/>
... other configuration ...
</beans>
和:
@Configuration
@ComponentScan(basePackages = "my.base.package")
public class RootConfig {
... other configuration ...
}
在这两种情况下,Spring都会在< code>my.base.package及以下版本中扫描用< code>@Component注释的类,或者用< code>@Component元注释的其他注释之一,例如< code>@Service。
以下是与完整示例的区别:-
//@Configuration or @Component
public static class Config {
@Bean
public A a() {
return new A();
}
//**please see a() method called inside b() method**
@Bean
public B b() {
return new B(a());
}
}
1)这里如果Config类用@配置注释,而不是a()方法和b()方法,两者都将被调用一次。
2)这里如果Config类用@part注释,则b()方法将被调用一次,但a()方法将被调用两次。
(2)中的问题:-因为我们已经注意到了@component注释的问题。第二个配置(2)是完全不正确的,因为spring将创建A的一个singleton bean,但是B将获得A的另一个实例,这个实例不受spring上下文控制。
解决方案:-我们可以在Config类中使用@autowired annotation和@component annotation。
@Component
public static class Config {
@Autowired
A a;
@Bean
public A a() {
return new A();
}
@Bean
public B b() {
return new B(a);
}
}
从书专业版Spring集成
@Configuration
类就像常规@Components
类一样,只是用@Bean
注释的方法用于工厂化 bean。请注意,具有@Bean
带注释的方法的@Component
的工作方式相同,只是不考虑作用域,并重新调用@Bean
方法(没有缓存),因此首选@Configuration
,即使它需要CGLIB
问题内容: 我遇到了Spring 3提供的两个注释(@Component和@Configuration),我对它们之间有些困惑。 这是我读到的有关@Component的内容 将此“ context:component”放入bean配置文件中,这意味着在Spring中启用自动扫描功能。基本包指示组件的存储位置,Spring将扫描此文件夹并找出Bean(用@Component注释)并将其注册在Spri
使用和使用有什么区别吗?如果没有,是否有一种首选的方法?
本文向大家介绍Spring @Configuration和@Component的区别,包括了Spring @Configuration和@Component的区别的使用技巧和注意事项,需要的朋友参考一下 Spring @Configuration 和 @Component 区别 一句话概括就是 @Configuration 中所有带 @Bean 注解的方法都会被动态代理,因此调用该方法返回的都是同
问题内容: 很快就有两个相等运算符:double equals( )和Triple equals( ),两者之间有什么区别? 问题答案: 简而言之: 操作员检查其实例值是否相等, 操作员检查引用是否指向同一实例, 长答案: 类是引用类型,可能有多个常量和变量在幕后引用类的同一单个实例。类引用保留在运行时堆栈(RTS)中,其实例保留在内存的堆区域中。当您控制平等时, 这意味着它们的实例是否彼此相等。
我来自Java背景,刚接触Scala。 我正在使用Scala和Spark。但是我不明白我在哪里使用和。 有人能告诉我在哪种情况下我需要使用这两个操作符吗?和之间有什么区别吗?
我编写了一个简单的脚本,它接受任意数量的参数来演示< code>$@和< code>$*之间的区别: 在我做的 CLI 上 这就是打印出来的 因为它们是相同的,这是否意味着等于?还是我遗漏了一点?