Bean实例化的方式
-
在spring里面通过配置文件创建对象
-
bean实例化三种方式实现
- 使用类的无参数构造创建(重点/主要使用)
<bean id="user" class="com.ljy.spring.User"></bean>
如果类里面没有无参构造则会出错
- 使用静态工厂创建
创建一个静态方法,返回类对象
<!--使用静态工厂创建对象 --> <bean id="bean2" class="com.ljy.spring2.Bean2Factory" factory-method="getBean2"></bean>
- 使用实例工厂创建
创建不是静态的方法,返回类对象
<!--实例工厂创建对象 --> <!--创建工厂对象 --> <bean id = "bean3Factory" class="com.ljy.bean.Bean3Factory"></bean> <bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean>
bean标签常用属性
- id属性
给bean起名字,id属性值名称不能包含特殊符号,根据id得到配置对象 - class属性
创建对象所在的类的全路径 - name属性
跟id属性一样,但是id属性值不能包含特殊符号 但是name属性值里面可以包含特殊符号,不过目前都用id - scope属性
属性值有- singleton:默认值,单例的 对象只能创建一次
- prototype: 多例的 每次创建都是一个新的对象
- request:创建对象把对象放在request域里面
- session:创建对象吧对象放在session里
- globalSession:创建对象把对象放在globalSession里面全局Session 单点登录
属性注入
- 创建对象时候 向类的属性设置值
- 属性注入的方式(三种)
- set注入
image
IOC和DI的区别
IOC:控制反转,把对象创建交给spring进行配置
DI: 依赖注入, 向类里面的属性注入值
关系:依赖注入不能单独存在,需要在ioc基础之上完成操作Spring整合web项目
- 加载spring核心配置文件
//加载spring配置文件,根据创建对象 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContex.xml");
- new对象,功能可以实现,效率很低
- 实现思想:把家在配置文件和创建对象的过程,在服务器启动时候完成
- 实现原理
- ServletContext对象
- 监听器
- 具体使用:
- 在服务器启动时候,为每个项目创建一个ServletContext对象
- 在ServletContext对象创建的时候,使用监听器可以具体到ServletContext对象在什么时候创建
- 使用监听器监听到ServletContext对象创建时候,
- 加载spring配置文件,把配置文件配置对象创建
- 把创建对象放到ServletContext域对象里面(setAttribute方法)
- 获取对象时候,到ServletContext域得到(getAttribute()方法)
- 加载spring核心配置文件
- set注入
网友评论