Spring学习之路(二)

Spring与IOC

    控制反转(IOC,Inversion of Control)是一个概念,是一种思想。是将在传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转就是对象控制权的转移,从程序代码本身反转到外部容器。

    IOC的实现方式多种多样,当前比较流行的方式有两种:依赖注入和依赖查找,其中依赖注入的方式应用更为广泛。

    依赖查找:Dependency Lookup,DL,容器提供回调接口和上下文环境给组件,程序代码需要提供具体的查找方式。

    依赖注入:Dependebcy Injection,DI,程序代码不做定位查询,这些工作由容器自行完成。

    依赖注入DI是指程序在运行的过程中,若需要调用另一个对象协助是。无需在代码中创建被调用者,而是依赖于外部容器,由外部容器创建后传递给程序。

    Spring的依赖注入对调用者和被调用者几乎没有任何要求,完全支持POJO之间依赖关系的管理。

    依赖注入是目前最优秀的解耦方式。依赖注入使得Spring的Bean之间以配置文件的形式组织在一起,而不是以硬编码的形式耦合在一起。

Spring开发实例

    一、引入相关的jar包

        1、导入相关的Spring的jar包:

Spring的四个jar包

        2、导入日志相关的jar包和Junit的相关jar包:

Spring全部

    二、新建applicationContext.xml用来当做Spring的配置文件

<?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">

    
</beans>

    该配置和文件的内容可以通过在官网下载Spring先关jar包时可以在里面找到,路径为:

    spring-framework-4.2.1.RELEASE/docs/spring-framework-reference/html/xsd-configuration.html

    三、创建相关的包结构,如下图:

    四、在接口中创建相关的方法并在实现类中实现

    接口中的方法为:

public interface IStudentService {
	void some();
}

    实现方法为:

public class IStudentServiceImpl implements IStudentService{
	public void some(){
		System.out.println("执行some()方法");
	}
}

    五、在applicationContext.xml配置文件中添加bean,用于定义实例对象,一个实例对应一个bean,代码如下:

<?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 definitions here -->
    <!-- id:该属性是 Bean 实例的唯一标识,程序通过 id 属性访问 Bean,
             Bean 与 Bean 间的依赖关系也是通过 id 属性关联的。
      class:指定该 Bean 所属的类,注意这里只能是类,不能是接口。 -->
    <bean id="studentService" class="com.springdemo.ServiceImpl.IStudentServiceImpl"></bean>

</beans>

    六、编写测试类

public class Test {
	public static void main(String[] args) {
		//获取容器
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		
		//从容器中获取对象
		IStudentService service = (IStudentService)context.getBean("studentService");
		service.some();
	}
}

小结:

    如果在该例子中不适用Spring方法,那么就需要在测试类中定义IStudentServiceImpl类的对象,在将该对象实例化之后,调用相关的方法,在该例子中并没有体现出Spring的优势,但是当在具有多个类的时候,还使用传统的方法相对来说比较繁琐,而且也不符合大型工程中面向接口编程的要求。此时使用Spring的方式进行定义,可以通过ApplicationContext context来获取ClassPathXmlApplicationContext("applicationContext")中的内容,之后从容器中获取接口对象,就可以使用接口对象调用接口中定义的方法(此时的方法已经在实现类中被实现)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值