非注解方式spring功能汇总

spring基本使用

1.创建一个dao接口,实现类;service接口,实现类并且service里用new创建对象方式调用dao的方法

在这里插入图片描述
在这里插入图片描述

2.使用spring分别获取dao和service对象(IOC)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意

在这里插入图片描述

2中的service里面获取dao的对象方式不用new的(DI)

在这里插入图片描述
在这里插入图片描述
运行测试:
使用1的方式创建service的对象,调用service方法,看是否成功调到了dao的方法
在这里插入图片描述

补充知识点

对象起别名:

在这里插入图片描述
多个别名之间可以用,;空格分隔
在这里插入图片描述
在这里插入图片描述
如果上面这里写个不存在的,会报错:
在这里插入图片描述

bean的作用范围

就是造的对象是单个还是多个(单例还是非单例的):
如下图:
得到结论,spring默认创建的是单例的。
在这里插入图片描述
通过配置的方式创造非单例的
不配和配上singleton都是单例
在这里插入图片描述

加个如下图,再运行上面的程序,发现地址不一样了。
在这里插入图片描述
总结:
可以重复用的对象适合用spring创建。
在这里插入图片描述

三种方式创建对象,分别如何整合spring

接口和实现类用于代码演示:
在这里插入图片描述
在这里插入图片描述

日常用new通过构造方法的方式(常用)

就上面的内容。
补充
spring是用无参构造方法,使用反射创建对象的。
后面看spring原理底层实现再说。

使用静态工厂的方式(了解)

使用静态工厂创建对象

早些年: 创建对象常用的方式,造对象不要自己new,用工厂方式进行一定程度的解耦。
为了兼容早期的一些系统,了解即可。

步骤:
写一个类叫工厂,里面写个静态的(static)方法,用new创建对象返回。
在这里插入图片描述
使用工厂获取对象:
在这里插入图片描述

如何交给spring管理(了解)

告诉:
工厂类是哪个,
工厂类里面造对象的方法是哪个
在这里插入图片描述
使用:
在这里插入图片描述

使用非静态工厂方式

早些年还有一些非静态的方式…

使用非静态工厂创建对象(了解)

工厂类:
里面写非静态的方法,返回对象
在这里插入图片描述
使用:
就得多个new:
在这里插入图片描述

如何交给spring管理(了解)

先要给工厂对象造出来,
然后要告诉用哪个工厂造对象,还要告诉里面哪个方法造对象
在这里插入图片描述
实现:
在这里插入图片描述

FactoryBean(!!务必掌握,后面整合的时候大量的框架里都在用这种方式和spring打交道)

非静态工厂用spring管理的现有缺陷:

在这里插入图片描述

spring专门针对这第三种方式的缺陷做了改良,并且这种改良方式后面还很实用:

要写一个类:
代替原始实例工厂中创建对象的方法
在这里插入图片描述
配置:
在这里插入图片描述
实现:
在这里插入图片描述

造出来的对象userDao是单例还是非单例的

验证一下:
是单例的
在这里插入图片描述
改成非单例:
在这里插入图片描述

bean的生命周期

依赖注入(往别人里面传对象,上面都是自己去调用别的获取对象)

以后set方法注入起了个名字,要说:setter注入
在这里插入图片描述
下面的演示统一用的,运行方法:
在这里插入图片描述

setter注入——引用类型

上面讲过了。
提供一个set方法,用ref属性引用对应的bean就行了。
在这里插入图片描述

setter注入——简单类型

在这里插入图片描述

演示:

提供set方法:
在这里插入图片描述

配置文件:
在这里插入图片描述
运行结果:
在这里插入图片描述

构造器注入

引用类型

set方法改成构造方法:在这里插入图片描述
配置文件:
在这里插入图片描述

简单类型

在这里插入图片描述
在这里插入图片描述

构造器注入(解耦方式写法)

上面基本写法有些缺陷,形参变化了,配置文件里就不能用,名称耦合度高
在这里插入图片描述
解耦方式:用参数类型去确定
在这里插入图片描述
在这里插入图片描述

新问题:如果类型有重复的怎么办

在这里插入图片描述
用位置写,告诉他是第几个位置的
在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四种方式如何选择

在这里插入图片描述

依赖自动装配

要是可以不写,spring自己帮你做依赖注入多好——可以
spring自动给你在容器中找到你要的东西再给你塞进去

贯彻落实了ioc的思想:你给个入口,什么都不管,我给你
在这里插入图片描述
在这里插入图片描述
service里还是这些,不删:
在这里插入图片描述
default:默认,no不用
在这里插入图片描述
在这里插入图片描述

按类型(以后主要使用这个,按名称的话改个名就完了)

在这里插入图片描述
其余都不动:
在这里插入图片描述
在这里插入图片描述
运行结果:能用
在这里插入图片描述

注意1:

按类型装配,这里要的是dao,
在这里插入图片描述
这里定义的bean实现了dao接口,所以没报错
如果这里没有,他装配谁啊,所以会报错
在这里插入图片描述

注意2

现在有两个dao的实现类对象,按类型装配,不知道给哪一个。
所以:
按类型装配要求你类型匹配时候,必须是唯一的。

在这里插入图片描述

注意3:按类型连名都能不起

在这里插入图片描述

按名称

按名称匹配,要保证下面这两个名称要起的一样。不然会报错。
在这里插入图片描述
在这里插入图片描述
如果有多个,但是名称一个都配不上,还是会报错
在这里插入图片描述

总结和注意

在这里插入图片描述

集合注入

上面基本注入的都是单一的东西。现在注入多个,集合怎么注入。
这里主要就学个格式。
在这里插入图片描述

预置场景

一个dao接口和实现类
在这里插入图片描述
配置:配一个dao
在这里插入图片描述
运行:
在这里插入图片描述
dao实现类:
在这里插入图片描述
在这里插入图片描述

配置文件写法

在这里插入图片描述
在这里插入图片描述
**在这里插入图片描述
运行及结果:
在这里插入图片描述

总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据源对象管理

上面都是管理我们自己的对象。
如果是第三方的对象该怎么管。

这里通过一个案例去看第三方的对象怎么管。这里只选择了一个对象,很多对象的管理都很相似。
前面学过什么就可以管什么。

这里管理一下阿里的德鲁伊。

在这里插入图片描述

写配置文件:

分析

想想这个DruidDataSource对象最基本的需要哪些信息:
一个数据源,要连数据库,像数据库驱动,url,用户名密码这些
那我们是用构造方法还是set方法注入?
没得选,因为别人写好的类,点进去看看:
构造方法显然不满足:
在这里插入图片描述
set方法:都有,所以使用set方式注入
在这里插入图片描述

所以配置文件写法:

在这里插入图片描述

运行及结果:

在这里插入图片描述

c3p0

添加坐标

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
要把驱动坐标配上,下面配置文件里属性要驱动
在这里插入图片描述

配置文件

管理c3p0连接池对象
查看类发现同样没法使用构造器注入,也得使用set注入
在这里插入图片描述

运行

在这里插入图片描述
配的信息已经注入进去了:
在这里插入图片描述
发现还有很多别的信息:
在这里插入图片描述
那就可以继续配:
在这里插入图片描述

加载properties文件

上面配置文件中的配置写配置文件中不合理。
要抽出来。
在这里插入图片描述
这里要学习如何用spring加载properties文件里的信息
想想有哪些过程:
首先spring要加载properties文件,得告诉spring这个文件,不然读不到里面信息。
第二,写properties文件里,配置文件里就要用别的方式写了。

修改配置文件

开了一个新的namespace命名空间叫做context,这是spring提供的命名空间:
达到一个效果,spring中可以使用一个全新的命名空间叫做context。

以后开命名空间基本都是这个套路,复制新加后改这几个地方
在这里插入图片描述
然后:
在这里插入图片描述

演示

上面的看不到效果,弄个能看到效果的证明一下没问题:

写个dao,实现类里定义一个属性name, 把文件读出来的值注入到这里面,运行save方法能看到这个值:
在这里插入图片描述
在这里插入图片描述
运行程序:
在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

一些坑要注意

在这里插入图片描述
在这里插入图片描述

容器

对前面的内容进行一个补充
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

核心容器总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值