2、spring入门—Spring IOC容器

来源:互联网 发布:mac 显示器校准 编辑:程序博客网 时间:2024/04/30 22:27
#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?
  1. package com.imooc.ioc.interfaces;  
  2.   
  3. public interface OneInterface {  
  4.       
  5.     public void say(String word);  
  6.       
  7. }  
[java] view plain copy print?
  1. package com.imooc.ioc.interfaces;  
  2.   
  3. public class OneInterfaceImpl implements OneInterface {  
  4.       
  5.     public void say(String word) {  
  6.         return "Word from interface \"OneInterface\":"+word;  
  7.     }  
  8.   
  9. }  
在Java Resources/src下新建一个spring配置文件spring-ioc.xml:

[html] view plain copy print?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"      
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans   
  5.     http://www.springframework.org/schema/beans/spring-beans.xsd">  
  6.       
  7.     <bean id="oneinterface" class="com.imooc.ioc.interfaces.OneInterfaceImpl"></bean>  
  8. </beans>   
之后就可以创建一个测试类来验证我们配置的正确性了。在com.imooc.ioc.interfaces中新建一个Main类:


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

[java] view plain copy print?
  1. package com.imooc.ioc.interfaces;  
  2.   
  3. import org.junit.After;  
  4. import org.junit.Before;  
  5. import org.junit.Test;  
  6. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  7.   
  8. public class Main {  
  9.     private ClassPathXmlApplicationContext ctx;  
  10.   
  11.     @Before  
  12.     public void init(){  
  13.         ctx = new ClassPathXmlApplicationContext("spring-ioc.xml");  
  14.         ctx.start();  
  15.     }  
  16.     @Test  
  17.     public void testHello(){  
  18.         OneInterface oneinterface = (OneInterface)ctx.getBean("oneinterface");  
  19.         System.out.println(oneinterface.say("我的输入参数"));  
  20.     }  
  21.     @After  
  22.     public void detroy(){  
  23.         ctx.destroy();  
  24.     }  
  25.   
  26. }  

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



运行:



结果:



这样大体实现了老师的功能。


0 0
原创粉丝点击