![](https://img-blog.csdnimg.cn/20210507215853107.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d3d3l1MTI4,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20210507215852881.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d3d3l1MTI4,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20210507215852879.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d3d3l1MTI4,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20210507215852228.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d3d3l1MTI4,size_16,color_FFFFFF,t_70)
|
|
|
|
| ![]() |
| ![]() |
|
|
|
bean的作用域
spring默认bean是单实例对象,声明两个对象,地址相同
1)spring配置文件bean标签里面有属性(scope)用于设置单实例还是多实例
2)scope属性值 默认singleton,表示单实例
prototype 表示多实例
3)singleton和prototype区别
第一singleton单实例 prototype多实例
第二 设置scope值是singleton时候,加载spring配置文件时候就会创建单实例对象
设置scope值是prototype时候,不是在加载spring配置文件时候创建对象,在调用getBean方法时候创建多实例对象
bean声明周期
(从对象创建到对象销毁的过程)
1)通过构造器创建bean实例(无参数构造)
2)为bean的属性设置值和对其他bean引用(调用set方法)
3)把bean实例传递bean后置处理器的方法postProcessBeforeInitialization
4)调用bean的初始化方法(需要进行配置)
5)把bean实例传递bean后置处理器的方法postProcessAfterInitialization
6)bean可以使用了(对象获取了)
7)当容器关闭时候,调用bean的销毁方法(需要进行配置销毁方法)
IOC操作bean管理 xml自动装配
(根据指定装配规则(属性名称或者属性类型)spring自动将匹配的属性注入)
IOC操作 bean管理 外部属性文件
1 直接配置数据库信息
1)配置德鲁伊连接池
2)引入德鲁伊连接池依赖jar包
2引入外部属性文件配置数据库连接池
1)创建外部属性文件,properties格式文件,写数据库信息
2)把外部properties属性文件引入到spring配置文件中
引入 context名称空间(xml最上面的引入一大串路径)
在spring配置文件使用标签引入外部属性文件
IOC操作bean管理 基于注解方式
~(注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值。。。))
~注解可以作用在类,属性,方法上面
~目的 :简化xml配置
++++++++++++++++++
Spring针对Bean管理中创建对象提供注解
1) @Component
2)@Service
3)@Controller
4)@Repository
*上面四个注解功能是一样的,都可以用来创建bean实例
+++++++++++++++++++++++++++++++++++++++++++++
基于注解方式实现对象创建
第一步 引入依赖
第二部 开启组件扫描
第三步 创建类,在类上面添加创建对象注解 在注解里value属性值可以省略不写 默认值是类名称首字母小写
开启组件扫描细节配置
++++++++++++++++++++++++++++++++++++++++++++
基于注解方式实现属性注入
1)@AutoWired:根据属性类型进行自动装配
第一步 把service和dao对象创建,在service和dao类添加创建对象注解
第二部 在service注入dao对象,在service类添加dao类型属性 在属性上面添加注解
2)@Qualifier:根据属性名称进行注入
和上面的@Autowired一起使用
3)@Resource:可以根据类型,也可以根据名称注入
4)@Value:注入普通类型属性
AOP:面向切面编程,降低耦合度(不通过修改源代码,在主干功能里面添加新功能)
![](https://img-blog.csdnimg.cn/20210507215852499.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d3d3l1MTI4,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20210507215852648.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d3d3l1MTI4,size_16,color_FFFFFF,t_70)
1)创建类,在类里卖弄定义方法
2)创建增强类 在增强类里面,创建方法,让不同方法代表不同通知类型
3)进行通知的配置
在spring配置文件中,开启注解扫描
|
使用注解创建USer和Userproxy对象
|
在增强类上面添加注解@Aspect
|
在spring配置文件中开启生成代理对象 |
|
在增强类中写具体方法,
===============================
JDBCTemplate
1) 什么是:Spring框架对JDBC进行封装,使用JDBCtemplate方便实现对数据库操作
2)准备工作:引入相关jar包
JDBCTemplate操作数据库
1/)对应数据库创建实体类:创建一个entity包,新建User类,以及各种属性,添加get set方法
2)编写service和dao
在dao进行数据库添加操作
调用JDBCTemplate对象里面update方法实现添加功能
查询(返回某个值)
查询返回对象
查询返回集合
批量操作
![](https://img-blog.csdnimg.cn/20210507215852551.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d3d3l1MTI4,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20210507215851256.png)
![](https://img-blog.csdnimg.cn/20210507215852382.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d3d3l1MTI4,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20210507215852512.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d3d3l1MTI4,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20210507215852309.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d3d3l1MTI4,size_16,color_FFFFFF,t_70)
|
|
|
|
|
|
|
|
|
| mysql默认可重复读 | |
|
|
|