您的位置:首页 > 编程语言 > Java开发

2、spring入门—Spring IOC容器

2016-11-04 10:06 260 查看
#spring——IOC及bean容器#

一 接口

接口:只能有声明不能有实现,支持多重继承(在java8中接口可以拥有方法体)

抽象类:即可以有包含实现的声明也可以有不包含实现的声明

类:声明必须包含实现

接口实现的变动不会影响其他各层的调用,对公共服务非常重要

二 IOC——控制反转

控制反转:控制权的转移,应用程序本身不负责依赖对象的创建与维护,而是由外部容器负责创建和维护。

依赖注入(DI):是一种实现方式,由IOC容器在运行期间,动态的将某种依赖关系注入到对象之中

目的:创建对象并且组装对象之间的关系

三 Spring的bean配置

在IOC容器中将所有的控制对象称作bean,Spring对于bean的使用有两种方式:基于spring-ioc.xml的配置和注解。

注意xml中关于bean的配置程序段

<bean id="oneInterface(自定义)" class="配置的实现类"></bean>

使用示例:

public void test(){

OneInterface interface=super.getBean("oneInterface");//获取bean,不需要new对象

interface.hello();//调用函数
}  

#spring——Spring注入方式#

Spring是指在启动Spring容器加载bean配置的时候,完成对变量的赋值行为

常用注入方式:设值注入,构造注入

注意:参数的名称必须保持一致!!!!

设值注入(不需要显示地调用set方法,会根据xml的相关配置自动进行调用。)

利用属性或成员变量的set方法进行注入

其中property里面的name是需要注入参数的成员变量的名称,ref是注入参数引入bean的名称

构造注入

使用constructor-arg

根据ref,将ref所指对象的实例赋值给name所指成员变量

<!--         <bean id="injectionService" class="com.imooc.ioc.injection.service.InjectionServiceImpl"> -->

<!--         <property name="injectionDAO" ref="injectionDAO"></property> -->

<!--         </bean> -->

<bean id="injectionService" class="com.imooc.ioc.injection.service.InjectionServiceImpl">

        <constructor-arg name="injectionDAO" ref="injectionDAO"></constructor-arg>

        </bean>

        

        <bean id="injectionDAO" class="com.imooc.ioc.injection.dao.InjectionDAOImpl"></bean>

以下转载自http://blog.csdn.net/qql2011/article/details/52870940

从慕课网的java工程师路径一路学上来,感觉很顺利,但鉴于Spring系列对新手不太友好,写点我的理解希望对新手有点帮助!

慕课网地址:http://www.imooc.com/learn/196



1、搭建环境

由于老师用的环境比较复杂,我们暂时不需要那么复杂的环境,可以先搭建一个简单点的!注重对知识的学习即可:

在eclipse中新建web工程:



填入项目名,点击呢next->next,生成web.xml打勾,完成:



引入jar包,除了老师所给的spring1、2外还需要引入junit-4.10.jar包和commons-logging-1.1.jar

可以从我的百度云下载:http://pan.baidu.com/s/1mijRa2W



这样就可以开始学习了。



2、创建接口及实现

在Java Resources/src新建新建一个包com.imooc.ioc.interfaces,并在包里新建一个接口OneInterface和一个实现OneInterfaceImpl:

[java]
view plain
copy
print?

package com.imooc.ioc.interfaces;  
  
public interface OneInterface {  
      
    public void say(String word);  
      
}  



package com.imooc.ioc.interfaces;

public interface OneInterface {

public void say(String word);

}


[java]
view plain
copy
print?

package com.imooc.ioc.interfaces;  
  
public class OneInterfaceImpl implements OneInterface {  
      
    public void say(String word) {  
        return "Word from interface \"OneInterface\":"+word;  
    }  
  
}  



package com.imooc.ioc.interfaces;

public class OneInterfaceImpl implements OneInterface {

public void say(String word) {
return "Word from interface \"OneInterface\":"+word;
}

}
在Java Resources/src下新建一个spring配置文件spring-ioc.xml:

[html]
view plain
copy
print?

<?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="oneinterface" class="com.imooc.ioc.interfaces.OneInterfaceImpl"></bean>  
</beans>   



<?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="oneinterface" class="com.imooc.ioc.interfaces.OneInterfaceImpl"></bean>
</beans>
之后就可以创建一个测试类来验证我们配置的正确性了。在com.imooc.ioc.interfaces中新建一个Main类:

老师视频中用的父类UnitTestBase是自己自定义的,我们需要用的前面junit中学到的知识自己写个简单点的测试方法:

[java]
view plain
copy
print?

package com.imooc.ioc.interfaces;  
  
import org.junit.After;  
import org.junit.Before;  
import org.junit.Test;  
import org.springframework.context.support.ClassPathXmlApplicationContext;  
  
public class Main {  
    private ClassPathXmlApplicationContext ctx;  
  
    @Before  
    public void init(){  
        ctx = new ClassPathXmlApplicationContext("spring-ioc.xml");  
        ctx.start();  
    }  
    @Test  
    public void testHello(){  
        OneInterface oneinterface = (OneInterface)ctx.getBean("oneinterface");  
        System.out.println(oneinterface.say("我的输入参数"));  
    }  
    @After  
    public void detroy(){  
        ctx.destroy();  
    }  
  
}  



package com.imooc.ioc.interfaces;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {
    private ClassPathXmlApplicationContext ctx;

    @Before
    public void init(){
        ctx = new ClassPathXmlApplicationContext("spring-ioc.xml");
        ctx.start();
    }
    @Test
    public void testHello(){
        OneInterface oneinterface = (OneInterface)ctx.getBean("oneinterface");
        System.out.println(oneinterface.say("我的输入参数"));
    }
    @After
    public void detroy(){
        ctx.destroy();
    }

}


这样就可以运行Junit测试了,整体预览:



运行:



结果:



这样大体实现了老师的功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: