1.ioc容器(spring3.2文档第五章)
来源:互联网 发布:mac装win10 wifi不稳定 编辑:程序博客网 时间:2024/06/05 08:03
1.1 介绍
ioc,即Inversion of Control控制反转,也可以称之为依赖注(DI)。org.springframework.beans和org.springframework.context这两个包是使用ioc容器的基础,所以要在工程中使用依赖注入,必须引入这两个包。(关于依赖注入在网上有很多的介绍,这里就不多讲了)在这里有一个非常重要的类ApplicationContext,它是Beanfactory的一个子接口,用来实现spring中bean的创建和管理。在官方的API中可以看到ApplicationContext的描述:![这里写图片描述](http://img.blog.csdn.net/20160309225740779)它继承了ListableBeanFactory(这个接口是BeanFactory的直接子接口)。它为应用程序提供初始的配置,在运行的时候它处于不可更改的状态,但是支持重新加载。ApplicationContext通过读取一个xml文件来完成程序的初始化配置。
1.2 helloworld程序
我的工程中引入的jar包如下:前面两个是spring中jar包的依赖![这里写图片描述](http://img.blog.csdn.net/20160309230021079)假设有两个类UserBean和UserDao,其具体代码如下。UserBean就是UserDao的一个依赖,我们就可以采用spring进行DI。
public class UserBean { private String name ; public String getName() { return name; } public void setName(String name) { this.name = name; }}
public class UserDao { private UserBean user ;public UserBean getUser() { return user;}public void setUser(UserBean user) { this.user = user;}}
我们写一个spring的配置文件spring-main.xml(对于xml文件的详细解释在接下来会介绍):
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="userbean" class="com.example.maven.UserBean"></bean><bean id="userdao" class="com.example.maven.UserDao"> <property name="user" ref="userbean"></property></bean></beans>
然后在main函数中使用ApplicationContext(一般我们在普通java程序中使用ClassPathXmlApplicationContext)。
public class App { public static void main(String[] args) { ApplicationContext app = new ClassPathXmlApplicationContext("spring-main.xml"); UserDao userDao = (UserDao) app.getBean("userdao"); userDao.getUser().setName("test"); System.out.println(userDao.getUser().getName()); }}
1.3 个人理解
首先,对于spring中bean和spring管理bean的理解:简单的讲,bean就是一个普通的java类,bean与bean之间可能会有依赖关系,比如beanb是beana的成员变量。我们以前在程序中想要创建一个类的时候都是使用new关键字的,而在spring中,我们使用ioc容器来创建类或者时候bean。正如上文中spring-main.xml中定义的bean
这句话的意思就是,创建一个类型为UserBean的类,名为userbean,当ApplicationContext读取这个xml文件的时候,spring ioc容器中就会创建这个bean。然后在程序中就可以调用。 这样有什么好处呢?在工程中,我们都使用接口编程,假设有一个接口A,然后有一个类B实现了这个接口,我们在不使用spring的工程中,每一次使用接口A的时候都是 A a = new B()这么调用的,如果B类突然满足不了项目的要求了,必须要使用一个D类来完成接口A的功能,那么我们就必须将工程中所有的A接口的定义换成A a = new D()。这样大大降低了工程的可维护性和可扩展性。 如果使用spring的话,我们用<bean id="b" class="B">来定义一个B,在程序中用ApplicationContext进行调用ApplicationContext.getBean("b"),如果要使用D类的话直接改一个配置文件就行了, 大大提高了程序的可扩展性。
0 0
- 1.ioc容器(spring3.2文档第五章)
- spring3.x第三章 IOC容器概述
- Spring说明文档5——IoC容器(2)
- [Spring3.x] 第 3 章 IOC 容器概述
- spring3.x第四章 在IOC容器中装配Bean
- spring3.x第五章 Spring容器高级主题
- 【第二章】 IoC 之 2.2 IoC 容器基本原理 ——跟我学Spring3
- 【第二章】 IoC 之 2.2 IoC 容器基本原理 ——跟我学Spring3
- 【第二章】 IoC 之 2.2 IoC 容器基本原理 ——跟我学Spring3
- 【第二章】 IoC 之 2.2 IoC 容器基本原理 ——跟我学Spring3
- 【第二章】 IoC 之 2.2 IoC 容器基本原理 ——跟我学Spring3
- 【第二章】 IoC 之 2.2 IoC 容器基本原理 ——跟我学Spring3
- 【第二章】 IoC 之 2.2 IoC 容器基本原理 ——跟我学Spring3
- 【第二章】 IoC 之 2.2 IoC 容器基本原理 ——跟我学Spring3
- 【第二章】 IoC 之 2.2 IoC 容器基本原理 ——跟我学Spring3
- 【第二章】 IoC 之 2.2 IoC 容器基本原理 ——跟我学Spring3
- 【第二章】 IoC 之 2.2 IoC 容器基本原理 ——跟我学Spring3
- 【第二章】 IoC 之 2.2 IoC 容器基本原理 ——跟我学Spring3
- Android Activity与Service通信
- Java 的Comparable 和 Comparator
- popupWindow布局
- tomcat配置及nginx反代至tomcat(二)
- Linux LTS 内核最新稳定版 4.4.4 版本发布
- 1.ioc容器(spring3.2文档第五章)
- file not found:'DBAccess.dcu'解决
- UILabel的文本调节宽度,以及字体自适应宽度
- 编程小练习2
- 003.&与&&的区别?
- Java HashMap 核心源码解读
- 在Android Studio中显示函数介绍
- 装饰模式与代理模式的区别
- 设置Laber上传时注意字体大小要统一,不然不生效