【Spring】Bean管理

news/2024/9/30 15:27:51

获取Bean

要从IOC容器当中来获取到bean对象,需要先拿到IOC容器对象

 @Autowiredprivate ApplicationContext applicationContext; //IOC容器对象

Spring容器中提供了一些方法,可以主动从IOC容器中获取到bean对象,下面介绍3种常用方式:

  1. 根据name获取bean

    Object getBean(String name)
    
  2. 根据类型获取bean

    <T> T getBean(Class<T> requiredType)
    
  3. 根据name获取bean(带类型转换)

    <T> T getBean(String name, Class<T> requiredType)
    

示例代码

@SpringBootTest
class SpringbootWebConfig2ApplicationTests {@Autowiredprivate ApplicationContext applicationContext; //IOC容器对象//获取bean对象@Testpublic void testGetBean(){//根据bean的名称获取DeptController bean1 = (DeptController) applicationContext.getBean("deptController");System.out.println(bean1);//根据bean的类型获取DeptController bean2 = applicationContext.getBean(DeptController.class);System.out.println(bean2);//根据bean的名称 及 类型获取DeptController bean3 = applicationContext.getBean("deptController", DeptController.class);System.out.println(bean3);}
}

Bean作用域

作用域 说明
singleton 容器内同名称的bean只有一个实例(单例)(默认)
prototype 每次使用该bean时会创建新的实例(非单例)
request 每个请求范围内会创建新的实例(web环境中,了解)
session 每个会话范围内会创建新的实例(web环境中,了解)
application 每个应用范围内会创建新的实例(web环境中,了解)

可以借助Spring中的@Scope注解来进行配置作用域

@Bean

第三方提供的类是只读的。无法在第三方类上添加@Component注解或衍生注解。需要用到@Bean注解获取第三方Bean。

在启动类上添加@Bean标识的方法

@SpringBootApplication
public class SpringbootWebConfig2Application {public static void main(String[] args) {SpringApplication.run(SpringbootWebConfig2Application.class, args);}//声明第三方bean@Bean //将当前方法的返回值对象交给IOC容器管理, 成为IOC容器beanpublic SAXReader saxReader(){return new SAXReader();}
}

说明:以上在启动类中声明第三方Bean的作法,不建议使用(项目中要保证启动类的纯粹性)

在配置类中定义@Bean标识的方法

如果需要定义第三方Bean时, 通常会单独定义一个配置类

@Configuration //配置类  (在配置类当中对第三方bean进行集中的配置管理)
public class CommonConfig {//声明第三方bean@Bean //将当前方法的返回值对象交给IOC容器管理, 成为IOC容器bean//通过@Bean注解的name/value属性指定bean名称, 如果未指定, 默认是方法名public SAXReader reader(DeptService deptService){System.out.println(deptService);return new SAXReader();}}

在方法上加上一个@Bean注解,Spring 容器在启动的时候,它会自动的调用这个方法,并将方法的返回值声明为Spring容器当中的Bean对象。

注意事项 :

  • 通过@Bean注解的name或value属性可以声明bean的名称,如果不指定,默认bean的名称就是方法名。

  • 如果第三方bean需要依赖其它bean对象,直接在bean定义方法中设置形参即可,容器会根据类型自动装配。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/45199.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

记录--createObjectURL这个API真好用,我举几个场景你们就懂了

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣 前言 随着我用 URL.createObjectURL 这个 API 越来越多次,越发感觉真的是一个很好用的方法,列举一下我在项目中用到它的场景吧~图片预览 以前我们想要预览图片,只能是上传图片到后端后,获取到url然后赋予给img标签,…

linux 部署jar包

1.准备工作 linux如果没有配置java环境变量的话,具体操作见文末推荐。 2.启动jar包 linux操作系统下启动jar包的方式和windows操作系统没有区别。 用法都是遵循java语法规范。 前提:跳转到要启动的jar包所在目录。cd jar包所在绝对路径使用默认jdk启动 查看当前jdk版本 java …

机器学习--有监督学习--分类算法(KNN算法)

使用场景:做分类的,比如银行想做客户分类,看看新的这个客户,他是高风险用户还是低风险用户。 原理使用:可以用贝叶斯分类,决策树算法,还有KNN,本篇主要整理KNN。 KNN原理:有N个样本点,对新纪录r,使用KNN进行分类,看它属于哪个分类。具体如下: 1、先确定k值,不建议…

Dbeaver执行外部SQL脚本文件创建数据库、建表导入数据等

Dbeaver执行外部SQL脚本文件创建数据库、建表导入数据等点击项目浏览器右键点击选中,然后选择sql文件右键点击连接地址,选中【工具】,选中【创建新任务】填写信息,选中【执行SQL脚本】,然后【下一步】选中脚本文件点击确定选中数据库的连接地址,如果自动关联就无需修改至…

绿色免费离线版JS加密混淆工具 - 支持全景VR加密, 小程序js加密, H5网站加密

自从我们推出在线版的免费JS加密混淆工具以来,受到了广大用户的热烈欢迎。特别是全景开发人员,他们使用该工具加密VR插件的JS代码, 添加域名锁等,都非常有效地保护了插件的代码资源。 最近,我们收到了许多用户的反馈,大家希望能够提供一款桌面版的JS加密混淆工具,以便在离…

nginx四层+七层分享代理实现与tomcat多实例动静分离

实验架构图如下,最终实现负载均衡和动静分离:一、Tomcat 多实例 1.配置思路 1)修改 tomcat 主配置文件 server.xml 中的三个端口号 8080 8005 8009;2)修改 tomcat 启动停止脚本 startup.sh shutdown.sh,添加 export CATALINA BASE CATALINA HONE TOWCAT HOME 变量都指向实…

C# 模式匹配

C# 模式匹配https://www.geeksforgeeks.org/pattern-matching-in-c-sharp/ https://www.codeproject.com/Articles/5368148/Your-Quick-Guide-to-Pattern-Matching-in-Csharp什是模式匹配 模式匹配是一种在代码中识别和提取数据的机制。它允许您以声明式的方式检查对象的形状,而…