Spring环境搭建?
IOC是什么?
控制反转,调用者的实例创建不再由调用者自己创建,而是由spring容器创建,这个过程把实例创建的控制权由应用代码转移到了外部容器,控制权发生了改变。
DI是什么?
依赖注入,给对象赋属性值,一定要保留空的构造方法和get/set的方法!
Bean标签里四个属性的作用:
Name属性:给对象取名,名字可以同时取多个,但是不同的对象不能重复
Scope对象作用域属性:
scope = “singleton” 默认值,Spring容器默认创建的对象是单例!
scope=“prototype” 创建的对象是多例(每次使用对象的时候额外创建一个新的
scope=“session” 表示在一次会话范围内,Spring容器中的对象保持一个,公用同一个!
scope=“request” 表示在一次请求范围内,Spring容器中的对象保持一个,公用同一个
注意:后两个只能用在web项目里
对象懒创建(只有在scope = "singleton"才会生效)
lazy-init表示对象的加载时机(true:懒加载(使用对象的时候才创建);false(spring框架一启动就加载))
对象创建完成后调用的方法,和对象销毁后调用的方法
init-method=“对象创建完成后调用的方法”
destroy-method=“对象销毁后调用的方法”
Spring创建对象的方式:
方式1. 通过构造方法创建
1.1 无参构造创建:默认情况.
1.2 有参构造创建:需要明确配置
1.2.1 需要在类中提供有参构造方法
1.2.2 在applicationContext.xml 中设置调用哪个构造方法创建对象
1.2.2.1 如果设定的条件匹配多个构造方法执行最后的构造方法
1.2.2.2 index : 参数的索引,从0 开始
1.2.2.3 name: 参数名
1.2.2.4 type:类型(区分开关键字和封装类int 和Integer)
<constructor-arg index="0" name="id" type="int" value="123"></constructor-arg>
<constructor-arg index="1" name="name" type="java.lang.String" value="张三"></constructor-arg>
方式2. 实例工厂
2.1 工厂设计模式:帮助创建类对象.一个工厂可以生产多个对象.
2.2 实例工厂:需要先创建工厂,才能生产对象
2.3 实现步骤:
2.3.1 必须要有一个实例工厂
public class PeopleFactory {
public People newInstance(){
return new People(1,“测试”);
}
}
2.3.2 在applicationContext.xml 中配置工厂对象和需要创建的对象
方式3. 静态工厂
3.1 不需要创建工厂,快速创建对象.
3.2 实现步骤
3.2.1 编写一个静态工厂(在方法上添加static)
public class PeopleFactory {
public static People newInstance(){
return new People(1,“测试”);
}
}
3.2.2 在applicationContext.xml 中
复杂类型的注入:
注入对象
注入数组
123
123
注入集合
List:
1234
1234
Set:
12345
12345
注入map