2.笔记JAVA框架学习——IOC概念及Bean配置
来源:互联网 发布:天津网络送花 编辑:程序博客网 时间:2024/05/29 18:23
2.笔记JAVA框架学习——IOC概念及Bean配置
IOC
控制反转(Inversionof Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(DependencyLookup)。依赖注入应用比较广泛。
DI
是IOC的另一种表述方式。
DI—Dependency Injection,即“依赖注入”:组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。
当然是应用程序依赖于IoC容器;应用程序需要IoC容器来提供对象需要的外部资源;
IoC容器注入应用程序某个对象,应用程序依赖的对象; 注入某个对象所需要的外部资源(包括对象、资源、常量数据)。
IoC和DI是同一个概念的不同角度描述,由于控制反转概念比较含糊MartinFowler又给出了一个新的名字:“依赖注入”,相对IoC 而言,“依赖注入”明确描述了“被注入对象依赖IoC容器配置依赖对象”。
IOC 容器实现
Spring 提供了两种类型的 IOC 容器实现.
l BeanFactory: IOC 容器的基本实现.
l ApplicationContext: 提供了更多的高级特性. 是 BeanFactory的子接口.
BeanFactory 是 Spring 框架的基础设施,面向Spring 本身;ApplicationContext 面向使用 Spring 框架的开发者,几乎所有的应用场合都直接使用 ApplicationContext 而非底层的 BeanFactory
无论使用何种方式, 配置文件时相同的.
ApplicationContext的主要实现类:
l ClassPathXmlApplicationContext:从 类路径下加载配置文件
l FileSystemXmlApplicationContext: 从文件系统中加载配置文件
从 IOC 容器中获取 Bean
调用 ApplicationContext 的 getBean() 方法
依赖注入的方式
Spring 支持 3 种依赖注入的方式
l 属性注入
l 构造器注入
l 工厂方法注入(很少使用,不推荐)
属性注入,例如使用setter方法。
构造方法注入, 通过构造方法注入Bean 的属性值或依赖的对象,它保证了 Bean 实例在实例化后就可以使用。
构造方法示例
Car.java如下:
publicclass Car {
private Stringcompany;
private Stringbrand;
privateintmaxSpeed;
privatefloatprice;
public Car(Stringcompany, Stringbrand,floatprice) {
super();
this.company = company;
this.brand = brand;
this.price = price;
}
public Car(Stringcompany, Stringbrand,intmaxSpeed) {
super();
this.company = company;
this.brand = brand;
this.maxSpeed = maxSpeed;
}
public Car(Stringcompany, Stringbrand,intmaxSpeed,floatprice) {
super();
this.company = company;
this.brand = brand;
this.maxSpeed = maxSpeed;
this.price = price;
}
@Override
public String toString() {
return"Car[company=" + company +",brand=" +brand +", maxSpeed="
+maxSpeed +",price=" +price +"]";
}
}
然后在app.xml中定义bean如下:
<beanid="car"class="Car">
<constructor-argvalue="KUGA"index="1"></constructor-arg>
<constructor-argvalue="ChangAnFord"index="0"></constructor-arg>
<constructor-argvalue="250000"type="float"></constructor-arg>
</bean>
<beanid="car2"class="Car">
<constructor-argvalue="ChangAnMazda"></constructor-arg>
<!-- 若字面值中包含特殊字符,则可以使用 DCDATA来进行赋值. (了解) -->
<constructor-arg>
<value><![CDATA[<ATARZA>]]></value>
</constructor-arg>
<constructor-argvalue="180"type="int"></constructor-arg>
</bean>
最后在main.java中如下:
import org.springframework.context.ApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
publicclass Main {
publicstaticvoid main(String[] args) {
//1.创建Spring的 IOC容器
ApplicationContextapx =new ClassPathXmlApplicationContext("app.xml");
Car car = (Car)apx.getBean("car");
System.out.println(car);
Car car2 = (Car)apx.getBean("car2");
System.out.println(car2);
}
}
执行如下:
Hello: Jerry
Car [company=ChangAnFord, brand=KUGA, maxSpeed=0, price=250000.0]
Car[company=ChangAnMazda, brand=<ATARZA>, maxSpeed=180, price=0.0]
友情链接
http://jinnianshilongnian.iteye.com/blog/1413846
eclipse Tips
outline
单栏选择window->showview->outlline
自动生成构造类等
类名上点右键—> Source –> Generate Gettersand Setters
- 2.笔记JAVA框架学习——IOC概念及Bean配置
- 15.笔记JAVA Spring框架学习————通过工厂配置Bean
- 16.笔记JAVA Spring框架学习————通过FactoryBean配置Bean
- 17.笔记JAVA Spring框架学习————基于注解配置Bean之一
- 6.笔记JAVA框架学习——Bean配置Properties属性
- 4.笔记JAVA框架学习——内部Bean
- 5.笔记JAVA框架学习——Bean集合属性
- 9.笔记JAVA框架学习——Bean自动装配
- 10.笔记JAVA框架学习——Bean之间关系
- 3.笔记JAVA框架学习——Bean引用其他Bean
- Spring学习笔记(3.IOC及Bean容器)
- Spring学习笔记---2.1-IOC容器解析Bean配置信息
- Spring IoC学习笔记(1):注解配置Bean
- Java学习-概念及配置
- spring学习总结(五):IOC & DI 配置 Bean 之自动装配及bean之间的关系
- 18.笔记JAVASpring框架学习————基于注解配置Bean之二
- 7.笔记JAVASpring框架学习——Bean配置独立的集合属性
- 8.笔记JAVASpring框架学习——Bean配置使用P命名空间
- obj[age]和obj['age']有什么区别?
- AdroidStudio Error:Unable to start the daemon process
- JDBC详解
- JVM的基本结构
- 第五次作业
- 2.笔记JAVA框架学习——IOC概念及Bean配置
- 小白学数据结构——零、算法初步(算法分类及最大子数组小试牛刀)
- 实现跨域的几种方式
- 3.笔记JAVA框架学习——Bean引用其他Bean
- Unity3D技巧之小地图的实现
- 4.笔记JAVA框架学习——内部Bean
- Linux的swap空间需要设置多大?
- 简单总结图优化 二
- 使用 PHP 5.4 或者更高版本计算 tiger 哈希值