Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

目录:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


Spring概念组成:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


IOC操作及底层原理:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


由最初创建对象的方式new -----采用简单工厂模式来生成对象--------IOC底层原理:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


下图就是IOC的底层原理

(用到xml文件配置+ 工厂模式+ dom4j解析xml文件+ 反射生成对象)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


IOC入门案例:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

SPRING官方网站改版后,建议都是通过 Maven和Gradle下载,对不使用Maven和Gradle开发项目的,下载就非常麻烦,给出Spring Framework jar官方直接下载路径:

http://repo.spring.io/libs-release-local/org/springframework/spring/



Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)



Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

结果:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)




配置文件没有提示问题:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)



Bean实例化的三种方式:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


第一种:使用类的无参数构造函数创建

出现问题1: 只有有参构造函数:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


情况2: 加上无参构造函数则正常:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


总结:

配置文件中的id---class  采用的即是根据无参构造函数构造对象的方式~也是最常用的~



第二种:使用静态工厂方式创建

工厂---配置文件---测试

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


第三种:使用实例工厂方式创建

创建工厂对象---调用方法--创建类对象

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)





Bean 标签常用属性:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

eg.  最后一个举例子:  例如你打开百度 一次登陆百度贴吧之后   再进入百度文库 则已经是登陆状态

        即一次登陆  即可全局访问   后来用redis实现~


默认值是singleton:   测试一下   发现创建的两个对象内存地址相同~

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


设定scope值是prototype:   测试一下   发现创建的两个对象内存地址不同~

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)





属性注入:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


1 set方法注入

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

XML:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

测试:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


2 有参数构造注入

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)




注入对象类型属性(重点):

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

   Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

测试:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)




P名称空间注入:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


具体测试:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)





注入复杂类型属性:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

实验代码:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

XML文件:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

测试:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)




IOC(控制反转)和DI(依赖注入)区别:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)




Spring整合web项目原理:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)

   Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)


监听器:

Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)



Spring4.x 入门( ioc 底层原理/bean管理/ 注入对象类型)