最新要闻
- 当前报道:纬德信息(688171)3月1日主力资金净买入105.72万元
- 旅俄大熊猫画风突变体重狂飙40公斤:摸爬滚打样样精通
- 百事通!特斯拉Model 2被曝成本大降37% 比丰田卡罗拉还低
- 世界短讯!打赢了!科比坠机照片泄露案其遗孀获赔2885万美元
- 天天热头条丨惊险一幕:女子用火车站自动扶梯运行李 把下面男子砸骨折
- 【全球速看料】玩游戏需自备爆米花:《最终幻想16》主线过场动画超11小时
- 当前信息:索泰RTX 4090月白深度测试:真孤独求败!A卡没得玩了
- 网友晒视频广州一特斯拉在停车场连撞多车 司机下车就跑:又踩错了吗
- 当前看点!设计时速100公里!上海苏州互通地铁今起试跑:苏州坐地铁直达
- 医院拍CT有位患者叫熊猫 结果竟是真熊猫:网友祝福“国宝”尽快好起来
- 丰田拆完一辆特斯拉Model Y后被震撼了 高管惊叹:我们远远落后
- 全球新动态:火爆全网的AI小姐姐模型重新上线 作者:画什么图后果自负
- 【全球热闻】大厂年薪30万95后女生转行卖快餐:直言脱离公司KPI太快乐了
- 当前观察:《暗黑破坏神4》玩家打怪时 不会出现天量伤害数值
- 世界今热点:通用电梯:目前产能在满足履行轨道交通项目合同需求的同时,不会影响公司履行其他客户订单或新接订单的生产需求
- 环球报道:电脑病毒的介绍与防护_电脑病毒与防护介绍
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
Spring中Bean的加载方式~
【资料图】
1、方式一:基于spring.xml方式配置Bean
user
import lombok.Data;/** * @author : ly */@Datapublic class User { private String name; private Integer age;}
xml
test
/** * @author : ly */@SpringBootTestpublic class GetBeanTest { private ApplicationContext app = new ClassPathXmlApplicationContext("beans.xml"); @Test public void testXML(){ User user1 = app.getBean("user1", User.class); System.out.println("user1 = " + user1); }}
结果
2、方式二:基于properties方式配置Bean
properties
user.(class) = com.ly.domain.Useruser.name = 李四user.age = 20
test
@Testpublic void testProperties(){GenericApplicationContext applicationContext = new GenericApplicationContext();//创建一个PropertiesBeanDefinitionReader,可以从properties读取Bean的信息,将读到的Bean信息放到applicationContext中PropertiesBeanDefinitionReader propReader = new PropertiesBeanDefinitionReader(applicationContext);//创建一个properties文件对应的Resource对象Resource classPathResource = new ClassPathResource("bean1.properties");//加载配置文件propReader.loadBeanDefinitions(classPathResource);applicationContext.refresh();User user = applicationContext.getBean(User.class);System.out.println(user);}
结果
3、方式三:@Component + @ComponentScan,衍生注解@Controller、@Service、@Repository...
这种方式常用,而且不叫简单就不写案例了
4、方式四:@Bean针对第三方的Bean
例如我们配置MybatisPlus分页插件时,就是使用@Bean方式把分页插件MybatisPlusInterceptor交给Spring管理
@Bean
@Configurationpublic class MybatisPlusConfig { //分页拦截器 @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor(); // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false paginationInterceptor.setOverflow(false); // 设置最大单页限制数量,默认 500 条,-1 不受限制 paginationInterceptor.setMaxLimit(500L); // 开启 count 的 join 优化,只针对部分 left join paginationInterceptor.setDbType(DbType.MYSQL); interceptor.addInnerInterceptor(paginationInterceptor);//分页 return interceptor; }}
5、方式五:@Import|@ImportSelector|@ImportBeanDefinitionRegistrar导入对应的Bean
@Import
通过import的方式将bean加入到spring容器中,这些在容器中bean名称是该类的全类名 ,比如com.ly.User
test
@Import(User.class)
@ImportSelector
UserImportSelector
/** * @author : ly */@Slf4jpublic class UserImportSelector implements ImportSelector { @Override public String[] selectImports(AnnotationMetadata importingClassMetadata) { log.info("通过ImportSelector导入对应的Bean"); return new String[]{"com.ly.domain.Dog"}; }}
MyImportSelector
/** * @author : ly */@Import(UserImportSelector.class)public class MyImportSelector {}
test
@Testpublic void testImportSelector(){Dog dog = ctx.getBean(Dog.class);System.out.println("dog = " + dog);}
结果
@ImportBeanDefinitionRegistrar
UserImportBeanDefinitionRegistrar
public class UserImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar { @Override public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { registry.registerBeanDefinition("dogRegister",new RootBeanDefinition(Dog.class)); }}
UserImportRegisterAnnotation
/** * @author : ly */@Import(UserImportBeanDefinitionRegistrar.class)public class UserImportRegisterAnnotation {}
test
@Test public void testImportRegister(){ Dog dog = ctx.getBean("dogRegister", Dog.class); System.out.println("dog = " + dog); }
结果
6、方式六:BeanFactoryPostProcessor注册对应的Bean
UserBeanDefinitionRegistryPostProcessor
/** * @author : ly */public class UserBeanDefinitionRegistryPostProcessor implements BeanFactoryPostProcessor { @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException { User user = new User(); user.setName("王五"); user.setAge(20); configurableListableBeanFactory.registerSingleton("userProcessor", user); }}
测试
@Test public void testProcessor(){ AnnotationConfigApplicationContext app2 = new AnnotationConfigApplicationContext(); app2.register(UserBeanDefinitionRegistryPostProcessor.class); app2.refresh(); User userProcessor = app2.getBean("userProcessor", User.class); System.out.println("userProcessor = " + userProcessor); }
结果
7、方式七:FactoryBean
当我们通过配置文件、注解声明或者是注册BeanDenifition的方式,往Spring容器中注入了一个class类型为FactoryBean类型的Bean时候,其实真正注入的Bean类型为getObjectType方法返回的类型,并且Bean的对象是通过getObject方法返回的。
UserFactoryBean
/** * @author : ly */public class UserFactoryBean implements FactoryBean { @Override public Object getObject() throws Exception { User user = new User(); user.setName("赵六"); user.setAge(23); return user; } @Override public Class> getObjectType() { return User.class; } @Override public boolean isSingleton() { return true; }}
test
@Test public void testFactorBean(){ app2.register(UserFactoryBean.class); app2.refresh(); User bean = app2.getBean(User.class); System.out.println("bean = " + bean); }
结果
总结:
Bean注入到Spring容器中大致可以分这么几种:
- 配置文件
- 注解声明
- BeanDefinition
- BeanFactoryPostProcessor注册Bean
- FactoryBean
关键词: 配置文件
-
Spring中Bean的加载方式~
1、方式一:基于spring xml方式配置Beanuserimportlombok Data; ***@author:ly* @DatapublicclassUser{
来源: -
当前报道:纬德信息(688171)3月1日主力资金净买入105.72万元
截至2023年3月1日收盘,纬德信息(688171)报收于22 68元,上涨4 04%,换手率4 08%,成交量1 38万手,成交额3098 79万元。
来源: 每日快看:Zabbix“专家坐诊”第183期问答汇总
Spring中Bean的加载方式~
什么是Markdown
当前报道:纬德信息(688171)3月1日主力资金净买入105.72万元
旅俄大熊猫画风突变体重狂飙40公斤:摸爬滚打样样精通
百事通!特斯拉Model 2被曝成本大降37% 比丰田卡罗拉还低
世界短讯!打赢了!科比坠机照片泄露案其遗孀获赔2885万美元
天天热头条丨惊险一幕:女子用火车站自动扶梯运行李 把下面男子砸骨折
【全球速看料】玩游戏需自备爆米花:《最终幻想16》主线过场动画超11小时
当前快看:1000亿数据、30W级qps如何架构?来一个天花板案例
3-Eureka注册中心
天天精选!【验证码逆向专栏】某验三代、四代一键通过模式逆向分析
当前信息:索泰RTX 4090月白深度测试:真孤独求败!A卡没得玩了
网友晒视频广州一特斯拉在停车场连撞多车 司机下车就跑:又踩错了吗
当前看点!设计时速100公里!上海苏州互通地铁今起试跑:苏州坐地铁直达
环球资讯:韦达定理
全球播报:轻松玩转Makefile | 基础用法
医院拍CT有位患者叫熊猫 结果竟是真熊猫:网友祝福“国宝”尽快好起来
丰田拆完一辆特斯拉Model Y后被震撼了 高管惊叹:我们远远落后
全球新动态:火爆全网的AI小姐姐模型重新上线 作者:画什么图后果自负
【全球热闻】大厂年薪30万95后女生转行卖快餐:直言脱离公司KPI太快乐了
当前观察:《暗黑破坏神4》玩家打怪时 不会出现天量伤害数值
世界今热点:通用电梯:目前产能在满足履行轨道交通项目合同需求的同时,不会影响公司履行其他客户订单或新接订单的生产需求
环球报道:电脑病毒的介绍与防护_电脑病毒与防护介绍
天天日报丨浅析大促备战过程中出现的fullGc,我们能做什么?
ChunJun 1.16 Release版本即将发布,bug 捉虫活动邀您参与!
一款超级给力的弱网测试神器—Qnet(附视频)
焦点要闻:Vue,小程序开发技术详解
环球即时看!关于React-Router6 (React 路由)
每日简讯:取代马斯克:新CEO接班人浮出水面
健身网红大容量运动杯:富光1.6L顿顿桶29元发车
每日热门:马力超百匹!春风NK800双缸街车发布:46890元起
热资讯!连续三年发现大油田 渤海又出亿吨级油田:1万辆车能跑30年
粽子米泡几个小时最佳?粽子米怎么调料?
职内是什么意思?职内的职能是什么?
天天快消息!【Spring基础补充】 注解补充(二)
塑料花盆能用几年?塑料花盆和陶瓷花盆哪个养花好?
url是什么意思?url地址如何获取?
COSPLAY图赏:俄妹COS《原神》八重神子 光腿狐狸媚眼如丝
《最终幻想16》PC版稳了:将于PS5版发售后开发
2299元 小米柔风空调1.5匹开启众筹:再不怕吹空调着凉了
夜空中“最亮”的两颗星星即将“浪漫相拥”:肉眼可见
世界热资讯!一夜3次地震 全球进入地震活跃期?专家回应:其实地震一直很多
江映蓉是哪一届的超女?江映蓉那届超女前十名都有谁?
榨汁机品牌排行榜前十名有哪些?榨汁机榨果汁食谱大全
chkdsk工具访问被拒绝怎么办?chkdsk工具怎么运行?
桌面的图标有阴影怎么去掉?桌面图标怎么设置随意摆放?
windows资源管理器已停止工作是怎么回事?windows资源管理器已停止工作怎么办?
输入法哪个好用?输入法被禁用如何恢复?
2023中南大学地球科学与信息物理学院科研助理招聘(非编制)
java反射机制
世界讯息:HTML+JSP+CSS实现表格布局的例子
环球头条:周鸿祎:打造中国版ChatGPT难度比研发光刻机低很多
快看点丨中国打造全球首艘大容量电池混合动力客滚船:能充8800度电
全球最大3D内容生态!努比亚推出首款裸眼3D平板nubia Pad 3D
视讯!爽脆有嚼劲/便携小包装 鱼泉榨菜7.9元 1.2斤大促
环球新消息丨魅族20系列首发Flyme 10无界生态系统 支持全链路防诈技术
推荐系统[四]:精排-详解排序算法LTR (Learning to Rank)_ poitwise, pairwise, listwise相关评价指标,超详细知
全球热资讯!使用unplugin-auto-import自动导入插件优化vite开发vue3应用
全球视讯!移动计算入门教程_编程入门自学教程_菜鸟教程-免费教程分享
【快播报】李瑞峰回答长城:我们究竟遇到了什么问题
12.98万起 新款长城欧拉好猫上市:小姐姐最爱
世界百事通!马斯克做出重大决定:特斯拉车主可能要难受了
代表建议春节假期至9天:取消调休制度 法定3天变5天
贵州一公司设立“临时哭泣点”引热议:you cry I cry no bb
焦点快看:早安!出行气象来了(2023年3月1日)
当前短讯!读Java性能权威指南(第2版)笔记05_数据库性能JDBC
korean doll likeness模型|Japanese-doll-likeness模型获取及使用
天天微速讯:一招搞定孩子不吃饭问题
实时焦点:python通过轮子安装第三方库(以Wordcloud为例)
全球动态:能否破40亿?《流浪地球2》成2月票房冠军 力压《满江红》
代表建议春节假期延至9天 取消调休!网友期待
天天快看:兼容友商Mesh组网!中兴小方糖路由器今日开售:到手仅99元
当前头条:《流浪地球3》何时出?导演郭帆:估计还要等四年
环球微速讯:3月24日公测!暴雪《暗黑破坏神4》PC配置要求公布
每日报道:MySQL的RR和RC事务隔离级别加锁类型验证
全球今热点:白马非马是什么学派_白马非马是哪家的学说
最完美iPhone要来了!消息称iPhone 16 Pro将采用屏下Face ID
焦点速看:《白夜追凶2》要来了!优酷独家悬疑剧:前作口碑爆火
每日热文:高三女生因百日誓师热血发言表情被网暴 官方回应已心里辅导:女孩未受影响
《暗黑破坏神4》Beta测试系统需求
世界今热点:TVB小花新剧牺牲大!遭五花大绑太重口味,脚踏两只船遭雪藏半年
【全球新要闻】记一次 CesiumJS 中非 4326/3857 WMTS 数据的加载
百度预告3月16日召开发布会:主题围绕文心一言
全球信息:“假苍耳”入侵中国!剧毒杀死牛羊、改变土壤、减产60%
和AI谈恋爱之后 她忘掉了相恋5年的前男友:结局心酸
环球快看:苹果供应商印度工厂突发大火:损失超8300万!一半机器烧毁
全球关注:“春天一把豆,胜过吃猪肉”,常吃4豆,高营养高蛋白,增强免疫
快资讯丨Spring IOC官方文档学习笔记(十三)之环境概要
我国累计落实补偿补助资金近270亿元用于长江禁渔退捕渔民安置
NVIDIA RTX VSR脑补网络视频:标清秒变4K超高清!
每日资讯:离谱!男子邮政寄房产证71天仍未送达
今日热门!AMD锐龙9 7000X3D正式开卖!价格、性能、功耗三杀13900KS
热讯:restaurants怎么读英语发音_restaurants怎么读
【天天播资讯】SpringBoot项目多层级多环境yml设计
天天热头条丨Kubernetes(K8S)应用案例
当前要闻:90后女孩奋斗14年从服务员到博士生 要释放所有潜力:网友感慨太强
热门看点:地铁告示牌提醒“严禁黑车及马自达占用停放”引争议 南京官方解释尴尬
日本女歌手黑崎真音因病去世 年仅35岁
世界时讯:04if分支语句