一.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. shell map数据结构的实现

    前言     Bash默认不支持二维数组,如果我们想实现map 数据结构,可以安装如下的方式来进行构造   预备知识     eval:  它是shell内建命令,用于字符串的解析.它会首先扫描命令行 ...

  2. AJ学IOS(07)UI之UITextField代理事件_类似QQ登陆窗口的简单实现

    AJ分享,必须精品 先看效果图: 学习代码 // // NYViewController.m // 05-UITextField事件_UIKit复习 // // Created by apple on ...

  3. CTR学习笔记&代码实现3-深度ctr模型 FNN->PNN->DeepFM

    这一节我们总结FM三兄弟FNN/PNN/DeepFM,由远及近,从最初把FM得到的隐向量和权重作为神经网络输入的FNN,到把向量内/外积从预训练直接迁移到神经网络中的PNN,再到参考wide& ...

  4. 深入浅出node.js游戏服务器开发1——基础架构与框架介绍

    2013年04月19日 14:09:37 MJiao 阅读数:4614   深入浅出node.js游戏服务器开发1——基础架构与框架介绍   游戏服务器概述 没开发过游戏的人会觉得游戏服务器是很神秘的 ...

  5. Fiddler抓包过滤

    1.User Fiters启用 2.Action Action:Run Filterset now是否运行,Load Filterset加载,Save Filterset保存: 3.Hosts过滤 Z ...

  6. CVE-2019-0193 Apache solr velocity模块漏洞

    Solr简单介绍 Solr是建立在Apache Lucene ™之上的一个流行.快速.开放源代码的企业搜索平台. Solr具有高度的可靠性,可伸缩性和容错能力,可提供分布式索引,复制和负载平衡查询,自 ...

  7. 【转】动态规划之最长公共子序列(LCS)

    [原文链接]最长公共子序列(Longest Common Subsequence,简称 LCS)是一道非常经典的面试题目,因为它的解法是典型的二维动态规划,大部分比较困难的字符串问题都和这个问题一个套 ...

  8. kubernetes的Statefulset介绍

    StatefulSet是一种给Pod提供唯一标志的控制器,他可以保证部署和扩展的顺序. Pod一致性 包含次序(启动和停止次序).网络一致性.此一致性和Pod相关.与被调度到哪个Node节点无关. 稳 ...

  9. linux内核第一宏 container_of

    内核第一宏 list_entry()有着内核第一宏的美称,它被设计用来通过结构体成员的指针来返回结构体的指针.现在就让我们通过一步步的分析,来揭开它的神秘面纱,感受内核第一宏设计的精妙之处. 整理分析 ...

  10. [redis]SDS和链表

    一.SDS 1.SDS结构体 redis3.2之前:不管buf的字节数有多少,都用 4字节的len来储存长度,对于只存短字符串那么优点浪费空间,比如只存 name,则len=4 则只需要一个字节8位即 ...