一.spring的作用
spring 就是为了让我们以后能够做大的项目准备的。spring核心的功能就是一个工厂模式,spring相当于为你的项目专门成立一个一个工厂,这个工厂负责创建对象 ,维护对象之间的关系。你需要对象了,以前是直接new,现在
从spring 的工厂里面获取。

spring 的核心完成两个工作:
1,创建对象
2,维护对象之间的依赖关系。
二.spring的基本配置
1.创建java项目,导入jar包
2.在src下创建主配置文件applicationContext
3.创建实体类
  创建Display的接口:

  创建Display的两个实现类:   

LgDisplay:
SumSingDisplay:

  创建CPU接口:

创建CPU接口是实现类InterlCpu:

创建E470笔记本的类,这个类要依赖两个属性一个是显示器Display,一个是Cpu:
/* 组装E470笔记本
*/
public class E470 {
//这里需要依赖接口
private Display display;
private Cpu cpu;
/**
* 笔记本工作的方法
*/
public void work(){
//cpu进行计算
cpu.calc();
//显示器显示
display.display();
}
public Display getDisplay() {
return display;
}
public void setDisplay(Display display) {
this.display = display;
}
public Cpu getCpu() {
return cpu;
}
public void setCpu(Cpu cpu) {
this.cpu = cpu;
}
}
4.在spring的工厂中创建对象
<!--创建一个Lg显示器的对象
spring中以bean的方式管理对象,一个bean就代表创建了一个对象
class 配置类的完全限定名,表明该对象是哪个类的对象
id 配置类的唯一标识
-->
<bean id="lgDisplay" class="com.aaa.spring.entity.LgDisplay"></bean>
<!--创建一个三星显示器的对象-->
<bean id="sumSingDisplay" class="com.aaa.spring.entity.SumSingDisplay"></bean>
<!--创建英特尔cpu的对象-->
<bean id="interlCpu" class="com.aaa.spring.entity.InterlCpu"></bean>
<!--创建E470笔记本的对象-->
<bean id="e470" class="com.aaa.spring.entity.E470">
<!--维护对象之间的依赖关系
ref是引用哪个对象,这里要写对象的id
-->
<property name="display" ref="lgDisplay"></property>
<property name="cpu" ref="interlCpu"></property>
</bean>
</beans>
5.测试
/**
* 测试从spring工厂中获取对象
*/
public class Test01 {
public static void main(String[] args) {
//创建spring的工厂类的对象
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//从工厂中获取对象
E470 e470 = (E470)context.getBean("e470");
//调用对象的方法
e470.work();
}
}
总结:
spring的作用 1,创建对象 2,维护对象之间的关系
IOC 控制反转 主要是指在项目开发中对象创建方式的变化,原来不使用spring 创建对象是在程序中创建的,这样
对象和程序的耦合性就较强,不利用之后项目的扩展和维护。使用了spring之后,对象创建就放到工厂中进行了。
DI 依赖注入 主要指的对象之间关系的维护。原来在程序中如果一个对象要依赖另外一个对象了,可以直接调用对
象属性的setter方法。使用spring之后,我们通过spring依赖注入的方式维护对象之间的关系。
三.spring的BeanFactory和ApplicationContext
BeanFactory是ApplicationContext的父接口,BeanFactory接口定义了一些spring工厂最底层的使用的方法,一
般在spring的源码中我们使用BeanFactory,但是该类不建议程序员直接使用,建议程序员使用
ApplicationContext接口,该接口对BeanFactory功能进行了一些扩展:
1,提供spring的国际化支持
2,提供了事物的处理方式
3,可以加载多个主配置文件
以后一般开发中使用ApplicationContext接口,但是接口不能直接使用,我们可以同
ClassPathXmlApplicationContext类来实例化这个接口。我们也可以使用FileSystemXmlApplicationContext来实例化该接口:

spring Code(spring 核心)的更多相关文章

  1. 菜鸟刷面试题(四、Spring/Spring MVC/Spring Boot/Spring Cloud篇)

    目录: 为什么要使用 spring? 解释一下什么是 aop? 解释一下什么是 ioc? spring 有哪些主要模块? spring 常用的注入方式有哪些? spring 中的 bean 是线程安全 ...

  2. 最全面的改造Zuul网关为Spring Cloud Gateway(包含Zuul核心实现和Spring Cloud Gateway核心实现)

    前言: 最近开发了Zuul网关的实现和Spring Cloud Gateway实现,对比Spring Cloud Gateway发现后者性能好支持场景也丰富.在高并发或者复杂的分布式下,后者限流和自定 ...

  3. Spring Security(四) —— 核心过滤器源码分析

    摘要: 原创出处 https://www.cnkirito.moe/spring-security-4/ 「老徐」欢迎转载,保留摘要,谢谢! 4 过滤器详解 前面的部分,我们关注了Spring Sec ...

  4. spring中基础核心接口总结

    spring中基础核心接口总结理解这几个接口,及其实现类就可以快速了解spring,具体的用法参考其他spring资料 1.BeanFactory最基础最核心的接口重要的实现类有:XmlBeanFac ...

  5. 获取spring的IOC核心容器,并根据id获取对象

    public class Client { /** * 获取spring的IOC核心容器,并根据id获取对象 * ApplicationContext的三个常用实现类 * classPathXmlAp ...

  6. Spring Boot 最核心的 25 个注解,都是干货!

    学习和应用 Spring Boot 有一些时间了,你们对 Spring Boot 注解了解有多少呢?今天栈长我给大家整理了 Spring Boot 最核心的 25 个注解,都是干货! 你所需具备的基础 ...

  7. Spring Boot 最核心的 3 个注解详解

    最近面试一些 Java 开发者,他们其中有些在公司实际用过 Spring Boot, 有些是自己兴趣爱好在业余自己学习过.然而,当我问他们 Spring Boot 最核心的 3 个注解是什么,令我失望 ...

  8. Spring MVC的核心控制器DispatcherServlet的作用

    关于Spring MVC的核心控制器DispatcherServlet的作用,以下说法错误的是(  )? 它负责接收HTTP请求 加载配置文件 实现业务操作 初始化上下应用对象ApplicationC ...

  9. spring框架 AOP核心详解

    AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,是个比较经典的例子. 一 AOP的基本概念 (1)Asp ...

  10. 【转】Spring学习---Spring IoC容器的核心原理

    [原文] Spring的两个核心概念:IoC和AOP的雏形,Spring的历史变迁和如今的生态帝国. IoC和DI的基本概念 IoC(控制反转,英文含义:Inverse of Control)是Spr ...

随机推荐

  1. JVM崩溃的原因及解决!

    JVM崩溃的原因及解决! 前些天,搞JNI的时候,报了个JVM崩溃的错.错误信息如下: # # An unexpected error has been detected by HotSpot Vir ...

  2. 视频图文教学 - 用最快的速度把 DotNet Core Blazor 程序安装到 树莓派中 并且用网页控制 GPIO 闪灯

    前言 dotnet core 在3.0时代已经发展得很好. 尤其是在跨平台方面更已经是达到了很实用的阶段. 作为 dotnet 程序员, 应该对 Linux 有充分的了解, 也可以在业余时间玩玩硬件, ...

  3. 学习Salesforce | 带你解锁Superbadge的真正作用

    Superbadges是对专业知识和技能的一种认可,通过解决企业在实际业务场景中遇到的复杂问题,展示你的Salesforce专业技能. 要想获得Superbadge,首先需要完成Trailhead徽章 ...

  4. C++ 11 +,开坑。

    最近换新工作了.工作中需要用到高端的c++11的一些操作,至于我后面又plus一下还是因为可能是c++14或者17中提供的一些操作.反正都是c++11以及之后的一些特性. 首先,今天看一下关于函数模板 ...

  5. JS 获取浏览器

    function getInfo() { var s = ""; s = " 网页可见区域宽:" document.body.clientWidth; s = ...

  6. 笔记本安装ubuntu18.08,解决过程中出现的各种问题

    笔记本安装ubuntu18.08,解决过程中出现的各种问题 1.做启动U盘 在官网下载要安装的镜像,使用软碟通制作U盘安装盘 文件 -- 打开 然后 启动 -- 写入硬盘映像 -- 选择你的u盘 -- ...

  7. [Asp.Net Core] Blazor Server Side 扩展用途 - 配合CEF来制作客户端浏览器软件

    前言 大家用过微信PC端吧? 这是用浏览器做的. 用过Visual Studio Code吧? 也是用浏览器做的. 听说, 暴雪客户端也包含浏览器核心?? 在客户端启动一个浏览器, 并不是什么难事了. ...

  8. tp5--开发规范

    在日常开发的过程中,写代码都要有一定的规范,不然可读取就太差了,所以为了以后的维护.对接,好的代码规定是必须的. 以下是我自己对自己提出的要求: 全部: 1)  每个方法都要写好备注(@retrun作 ...

  9. tp5中“前置操作”和“钩子函数”的区别

    1.实行顺序: 以下都是标为删除前的操作: 点击删除  ->  前置操作  ->  删除方法(用模型删除)  ->  触发钩子函数(删除)  ->  删除成功 2.传入的参数: ...

  10. hash算法解决冲突的方案

    1, 开放定址法: 所谓的开放定址法就是一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入 公式为:fi(key) = (f(key)+di) MOD m ...