java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > @Bean和@Autowired组合使用

Spring的@Bean和@Autowired组合使用详解

作者:vegetari

这篇文章主要介绍了Spring的@Bean和@Autowired组合使用详解,Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理,产生这个Bean对象的方法Spring只会调用一次随后会将这个Bean对象放在自己的IOC容器,需要的朋友可以参考下

@Bean 基础概念

@Autowired 基础概念

@Autowired 可以将spring ioc 中的bean(例如@Bean 注解创建的bean)的实例获取。

举个例子

一,使用@Bean 在某个方法上,产生一个bean 对象

@Configuration
public class TokenConfig {
    /**
     * @Bean 注解是告诉该方法产生一个bean 对象,然后将该对象交给spring管理,产生这个bean 对象的方法spring 只会调用一次。随后spring会将这个bean对象放在自己的ioc容器中。
     */
    @Bean
    public TokenStore tokenStore() {
        //JWT令牌存储方案
        return new JwtTokenStore();
    }
}

二,使用@Autowired注解,将在spring 中的bean 对象获取到TokenStore

@Configuration
@EnableAuthorizationServer
public class AuthorizationServer extends AuthorizationServerConfigurerAdapter {
   
 @Autowired
 private TokenStore tokenStore;
 
 public AuthorizationServerTokenServices tokenService() {
        DefaultTokenServices service=new DefaultTokenServices();
        //客户端详情服务
        service.setClientDetailsService(clientDetailsService);
        //支持刷新令牌
        service.setSupportRefreshToken(true);
        //令牌存储策略
        service.setTokenStore(tokenStore);//这一行的tokenStore
        //令牌增强
        TokenEnhancerChain tokenEnhancerChain = new TokenEnhancerChain();
        tokenEnhancerChain.setTokenEnhancers(Arrays.asList(accessTokenConverter));
        service.setTokenEnhancer(tokenEnhancerChain);
 
        // 令牌默认有效期2小时
        service.setAccessTokenValiditySeconds(7200);
        // 刷新令牌默认有效期3天
        service.setRefreshTokenValiditySeconds(259200);
        return service;
    }
}

service.setTokenStore(tokenStore);//这一行的tokenStore的意思和

service.setTokenStore(new JwtTokenStore); 是一样的。

使用 @Autowired 引入TokenStore 类就可以获取我们使用@Bean对该对象设置的实例了。

注意,不用管TokenStore 是 interface还是class.都可以被@Bean 调用

到此这篇关于Spring的@Bean和@Autowired组合使用详解的文章就介绍到这了,更多相关@Bean和@Autowired组合使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文