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

 更新时间:2024年01月09日 09:50:07   作者:vegetari  
这篇文章主要介绍了Spring的@Bean和@Autowired组合使用详解,Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理,产生这个Bean对象的方法Spring只会调用一次随后会将这个Bean对象放在自己的IOC容器,需要的朋友可以参考下

@Bean 基础概念

  • @Bean:Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中;
  • SpringIOC 容器管理一个或者多个bean,这些bean都需要在@Configuration注解下进行创建,在一个方法上使用@Bean注解就表明这个方法需要交给Spring进行管理;
  • @Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。添加的bean的id为方法名;
  • 使用Bean时,即是把已经在xml文件中配置好的Bean拿来用,完成属性、方法的组装;比如@Autowired , @Resource,可以通过byTYPE(@Autowired)、byNAME(@Resource)的方式获取Bean;
  • 注册Bean时,@Component , @Repository , @ Controller , @Service , @Configration这些注解都是把你要实例化的对象转化成一个Bean,放在IoC容器中,等你要用的时候,它会和上面的@Autowired , @Resource配合到一起,把对象、属性、方法完美组装;

@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组合使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java简单实现八叉树图像处理代码示例

    java简单实现八叉树图像处理代码示例

    这篇文章主要介绍了java简单实现八叉树图像处理代码示例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • 一文详解JDK21中虚拟线程

    一文详解JDK21中虚拟线程

    虚拟线程是JDK19中引入的,JDK21正式发布,本文主要介绍了JDK21中虚拟线程,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • Idea插件MybatisX失效的问题解决

    Idea插件MybatisX失效的问题解决

    这篇文章主要介绍了Idea插件MybatisX失效的问题解决,详细的介绍了4种问题的解决方法,具有一定的参考价值,感兴趣的可以了解一下
    2025-05-05
  • java中的4种循环方法示例详情

    java中的4种循环方法示例详情

    大家好,本篇文章主要讲的是java中的4种循环方法示例详情,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • JAVA十大排序算法之堆排序详解

    JAVA十大排序算法之堆排序详解

    这篇文章主要介绍了java中的冒泡排序,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考
    2021-08-08
  • Spring的事务管理之声明式事务详解

    Spring的事务管理之声明式事务详解

    本文介绍了Spring中的事务管理,包括声明式事务管理和和编程式事务管理,重点讲解了声明式事务管理和Spring AOP的关系,及Spring事务拦截器TransactionInterceptor的调用的,最后还释了Spring事务的创建和使用的具体过程,以及解决了一些事务相关问题
    2026-05-05
  • Java设计模式之策略模式_动力节点Java学院整理

    Java设计模式之策略模式_动力节点Java学院整理

    策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换。接下来通过本文给大家分享Java设计模式之策略模式,感兴趣的朋友一起看看吧
    2017-08-08
  • SpringCloud Netflix Ribbon超详细讲解

    SpringCloud Netflix Ribbon超详细讲解

    这篇文章主要介绍了SpringCloud笔记HoxtonNetflix之Ribbon负载均衡,Ribbon是管理HTTP和TCP服务客户端的负载均衡器,Ribbon具有一系列带有名称的客户端(Named Client),对SpringCloud Ribbon负载均衡相关知识感兴趣的朋友一起看看吧
    2022-10-10
  • java实现往hive 的map类型字段写数据

    java实现往hive 的map类型字段写数据

    这篇文章主要介绍了java实现往hive 的map类型字段写数据操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • java通过url下载文件并输出的方法

    java通过url下载文件并输出的方法

    下面小编就为大家分享一篇java通过url下载文件并输出的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01

最新评论