首页 > 其他 > 详细

ioc

时间:2020-04-23 19:49:31      阅读:51      评论:0      收藏:0      [点我收藏+]

Spring IOC

SpringIOC-Iversion of Control

即“控制反转”,不是什么技术,而是一种设计思想。

在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。:

IOC的作用:

 1 IoC 是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。

传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;

有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,

所以对象与对象之间是 松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

IOC容器也是具有依赖注入功能的容器,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。

 应用程序无需直接在代码中new相关的对象,应用程序由IOC容器进行组装。在Spring中BeanFactory是IOC容器的实际代表者。

Spring IOC容器通过读取配置文件中的配置元数据,通过元数据对应用中的各个对象进行实例化及装配。

一般使用基于xml配置文件进行配置元数据,而且Spring与配置文件完全解耦的,可以使用其他任何可能的方式进行配置元数据,比如注解、基于java文件的、基于属性文件的配置都可以。

IOC创建对象方式

 

通过无参构造方法来创建

1、User.java

public class User { 
private String name;   public User() {       System.out.println("user无参构造方法"); 
}   public void setName(String name) { 
this.name = name;  }  
public void show(){     
System.out.println("name="+ name );  }}

2、beans.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.xsd">  
<bean id="user" class="com.kuang.pojo.User">  
<property name="name" value="kuangshen"/> 
</bean></beans>

3、测试类

@Testpublic void test(){ 
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); 
//在执行getBean的时候, user已经创建好了 , 通过无参构造  
User user = (User) context.getBean("user"); 
//调用对象的方法 .  
user.show();
}

结果可以发现,在调用show方法之前,User对象已经通过无参构造初始化了!

 

通过有参构造方法来创建

1、UserT . java

public class UserT {  
 private String name;  
 public UserT(String name) {  
     this.name = name;  }  
 public void setName(String name) {  
     this.name = name;  }  
 public void show(){ 
      System.out.println("name="+ name );  }}

2、beans.xml 有三种方式编写

<!-- 第一种根据index参数下标设置 -->
<bean id="userT" class="com.kuang.pojo.UserT">  
 <!-- index指构造方法 , 下标从0开始 -->  
 <constructor-arg index="0" value="kuangshen2"/>
</bean>
<!-- 第二种根据参数名字设置 -->
<bean id="userT" class="com.kuang.pojo.UserT">  
 <!-- name指参数名 -->  
 <constructor-arg name="name" value="kuangshen2"/>
</bean>
<!-- 第三种根据参数类型设置 -->
<bean id="userT" class="com.kuang.pojo.UserT">
   <constructor-arg type="java.lang.String" value="kuangshen2"/>
</bean>

3、测试

@Testpublic void testT(){
   ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); 
  UserT user = (UserT) context.getBean("userT"); 
  user.show();}

 

结论:在配置文件加载的时候。其中管理的对象都已经初始化了

ioc

原文:https://www.cnblogs.com/Liguangyang/p/12763009.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!