在spring里面通过配置文件创建对象
1.bean实例化三种方式实现
1)使用类的无参数构造创建(重点)(写了有参数的构造函数,默认没有无参构造函数,使用这种方式,必须重新再写一个)
2) 使用静态工厂创建
创建静态的方法,返回类对象
< bean id=”bean2” class=’cn.itcast.bean.Bean2Factory” factory-method=”getBean2”>< /bean>
无需对实体类进行对象的xml配置
3)使用实例工厂创建
创建不是静态的方法,返回类对象
1.创建工厂对象
< bean id = "bean3Facotry"
class =“cn.itcast.bean.Bean3Factory">< /bean>
< bean id="bean2" facotry-bean = "bean3factory"
factory-method ="getBean3">< /bean>
2.bean 标签常用属性
(1)id属性:起名称,id属性值名称任意命名
- id属性值,不能包含特殊符号
- 根据id值得到配置对象(自动生成的对象)
(2)class属性:创建对象所在类的全路径
(3)name属性:功能和id属性一样的,id属性值不能包含特殊符号,但是在name属性值
(4)scope属性
- singleton:默认值,单例
- prototype:多例
- request:创建对象把对象放到request域里面
- session:创建对象把对象放到session域里面
- globalSession:创建对象把对象放到globalSession里面
3.属性注入
1 定义:创建对象时候,向类里面属性里面设置值
2 属性注入的方式介绍(三种方式)
(1)使用set方法注入
(2)使用有参数构造注入
(3)使用接口注入
3 在spring框架里面,支持前两种方式
(1)set方法注入(重点)
< bean id="book" class="cn.itcast.property.Book">
< property name = "bookname" value="c++"></property>
< /bean>
(2)有参数构造注入
<bean id="demo" calss = "cn.itcast.property.PropertyDemo1">
<constructor-arg name = "urername" value="小王”></constructor>
</bean>
4.对象属性的注入
<bean id = "userDao" class ="cn.itcast.ioc.UserDao"></bean>
<bean id = "userService"
class ="cn.itcast.ioc.UserService">
<property name="userDao" ref = "userDao"></proerty>
</bean>
5.复杂类型注入
1 数组
2 list集合
3 map集合
4 properties类型
<bean id = "person" class="cn.itcast.prpperty.Person">
<property name="arrs">
<list>
<value>小王<value>
<value>小王<value>
<value>小王<value>
</list>
</property>
</bean>
IOC和DI区别
(1)IOC: 控制反转,把对象创建交给spring进行配置
(2)DI: 依赖注入,向类里面的属性中设置值
(3)关系:依赖注入不能单独存在,需要在ioc基础之上完成操作
补充知识点:
ServletContext 是Servlet与Servlet容器(tomcat)之间直接通信的接口,Servlet容器在启动一个web应用时,会为它创建一个ServletContext对 象,每个web应用有唯一的ServletContext对象,同一个web应用的所有Servlet对象共享一个 ServletContext,Servlet对象可以通过它来访问容器中的各种资源