Spring--3.bean管理 控制反转(xml)
来源:互联网 发布:王者荣耀知乎 编辑:程序博客网 时间:2024/06/18 12:06
1 实例化的方式
1.1 第一种 使用类的无参数构造创建(重点)
1.2 第二种 使用静态工厂创建
调用静态工厂方法创建 Bean是将对象创建的过程封装到静态方法中. 当客户端需要对象时, 只需要简单地调用静态方法, 而不同关心创建对象的细节.
创建静态的方法,返回类对象
class 属性:指向静态工厂方法的全类名
factory-method 属性:指向静态工厂方法的名字
constructor-arg 属性:如果工厂方法需要传入参数,用其配置参数
1.3 第三种 使用实例工厂创建
实例工厂方法: 将对象的创建过程封装到另外一个对象实例的方法里. 当客户端需要请求对象时, 只需要简单的调用该实例方法而不需要关心对象的创建细节.
要声明通过实例工厂方法创建的 Bean
1. 在 bean 的factory-bean 属性里指定拥有该工厂方法的 Bean
2. 在 factory-method 属性里指定该工厂方法的名称
3. 使用 construtor-arg 元素为工厂方法传递方法参数
创建不是静态的方法,返回类对象
factory-bean 属性:指向实例工厂方法的全类名
factory-method 属性:指向静态工厂方法的名字
constructor-arg 属性:如果工厂方法需要传入参数,用其配置参数
1.4 第四种 factorybean
Spring 中有两种类型的 Bean, 一种是普通Bean,另一种是工厂Bean, 即FactoryBean.
bean-factorybean.xml
<!-- 通过FactoryBean 来配置 bean 的实例 class:指向 FactoryBean 的全类名 property:配置 FactoryBean 的属性 但实际返回的实例确实 FactoryBean 的 getObject() 的方法返回的实例 --> <bean id="car"class="spring.factorybean.CarFactoryBean"> <property name="brand"value="福特"></property> </bean>
工厂Bean 跟普通Bean不同,其返回的对象不是指定类的一个实例, 其返回的是该工厂 Bean 的 getObject 方法所返回的对象
CarFactoryBean
//自定义 FactoryBean 必须实现FactoryBean接口public class CarFactoryBean implements FactoryBean<Car>{ private String brand; public void setBrand(String brand) { this.brand = brand; } @Override public Car getObject() throws Exception { //返回 bean 对象 return new Car(brand ,500000); } @Override public Class<?> getObjectType() { //返回 bean 类型 return Car.class; } @Override public boolean isSingleton() { return true; }
2 Bean 自动装配—这里用于创建对象
2.1 三种方式
SpringIOC 容器可以自动装配 Bean.需要做的仅仅是在 <bean> 的 autowire 属性里指定自动装配的模式
2.1.1 byType(根据类型自动装配):
若 IOC 容器中有多个与目标 Bean 类型一致的 Bean. 在这种情况下, Spring 将无法判定哪个 Bean 最合适该属性, 所以不能执行自动装配.
2.1.2 byName(根据名称自动装配):
必须将目标 Bean 的名称和属性名设置的完全相同.
<bean id="address" class="spring.autowire.Address"p:city="北京" p:street="天安门"></bean> <!-- <beanid="address2" class="spring.autowire.Address" p:city="北京" p:street="天安门"></bean>--> <bean id="car"class="spring.autowire.Car" p:brand="奥迪" p:price="30000"></bean> <!-- 可以使用自动装配autowire byname : 名字匹配,上面id名必须和实体类匹配 byType:类型匹配,一个以上抛异常eg:address和address2 --> <bean id="person"class="spring.autowire.Person" p:name="老兰" autowire="byType"></bean>
2.1.3 constructor(通过构造器自动装配):
当 Bean 中存在多个构造器时, 此种自动装配方式将会很复杂. 不推荐使用
2.2 缺点
在 Bean 配置文件里设置 autowire 属性进行自动装配将会装配 Bean 的所有属性. 然而, 若只希望装配个别属性时, autowire 属性就不够灵活了.
autowire属性要么根据类型自动装配, 要么根据名称自动装配, 不能两者兼而有之.
一般情况下,在实际的项目中很少使用自动装配功能,因为和自动装配功能所带来的好处比起来,明确清晰的配置文档更有说服力一些
- Spring--3.bean管理 控制反转(xml)
- IoC控制反转--管理Bean
- IoC控制反转--管理Bean
- IoC控制反转--管理Bean
- spring的bean管理方式(xml)
- Spring--4.bean管理(xml)
- spring、IoC控制反转和DI依赖注入入门、基于XML的Bean装配、基于注解的Bean装配
- Spring ioc详解,IOC控制反转对象bean
- Spring--5.bean管理 依赖注入(xml)
- Spring IoC(控制反转)
- Spring IoC(控制反转)
- 【JavaWeb-23】spring、IoC控制反转和DI依赖注入入门、基于XML的Bean装配、基于注解的Bean装配
- Spring的bean管理(xml方式)之Bean实例化的方式
- Spring学习之路第一步 : xml方式实现IOC(控制反转)
- Spring之控制反转(IoC)
- Spring之控制反转(IoC)
- Spring之控制反转(IoC)
- Spring学习IoC控制反转(一)
- 第七周项目5-排队看病模拟
- codeforce_876B_B
- PHP代码审计实战之盾灵CMS
- Java内部类
- 详解apt、yum、dnf 和 pkg
- Spring--3.bean管理 控制反转(xml)
- 高级软件工程lab5-----用callback增强链表模块来实现命令行菜单小程序V2.8
- Hamming Distance(leetcode)
- 成绩系统
- Reflection2017.10.20
- POJ2431
- MacOS系统使用系列-3.Mac命令行命令学习
- 3招解决Nginx实现404页面的实现!
- 简单的切水果游戏制作