Niu*_*ang 2 java configuration spring annotations spring-boot
我正在学习Spring boot + oauth2 + JWT,在AuthorizationServerConfig.class(或其他一些配置类)中,我注意到在很多例子中,他们使用@Bean注解来装饰一些方法,并将这些方法设置为'public' . 例如:
@Configuration
@EnableAuthorizationServer
@Slf4j
public class AuthorizationServerConfig extends
AuthorizationServerConfigurerAdapter {
....
....
@Bean
public TokenStore tokenStore() {
return new JwtTokenStore(this.accessTokenConverter());
}
....
}
Run Code Online (Sandbox Code Playgroud)
如果我删除 Bean 注释并将方法设为私有,我的应用程序仍然可以工作。所以我的问题是,为什么我们需要 Bean 注释并公开方法?
在 Spring 中,@Bean 注释是一种向 IOC 上下文公开特定对象实例的方法(我认为是最简单的方法)。这意味着您可以使用@Autowired 注释(旧但很好的文档)在任何其他 bean 中“取回”此实例
Spring Boot 是一种“spring 自动配置器”,它将通过提供具有通用设置的应用程序所需的所有 Bean 来自动配置 spring 上下文。Spring Boot 提供了通过 java 类和属性文件自定义环境的能力。在您的情况下,您正在通过一个 java 类(带有一个用@Configuration 注释的类)自定义 spring 上下文,在该类中您使用自己的实例覆盖默认的 spring TokenStore bean,在这种情况下,该实例可能是语义上与提供的实例相同的实例Spring Boot 这就是为什么如果你删除 @Bean 注释或者你将“private”关键字放在应用程序正在工作的方法中,因为相同的 bean 被 spring boot 自动注入到 spring 上下文中(我'
我希望这个小小的(并且非常简化的)解释可以帮助您了解 spring boot 的工作原理:)
| 归档时间: |
|
| 查看次数: |
1458 次 |
| 最近记录: |