目录,更新ing,学习Java的点滴记录
目录放在这里太长了,附目录链接大家可以自由选择查看--------Java学习目录
Spring知识
一丶SpringIOC初步认识↓↓↓
第一篇---->初识Spring
二丶SpringIOC深入↓↓↓
第二篇---->深入SpringIoC容器(一)
第三篇---->深入SpringIoC容器(二)
三丶装配SpringBean↓↓↓
第四篇---->依赖注入的方式
第五篇---->基于xml装配Bean
第六篇---->基于注解装配Bean
第七篇---->Spring Bean之间的关系
第八篇---->SpringBean的作用域
第九篇---->Spring 加载属性(properties)文件
第十篇---->Spring表达式(SpEL)
第十一篇---->Spring在xml中配置组件扫描
四丶面向切面编程↓↓↓
第十二篇—>认识SpringAOP及底层原理
第十三篇—>使用@AspectJ注解开发AOP
第十四篇—>使用xml配置开发AOP
五丶Spring中数据库编程↓↓↓
第十五篇—>数据库编程JdbcTemplate
六丶Spring事务管理↓↓↓
第十六篇—>Spring事务管理初识
第十七篇—>编程式事务和声明式事务
第十八篇—>事务ACID特性
第十九篇—>事务传播行为
第二十篇—>事务隔离级别
三丶Spring装配Bean
1 依赖注入的方式(3类4种)
1.1 依赖注入
- 依赖注入DI是指程序运行过程中,若需要调用另一个对象协助时,无需在代码中创建被调用者,而是
依赖于外部容器,由外部容器创建后传递给程序
.依赖注入是目前最优秀的解耦方式,依赖注入让Spring的Bean之间以配置文件的方式组织在一起,而不是以硬编码的方式耦合在一起的 - 实际环境中实现IoC容器的方式主要分为两大类,一类是依赖查找,依赖查找是通过资源定位,把对应资源查找回来;另一类就是依赖注入,而Spring主要使用的就是依赖注入.一般而言,依赖注入可以分为3种方式.
1.2 获取Bean对象的方式—getBean()
- 图解源码
- 使用较多的是前三种,具体使用的体会后面注入时会用到
1.3 通过全类名(反射)(最常用)
1.3.1 构造器注入(常用)
- 构造器注入
依赖于构造方法实现
,而构造方法可以是有参数的或者无参数的.Spring也可以采用反射的方式,通过使用构造方法来完成注入,构造器注入在 元素里声明属性,这就是构造器注入的原理
. - 为了让Spring完成对应的构造注入,我们首先需要创建一个JavaBean类,并创建构造方法,这样在使用构造器注入时就会通过对应信息通过
反射的形式
去创建对象.如果你对反射机制不熟悉,这篇文章会帮到你—>反射 - 创建一个User类
- 在全局配置文件applicationContext.xml中配置Bean信息,这里使用了
4种常见的构造器注入的方式:无参构造|索引匹配,类型匹配,名称匹配
- 测试方法
- 使用构造器注入缺点也是很明显的,当参数比较少的时候,可读性还可以,但是参数很多时,这种方式就非常复杂了,这时候就应该考虑setter注入了
1.3.2 setter注入(常用)
- setter注入时Spring中
最主流的注入方式
.它利用JavaBean规范所定义的setter方法来完成注入,灵活且可读性高.消除了使用构造器注入时出现多个参数的可能性.首先可以把构造方法声明为无参数的,然后使用setter注入为其设置对应的值,其实也是通过Java反射技术
来实现的. - Setter方式注入也称为
属性注入|设值注入
,可以给指定Bean注入属性值或者依赖的对象,属性注入使用 元素, 使用 name 属性指定 Bean 的属性名称,value 属性或 子节点指定属性值. 属性注入是实际应用中最常用的注入方式
- 创建一个User类
- 修改配置文件信息
- 测试结果
- 通过测试结果我们可以很明显看出,Spring"私底下"自动调用了对应属性的setter方法,
spring会通过反射调用没有参数的构造方法生成对象,同时通过反射对应的setter注入配置的值
.这是Spring最主要的方式,实际中应用最广方. 所以说,如果Bean类中定义了其他带参构造方法,那么必须手动声明一个无参构造器
1.4 通过静态工厂(很少用)
- 静态工厂顾名思义,就是通过
调用静态工厂的方法
来获取自己需要的对象,为了让Spring管理所有对象,不能直接通过"工厂类.静态方法()"来获取对象,而是依然通过Spring注入的形式获取. - 在配置文件中需要使用factory-method属性指定工厂类中的静态方法
- 下面是代码示例
- 工厂类
- User类
- 配置文件
- 测试类
1.5 通过实例工厂(很少用)
- 实例工厂的意思就是获取对象实例的方法
不是静态的
,所以需要先创建一个工厂类实例,然后在调用该工厂类的实例方法,通过该实例方法再创建我们需要的Bean实例 - 以下为代码示例
- 实例工厂类
- User类
- 配置文件
- 测试类