Java 为什么@SpringBootApplication类中声明的bean即使不是原型类也要注册?
我在我的项目中有这个主要的类Java 为什么@SpringBootApplication类中声明的bean即使不是原型类也要注册?,java,spring,spring-boot,Java,Spring,Spring Boot,我在我的项目中有这个主要的类 @SpringBootApplication @EnableOAuth2Sso public class App { public static void main(String[] args) throws Exception { SpringApplication.run(App.class, args); } @Bean public RequestContextListener requestContext
@SpringBootApplication
@EnableOAuth2Sso
public class App
{
public static void main(String[] args) throws Exception {
SpringApplication.run(App.class, args);
}
@Bean public RequestContextListener requestContextListener(){
return new RequestContextListener();
}
}
据我所知,如果我没有错的话,component scan会扫描原型类中的bean,这些类是@component、@Service、@Repository、@Controller
中的一个
来自spring文档
默认情况下,用@Component、@Repository、@Service、,
@控制器,或使用
@组件是唯一检测到的候选组件
我无法理解这个类中的bean是如何注册的。由于它不是一个原型类,并且没有注释是用@Component
注释的,所以首先不应该扫描它,但是这段代码工作得很好。事实上,对于我的用例,在这个类中使用bean是解决问题的唯一方法,但这是另一回事。谁能解释一下吗。谢谢 是一个元注释,看起来像:
// Some details omitted
@SpringBootConfiguration
@EnableAutoConfiguration
public @interface SpringBootApplication { ... }
也是一个元注释:
// Other annotations
@Configuration
public @interface SpringBootConfiguration { ... }
是:
其工作原理如下:
默认情况下,用@Component、@Repository、@Service、,
@控制器,或使用
@组件是唯一检测到的候选组件。
是一个元注释,看起来像:
// Some details omitted
@SpringBootConfiguration
@EnableAutoConfiguration
public @interface SpringBootApplication { ... }
也是一个元注释:
// Other annotations
@Configuration
public @interface SpringBootConfiguration { ... }
是:
其工作原理如下:
默认情况下,用@Component、@Repository、@Service、,
@控制器,或使用
@组件是唯一检测到的候选组件。
这是因为
@SpringBootApplication
还充当@配置
注释
@Configuration
用于创建xml spring配置文件中的定义bean
您可以有一个bean配置类
@Configuration
class MyConfiguration{
@bean MyBean myBean(){...};
}
o您可以拥有一个Spring配置文件
<beans>
<bean id="myBean" class="MyBean" />
</beans>
在您的例子中,当您使用@SpringBootApplication
你可以在这里看到更多
这是因为
@springbootplication
还充当@配置
注释
@Configuration
用于创建xml spring配置文件中的定义bean
您可以有一个bean配置类
@Configuration
class MyConfiguration{
@bean MyBean myBean(){...};
}
o您可以拥有一个Spring配置文件
<beans>
<bean id="myBean" class="MyBean" />
</beans>
在您的例子中,当您使用@SpringBootApplication
你可以在这里看到更多
谢谢你的回答,我不敢相信@Component在那里,我检查了所有的注释,不明白我怎么会错过它。还是谢谢你的帮助!谢谢你的回答,我不敢相信@Component在那里,我检查了所有的注释,不明白我怎么会错过它。还是谢谢你的帮助!谢谢你的帮助,是的,尽管我看了所有的注释,但我还是错过了元注释。谢谢你的回答,我已经投票了,但是已经接受了第一个。谢谢你的帮助,是的,尽管我看了所有的注释,但我还是错过了元注释。谢谢你的回答,我投了更高的票,但已经接受了第一个。