spring(二)IOC

一、接口及面向接口编程

接口
1.用于沟通的中介物的抽象化

2.实体把自己提供给外界的一种抽象化说明,用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式。

3.对应Java接口即声明,声明了哪些方法是对外公开提供的

4.在Java8中,接口可以拥有方法体。

面向接口编程

1.结构设计中,分清层次及调用关系,每层只向外(上层)提供一组功能接口,各层间仅依赖接口而非实现类。

2.接口实现的变动不影响各层间的调用,这一点在公众服务中尤为重要。

3.“面向接口编程”中的“接口”是用于隐藏具体实现和实现多态性的组件。

二、什么是IOC

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

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

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




三、Spring的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 id="oneInterface" class="com.csdn.ioc.interfaces.OneInterfaceImpl"></bean>
	
 </beans>


public interface OneInterface {
	
	public void save(String arg);
	
}

public class OneInterfaceImpl implements OneInterface {
	
	public void say(String arg) {
		System.out.println("ServiceImpl say: " + arg);
	}

}

@RunWith(BlockJUnit4ClassRunner.class)
public class TestOneInterface extends UnitTestBase {

	public TestOneInterface() {
		super("classpath*:spring-ioc.xml");
	}
	
	@Test
	public void testSay() {
		OneInterface oneInterface = super.getBean("oneInterface");
		oneInterface.say("This is the test.");
	}

}
输出:serviceImpl say:This is the test.

四、Bean的初始化

1.基础:两个包

——org.springframework.beans

——org.springframework.context

——BeanFactory提供配置结构和基本功能,加载并初始化Bean

——ApplicationContext保存了Bean对象并在Spring中被广泛使用

2.方式,ApplicationContext

——本地文件

——Classpath

——Web应用中依赖servlet或Listener


五、Spring的常用注入方式

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

2.常用的两种注入方式

——设值注入

<?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="injectionService" class="com.csdn.ioc.injection.service.InjectionServiceImpl">
        	<property name="injectionDAO" ref="injectionDAO"></property>
        </bean>
        
        <bean id="injectionDAO" class="com.csdn.ioc.injection.dao.InjectionDAOImpl"></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="injectionService" class="com.csdn.ioc.injection.service.InjectionServiceImpl">
        	<constructor-arg name="injectionDAO" ref="injectionDAO"></constructor-arg>
        </bean>
        
        <bean id="injectionDAO" class="com.csdn.ioc.injection.dao.InjectionDAOImpl"></bean>
	
 </beans>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值