码迷,mamicode.com
首页 > 编程语言 > 详细

spring之IOC实现

时间:2017-11-24 20:20:35      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:创建对象   www.   加载   优化   his   ext   factory   编程   val   

Spring核心思想 :

  IOC控制反转

  DI依赖注入

  AOP切面编程

IOC思想:

 场景描述:

    在没有加入spring框架之前我们调取业务层时需要创建对象,例如:  接口名   变量名=new  接口的实现类(); 

  问题描述.

     接口和实现类之间会产生依赖关系,如果想切换接口的实现类我们就需要进行修改原代码,不利于管理;

  解决上述问题;

    我们使用工厂模式,把创建对象的过程放在工厂类当中,只需要修改源代码为接口名  变量名=工厂创建的对象过程;

  在一定的程度对代码进行了优化,这样我们表面上把耦合性就降低了,其实并没有,

  问题描述:工厂模式没有让我们从实质上去降低耦合度

  解决方案:使用xml文件+Factory模式来对代码进行优化,

<bean name="UserService" class="com.fjk.shop.web.servlet.UserServlet"></bean>

    接口名  变量名=Factory.getInstrance("UService");

    思想:我们把具体的实现类写到xml中,让配置文件进行具体是实现类的管理,

  在工厂中使用xpath技术解析xml标签去获取具体实现类的字符串再使用反射技术进行创建对象,这样我们就成功的把程序的耦合性就降低了

这一复杂过程就是IOC思想,控制反转就是解决了程序的耦合性,把创建对象的过程交给spring来管理,spring实现控制反转就是使用了xml+工厂模式+反射技术实现IOC

搭建基础的Spring框架来实现IOC控制反转案例

    1.导入jar包

                       技术分享图片

    2.创建配置文件

      默认路径为src根目录下,命名为applicationContext.xml

    3.书写代码

  创建UserService接口

public interface UserService {
	public abstract void login();

}

  创建UserService的实现类UserServiceImp

public class UserServiceImp implements UserService{
	@Override
	public void login() {
		System.out.println("login.....");
		
	}
}

  测试方法

    @Test
	public void test01(){
		//加载配置文件
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		//使用控制反转来实现对象的创建
		UserService userService = (UserService) applicationContext.getBean("UserService");
		userService.login();
	}

  DI依赖注入:

修改applicationContext.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING // DTD BEAN 2.0 // EN"
        "http://www.springframework.org/dtd/spring-beans-2.0.dtd">     
<beans> 
        <bean id="UserService" class="com.baidu.test.UserServiceImp">
        <property name="name" value="张三"></property>
        </bean>
</beans>

  UserServiceImp文件

public class UserServiceImp implements UserService{
	private String name;
	public void setName(String name) {
		this.name = name;
	}

	@Override
	public void login() {
		System.out.println("login.....");
		System.out.println(name);
		
	}
}

  测试输出:

login.....
张三

  使用xml文件注入了值

 

  

spring之IOC实现

标签:创建对象   www.   加载   优化   his   ext   factory   编程   val   

原文地址:http://www.cnblogs.com/fjkgrbk/p/spring_IOC.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!