1. 接口及面向接口编程

1.1. 接口

用于沟通的中介物的抽象化

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

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

在JAVA8中,接口可以拥有方法体

1.2. 面向接口编程

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

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

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

 package com.imooc.ioc.interfaces;

 public class Main {
public static void main(String[] args) {
OneInterface oif = new OneInterfaceImpl();
System.out.println(oif.hello("word"));
}
}
 package com.imooc.ioc.interfaces;

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

 public interface OneInterface {
String hello(String word);
}

2. 什么是IOC

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

DI(依赖注入)是其一种实现方式

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

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/spring-beans.xsd"> <bean id="oneInterface" class="com.imooc.ioc.interface.OneInterfaceImpl"></bean>
</beans>

4. 单元测试

——下载junit-*.jar并引入工程

——创建UnitTestBase类,完成对Spring配置文件的加载、销毁

——所有的单元测试类都继承自UnitTestBase,通过它的getBean方法获取想要得到的对象

——子类(具体执行单元测试的类)加注解:@RunWith(BlockJUnit4ClassRunner.class)

——单元测试方法加注解:@Test

——右键选择要执行的单元测试方法执行或者执行一个类的全部单元测试方法

5. Bean的初始化

基础:两个包

——org.springframework.beans

——org.springframework.context

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

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

方式,ApplicationContext

——本地文件

 FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext("F:/workspace/appcontext.xml");

——Classpath

 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-context.xml");

——Web应用中依赖Servlet或Listener

 <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>context</servlet>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-satrtup>
<servlet>

6. Spring的常用注入方式

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

常用的两种注入方式

6.1. 设值注入

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

6.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/spring-beans.xsd"> <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>
</beans>

IOC及Bean容器的更多相关文章

  1. Ioc及Bean容器(三)

    专题一 IoC 接口及面向接口编程 什么是 IoC Spring 的Bean配置 Bean 的初始化 Spring 的常用注入方式 接口 用于沟通的中介物的抽象化 实体把自己提供给外界的一种抽象化说明 ...

  2. Spring学习二----------IOC及Bean容器

    © 版权声明:本文为博主原创文章,转载请注明出处 接口 用于沟通的中介物的抽象化 实体把自己提供给外界的一种抽象化说明,用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的 ...

  3. Spring——IOC与Bean容器

    [IOC] (1)IOC:控制反转,控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护.也就是说由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中 (2)DI: ...

  4. Spring课程 Spring入门篇 2-1 IOC和bean容器

    课程链接: 本节讲了5部分内容,6为项目demo: 1 接口及面向接口编程 2 什么是IOC 3 Spring的bean配置 4 Bean的初始化 5 Demo 自己理解: 1 高层模块和底层模块都依 ...

  5. IOC和bean容器

  6. Spring 框架 详解 (三)-----IOC装配Bean

    IOC装配Bean: 1.1.1 Spring框架Bean实例化的方式: 提供了三种方式实例化Bean. * 构造方法实例化:(默认无参数) * 静态工厂实例化: * 实例工厂实例化: 无参数构造方法 ...

  7. Spring框架---IOC装配Bean

    IOC装配Bean (1)Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 下面先写这三种方法的applicat ...

  8. Spring(一)之IOC、bean、注入

    [TOC] spring简介 首先它是一个开源的.用来简化企业级应用开发的框架. Spring为编写企业应用程序提供了轻量的解决方案,同时仍然支持使用声明式事务. 用RMI或web service远程 ...

  9. Spring框架(2)---IOC装配Bean(xml配置方式)

    IOC装配Bean (1)Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 下面先写这三种方法的applicat ...

随机推荐

  1. 解决Cannot find MySQL header files under /usr/include/mysql的错误

    按照下面的步骤能成功,亲测.转帖,做笔记 编译php-5.5-6的mysql支持,出现Cannot find MySQL header files under /usr/include/mysql. ...

  2. flex 4.6 移动开发 app.xml配置说明

    <?xml version="1.0" encoding="utf-8" standalone="no"?> <appli ...

  3. 网络内容缓存CDN的工作原理

    网络内容缓存CDN的工作原理 CDN的全称是Content Delivery Network,即内容分发网络CDN的目的就是提高用户访问网站的响应速度提速的基本思路例如你的网站服务器是在北京,这时有一 ...

  4. .net添加下拉框

    aspx文件 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="DropDownL ...

  5. Evolutionary Computing: 2. Genetic Algorithm(1)

    本篇博文讲述基因算法(Genetic Algorithm),基因算法是最著名的进化算法. 内容依然来自博主的听课记录和教授的PPT. Outline 简单基因算法 个体表达 变异 重组 选择重组还是变 ...

  6. django中“url映射规则”和“服务端响应顺序”

    1.django搜索路径 使用 import 语句时,Python 所查找的系统目录清单.      查看方式:         import sys        print sys.path   ...

  7. python中requests

    #发送无参数的get请求import requests def get_html(url): res = requests.get(url) return res.text #发送无参数的post请求 ...

  8. C++学习之:括号匹配与栈的使用

    #include <stack> using std::stack ; 变量定义: stack<T>  stackName ; 成员函数: 成员函数 功能 bool  empt ...

  9. 【原创】Mac os 10.10.3 安装xgboost

    大家用的比较多的是Linux和windows,基于Mac os的安装教程不多, 所以在安装的过程中遇到很多问题,经过较长时间的尝试,可以正常安装和使用, [说在前面]由于新版本的Os操作系统不支持op ...

  10. js 扩展Array支持remove方法

    /* * 方法:Array.remove(dx) 通过遍历,重构数组 * 功能:删除数组元素. * 参数:dx删除元素的下标. */ Array.prototype.remove = function ...