Spring框架IOC容器

接口

  • 用于沟通的中介物的抽象化
    接口是沟通中的一种说明,一种规范。
  • 实体把自己提供给外界的一种抽象化说明,用以由内部操作分离出外部沟通方法,使其能够修改内部而不影响外界其他实体与其交互的方式
    对外部说明了我会提供哪些功能,至于对内部是怎么实现的是不公开的;比如我有实现注册的功能,你只用告诉我手机号等信息就可以实现注册,但注册功能是如何实现的,逻辑是什么样的,怎么判断的,数据存储在哪等等,都是不公开的
  • 对应java接口即声明,声明哪些方法是对外公开提供的
    java里面有接口、抽象类、提供的类,其中接口有声明不能有实现;抽象类是既可以有声明,也可以有实现;类完全只能有实现
  • 在java8中,接口也可以有方法体
    在某种程度上接口和抽象类拥有同样的功能

面向接口编程

  • 结构设计中,需要分清层次及调用关系,每层只向外(上层)提供一组功能接口,各层间只依赖接口而非实现类
  • 接口实现的变动不影响各层之间的调用,这一点在公共服务中尤为重要
  • “面向接口编程”中的“接口”是用于隐藏具体实现和实现多态性的组件

什么是IOC

IoC是Inversion of Control的缩写,即控制反转的意思,是解决程序耦合性的一种思想。通常创建对象的时候使用new关键字,控制权由程序员控制,而"控制反转"是指new实例工作不由程序员来做而是交给Spring容器来做。解决程序耦合性的办法有很多,而依赖注入(DI)这一功能就是IOC思想的一种具体实现

Spring pom.xml配置:

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.0.RELEASE</version>
        </dependency>
</dependencies>

在这里插入图片描述

Spring bean.xml的配置:

<?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">
    
	//id 是自己定义的一个名字,相当于取一个别名 ,class是需要访问实现类的全限定类名
    <bean id="daoService" class="com.Test.Dao.DaoServiceImpl"></bean>
	<bean id="userService" class="com.Test.Service.UserServiceImpl"></bean>
</beans>

运行案例:

import com.Test.Dao.DaoService;
import com.Test.Service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {

    public static void main(String[] args){

        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        //daoService,userService就是之前bean.xml文件里的id
        DaoService dao = (DaoService)context.getBean("daoService");
        UserService user = (UserService)context.getBean("userService");

        System.out.println(dao);
        System.out.println(user);

    }
}

Application Context 是 spring 中较高级的容器,它采用立即加载的策略。而BeanFactory是采用延迟加载的策略,但是也可以加载配置文件中定义的 bean,将所有的 bean 集中在一起,当有请求的时候分配 bean。ApplicationContext包含 BeanFactory所有的功能,一般情况下,相对于 BeanFactory,ApplicationContext会更加优秀。

ApplicationContext的三个实现类:

1.ClassXmlPathApplicationContext:加载类路径下的配置文件,不需要提供 XML 文件 的完整路径,只需正确配置 CLASSPATH 环境变量即可,因为,容器会从CLASSPATH 中搜索 bean 配置文件。

2.FileSystemXmlApplicationContext:加载磁盘任意路径下的配置文件。

3.AnnotationConfingApplictionContext:用于读取注解创建容器。

​ ----相关参考见w3cschool文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值