java JSP开发之Spring中Bean的使用
发布时间 - 2026-01-11 02:39:53 点击率:次java JSP开发之Spring中Bean的使用

在传统的Java应用中,bean的生命周期很简单。使用Java关键字new进行bean实例化,然后bean就可以被使用了,一旦该bean不再使用,Java就自动进行垃圾回收。然而,在Spring中,bean的生命周期就比较复杂了。下面是一个bean装载到Spring应用上下文的过程:
如图所示:在你准备调用bean之前,bean工厂执行了若干启动步骤:
1.Spring对bean进行实例化;
2.Spring将值和bean的引用注入到bean对应的属性中;
3.如果bean实现了BeanNameAware接口,Spring将bean的ID传递给setBean-Name()方法;
4.如果bean实现了BeanFactoryAware接口,Spring将调用setBeanFactory()方法,将BeanFactory容器实例传入;
5.如果bean实现了ApplicationContextAware接口,Spring将调用setApplicationContext()方法,将bean所在的应用上下文的引用传入进来;
6.如果bean实现了BeanPostProcessor接口,Spring将调用它们的post-ProcessBeforeInitialization()方法;
7.如果bean实现了InitializingBean接口,Spring将调用它们的after-PropertiesSet()方法。类似地,如果bean使用initmethod声明了初始化方法,该方法也会被调用;
8.如果bean实现了BeanPostProcessor接口,Spring将调用它们的post-ProcessAfterInitialization()方法;
9.此时,bean已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,直到该应用上下文被销毁;
10.如果bean实现了DisposableBean接口,Spring将调用它的destroy()接口方法。同样,如果bean使用destroy-method声明了销毁方法,该方法也会被调用。
一,创建可以被发现的Bean
在厨师的眼中,一套好的刀是必不可少的,它能够将平淡的食物素材加工成精致的艺术品。
package cooking;
public interface knife{
void cut();
}
现在,我们创建一个名为knife(刀)的接口,它拥有cut(切)的功能。接下来我们实现这个接口
package cooking
@Component
public class beef implements knife{
private int weight = 2;
private double price = 32.1;
public void cut(){
System.out.println(“This is perfect beef”,+“weight:”+weight
+“kg”+“,”+“It's price is”+price+"$");
}
}
请注意,我们在beef类上使用了@Component注解。这个简单的注解表明 该类是一个组件类,并告诉Spring要为这个类创建bean。
在默认情况下,组件扫描是不启用的,我们需要显示配置一下Spring,命令Spring去寻找带有@Component注解的类,并为其创建bean
package cooking
@Configuration
@ComponentScan
public class knifeConfig{
}
注意到,在knifeConfig类上加上了@ComponentScan注解,该注解能够在Spring中开启组件扫描,如果没有其他配置的话,@ComponentScan默认会扫描与配置类相同的包,去查找带有@Component的注解类,并在Spring中自动为其创建一个bean。如果你更倾向于使用XML来启用组件扫描的话,那么可以使用Spring context命名空间的<context:component-scan>元素。
<context:component-scan base-package="cooking"/> 该标签会开启组件扫描,去cooking包下寻找带有@Component的注解类。
以上就是Spring中Bean的使用方法,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Spring
# Bean
# Spring中Bean的使用方法
# 深入解析Java的Spring框架中bean的依赖注入
# Spring装配Bean之用Java代码安装配置bean详解
# 详解Spring Boot 使用Java代码创建Bean并注册到Spring中
# Java类获取Spring中bean的5种方式
# Java Spring循环依赖原理与bean的生命周期图文案例详解
# 实现了
# 是一个
# 也会
# 为其
# 使用了
# 创建一个
# 上了
# 如有
# 并在
# 希望能
# 注意到
# 很简单
# 如果没有
# 请注意
# 可以使用
# 谢谢大家
# 要为
# 必不可少
# 倾向于
# 你更
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何使用Eloquent进行子查询
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
制作公司内部网站有哪些,内网如何建网站?
如何快速搭建支持数据库操作的智能建站平台?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
Python自动化办公教程_ExcelWordPDF批量处理案例
如何用虚拟主机快速搭建网站?详细步骤解析
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
Laravel怎么在Controller之外的地方验证数据
教你用AI润色文章,让你的文字表达更专业
Android仿QQ列表左滑删除操作
高防服务器:AI智能防御DDoS攻击与数据安全保障
大连 网站制作,大连天途有线官网?
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】
如何在IIS中新建站点并配置端口与物理路径?
Linux网络带宽限制_tc配置实践解析【教程】
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
做企业网站制作流程,企业网站制作基本流程有哪些?
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
高性价比服务器租赁——企业级配置与24小时运维服务
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
如何在阿里云服务器自主搭建网站?
Python文件流缓冲机制_IO性能解析【教程】
QQ浏览器网页版登录入口 个人中心在线进入
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
C语言设计一个闪闪的圣诞树
如何快速生成可下载的建站源码工具?
如何自定义建站之星网站的导航菜单样式?
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
智能起名网站制作软件有哪些,制作logo的软件?
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
晋江文学城电脑版官网 晋江文学城网页版直接进入
海南网站制作公司有哪些,海口网是哪家的?
详解Huffman编码算法之Java实现
Laravel如何实现API版本控制_Laravel版本化API设计方案
PHP正则匹配日期和时间(时间戳转换)的实例代码
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
如何快速查询网站的真实建站时间?
简历在线制作网站免费版,如何创建个人简历?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
微信公众帐号开发教程之图文消息全攻略
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
Laravel怎么为数据库表字段添加索引以优化查询
上一篇:PS打造绚丽太空视觉
下一篇:武汉做网站公司哪家性价比更高?
上一篇:PS打造绚丽太空视觉
下一篇:武汉做网站公司哪家性价比更高?

