Spring两大核心概念之IOC

IOC(Invension of Control 控制反转),原来属性由自己控制,自己创建对象进行初始化;现在由Spring容器控制,反转到容器了。解耦同时更灵活,对象可以随意装配。
DI(Dependency Injection 依赖注入),比如UserDao的属性是依赖Spring容器注入进来的,不是自己在类中写死的。Spring内部原理就是依靠反射实现的。
即从实现具体的初始化到抽象层次初始化。
以下是一个基于XML的配置元数据的基本结构:

<?xml version="1.0" encoding="UTF-8"?>
<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-2.5.xsd">

  <bean id="..." class="...">
    <!-- collaborators and configuration for this bean go here -->
  </bean>

  <bean id="..." class="...">
    <!-- collaborators and configuration for this bean go here -->
  </bean>

  <!-- more bean definitions go here -->

</beans>

1.建立Spring的User Library,加入spring.jar和commons-logging.jar。对UserService进行JUnit测试(在类同级的地方new一个JUnit Test Case,拖到test的source folder里,run as Junit test即可)。

2.查api(在jar包上-properties-javadoc location中加入api路径),点击类后按F1即可在右边javadoc窗口查看到。
查看构造方法后得知可以加多个xml文件方便开发。

BeanFactory factory = new ClassPathXmlApplicationContext("beans.xml");

或者

ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");

BeanFactory 还是 ApplicationContext?

BeanFactory接口擅长于处理bean的初始化和配置,而 ApplicationContext接口除了处理上述工作外,它还针对企业引用 提供了许多基础支持,比如事务处理和AOP。

简而言之,一般把ApplicationContext接 口作为首选。

总之,模拟spring的bean工厂就是模拟BeanFactory和ClassPathXmlApplicationContext这两个类。
具体用时模拟效果和spring中使用的是一样的。
都是先声明上下文

ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");

再从容器中拿实例化的bean即可

UserService service = (UserService) factory.getBean("userService");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值