IoC容器,注解的方式加载bean之包扫描(scan)、自动装配(autowired)

上节课我们学习了使用注解的方式加载bean对象

image.png

如上面的代码 创建一个ApplicationContext上下文对象 并且传入配置类 我们在实际开发中配置类会有多个,如果手工去填写配置类,不是很方便 所以我们介绍一下第一种方法扫描包的方式
下面我们来到官方文档https://docs.spring.io/spring/docs/5.0.4.RELEASE/spring-framework-reference/core.html#beans-java-bean-annotation
根据文档我们写下代码
我们假设相关的bean以及自己写的一些业务类库放在com.jtthink.SpringLean下面 我们对这个包进行扫描
在MySpring中
image.png

运行结果
image.png

可以看见我们没有传入配置类文件,自动对我们包下面的类文件进行了扫描
我们还可以通过xml的方式加载 这里先不演示 官方文档里面有
接下来我们在SpringBean包下面创建一个newsService.java文件
目录如下
image.png

里面写入代码
image.png

下面我们将NewsService这个service集成到IoC容器中
所以我们创建在SpringBean里面创建一个NewsConfig配置类
目录如下
image.png

里面代码如下
image.png

接下来在MySpring里面做下调用
image.png

运行结果
image.png

以上代码即通过IoC容器进行调用
下面我们想一个问题 如果在NewsService里面想调用UserService里面内容怎么办?
我们要用到下面的内容
image.png

@AutoWired自动装配注解 可以非常方便的帮我们直接从IoC容器里面把相关的类装配进去
下面看下代码
NewsService里
image.png

在UserService里面加入一段测试代码
image.png

运行结果
image.png

以上就是@AutoWired自动装配的基本功能
接下来我们学习注解另一种写法
在NewsService里面讲自动装配代码去掉
image.png

运行结果
image.png

报错了 因为UserService类没有被加载进去
image.png

上面一张图片 在@AutoWired上面alt+enter会对代码进行优化 将自动装配注解打在了构造函数上
下面我们修改下代码
image.png

新增一个abc方法 并打入自动装配注解
运行结果
image.png

依然报错 以为注解打在了我们的方法上面
image.png

我们加入参数如上面 abc方法被自动执行了
运行结果
image.png

下面我们添加几行代码
image.png

运行结果
image.png

上面是在方法上打入@AutoWired注解产生的效果
上面就是使用注解的两种方式,在学习后面的spring mvc时候,经常会用到自动装配,我们在外部定义好类之后,都要通过上面的方式进行自动装配,而不是通过实例化new的方式到处创建我们无法控制的对象
接下来我们在学习一个知识点
在MyConfig中在写一个UserService方法
image.png

运行代码
image.png

可以看见报错了
是因为我们写入了@AutoWired 使其找不到到底要加载哪个bean
实际上@AutoWired在装配的时候是按照类型进行装配的
为了解决上面问题 我们学习下面的内容
image.png

@Qualifier注解 对我们多个同类型的bean进行区分
下面代码演示下
在MyConfig里面
image.png

在NewsService里面
image.png

运行结果
image.png

还有另外一种办法 如果不打入@Qualifier注解 返回的是一个UserService类型的数组
下面看下代码 首先我们将MyConfig中的@Qualifier注解注释掉
代码如下
image.png

修改下NewsService里面代码
image.png

运行结果
image.png

上面的这种方法官网中也有介绍 我们可以查看

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容