spring基础环境搭建
1.添加Spring依赖
2.编写一个Spring的配置文件
3.通过Spring的应用程序应用上下文获取对象
优点:在修改方案时可以不用修改代码,只需修改配置文件的bean就可以。
spring的基本测试过程
1.获取上下文对象ctx
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
2.通过上下文对象ctx获取自己创建的对象。
Girl girl= (Girl) ctx.getBean("girl2");
3.需要修改你的对象的时候,直接修改配置文件即可。
IOC概念的理解
IOC也称为依赖注入
1.控制反转:inverse of control 什么控制,谁反转了谁
控制:创建对象,彼此关系的权利。
控制权是在开发人员在程序代码当中进行掌控。(new)
夺取控制权
反转给spring的容器
-
声明要什么
-
spring容器来进行具体的控制
改变了编程的方式
2.依赖注入(DI)
依赖:
注入:
3.值的注入
a.setter注入
-
必须对应字段有对应setter方法才能完成
-
通过property子节点注入
注意使用lombok插件的时候需要导入依赖的。
b.构造注入
必须有对应的set构造方法
无参的构造方法也必须有,框架一般依赖于无参
4.bean元素探讨
属性探讨
-
abstract 对象抽象化,无法形成实例 一般和parent同时使用,指定父类bean。
-
destroy-method:指定这个bean被销毁时执行的方法
触发条件:bean确实被销毁
例如:ctx.close();(需要强制转换ctx,这里就不写了) //destroy也可以了,但有点过时了
refresh也会被触发 stop不会被触发
-
init-method:指定bean的初始化方法,适合准备性的工作
-
name: 别名,可以通过它一样获取。 可以采用多种f分隔符方式 (空格,逗号都可以)
-
scope:指定范围
singleton:单例 spring上下文只有一个实例
prototype:原型
-
lazy-init:延迟初始化 (spring一上来不会直接初始化bean,我们需要使用的时候才会初始化bean)
默认情况下所有的bean是容器初始化完毕就完成实例
延迟程序初始化可以让程序启动快一些,内存消耗更小一点。
-
depends-on:依赖的bean,如果一个bean的使用严重依赖于另一个bean的准备的话,就可以配置depends-on。
对于非字面值可以描述的值的注入问题,通过ref指向另一个bean的ID。
关于在spring的配置文件单独配置别名,通过alias即可。
spring多个配置文件的bean被扫描后是可以互相引用的。