1.版本

Spring版本:5.1.4
官方网站:www.spring.io

2.环境搭建

spring jar包

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

spring配置文件

1.配置文件的放置位置:任意
2.配置文件的命名:任意  建议:applicationContext.xml
3.以后应用Spring框架时,需要进行配置文件路径的设置。

3.Spring的核心API

ApplicationContext

 1.作用:Spring提供的 ApplicationContext这个工厂,用于对象的创建
2.好处:解耦合

ApplicationContext接口类型

1.接口:屏蔽实现的差异
2.非web环境:ClassPathXmlApplicationContext(main junit)不启用服务器
3.web环境:  XmlWebApplicationContext

重量级资源

1.ApplicationContext工厂的对象占用大量内存
2.不会频繁的创建对象:一个应用只会创建一个工厂对象!
3.ApplicationContext工厂:一定是线程安全的(多线程并发访问)

4.程序开发

1.创建类型
public class Person {}
2.配置文件的配置 applicationContext.xml<!--    id属性 名字(唯一)相当于properties中的key-->
<!--    class属性 配置全限定类名  相当于properties中的value--><bean id="person" class="com.dy.basic.Person"/>3.通过工厂类获得对象
ApplicationContext :ClassPathXmlApplicationContext//1.获得Spring的工厂 AppletContext接口不能实例化 要new它的实现类ApplicationContext ctx =  new ClassPathXmlApplicationContext("/appletContext.xml");// 2.通过工厂类获得对象 要强转 原因在上篇讲过Person person = (Person) ctx.getBean("person");

5.细节分析

名词解释

1.Spring工厂创建的对象,叫做bean或者组件(componet)
2.Spring工厂其他的相关方法://1.此重载方法不需要强转Person person1 = ctx.getBean("person", Person.class);//2.当前Spring的配置文件中,只能有一个bean的class的Person类型Person person2 = ctx.getBean(Person.class);//3.bean(对象)定义的名字 获取的是Spring工厂配置文件中所有bean标签的id值String[] beanDefinitionNames = ctx.getBeanDefinitionNames();//4.根据参数中的类型获取Spring配置文件中对应的id值String[] beanNamesForType = ctx.getBeanNamesForType(Person.class);//5.用于判断是否存在指定id值的bean  返回boolean型 不能判断name值if (ctx.containsBeanDefinition("person")) {System.out.println("true");}//6.用于判断是否存在指定id或者name值的beanctx.containsBean("person");

配置文件中的细节

1.只配置class属性<bean class="com.dy.basic.Person"/>Person person = ctx.getBean(Person.class);
通过此重载方法获得没有id值的对象
a)上述这种配置, 会有自动生成的id值
b)应用场景:如果这个bean只需要使用一次,那么就可以省略id值//如果这个bean会使用多次,或者被其他bean引用则需要设置id值
2.name属性:用于在Spring的配置文件中,为bean对象定义别名(小名)
与id相同点:1.ctx.getBean("id/name")都可以获取到对象2.<bean id="" class = ""等效<bean name="" class=""
区别://1.别名可以定义多个 但是id唯一//2.XML的id属性值命名要求:必须以字母开头(以前)//    name属性命名要求:没有要求,随意//  所以name属性应用在特殊命名的场景下:eg:/person
//  XML发展到了今天:id属性的限制:不存在 /person id可以特殊字符命名开头3.代码://5.用于判断是否存在指定id值的bean  返回boolean型 不能判断name值if (ctx.containsBeanDefinition("person")) {System.out.println("true");}//6.用于判断是否存在指定id或者name值的beanctx.containsBean("person");

============================================

6.Spring工厂的底层实现原理(简易版)

7.思考

问题:未来在开发过程中,是不是所有的对象,都会交给SpringI厂来创建呢?
回答:理论上是的,但是有特例:实体对象( entity)是不会交给Spring创建,它是由持久层框架进行创建。
实体对象封装数据库中表的数据,数据必须要操作数据库,Spring不知道数据库。

本系列文章从Spring5原理开始深入浅出,从工厂特性=>依赖注入–IOC=>AOP编程=>Spring事务=>纯注解开发。本文来自观看B站孙帅Spring教程后做的笔记。持续更新…

第二章--第一个Spring程序相关推荐

  1. 第一章第一个c#程序上机_我从第一个#100DaysOfCode中学到的东西

    第一章第一个c#程序上机 On May 17th, I completed my first round of #100DaysOfCode. In case you haven't heard, # ...

  2. 从零开始Android游戏编程(第二版) 第二章 创建第一个程序Hello Tank

    第二章 创建第一个程序Hello Tank 难度:容易 现在开始,我们要真正写作Android程序了.虽然前面安装过程那么复杂,但是写起程序来却是非常简单.而且为了让大家有一个直观的认识,本文不会叙述 ...

  3. 第一个spring程序

    第一个spring程序: 第一步:导入jar包. 新建maven项目: <dependency><groupId>org.springframework</groupId ...

  4. 编写第一个Spring程序——IOC实现

    第一个Spring程序 IOC范例 1.新建maven工程 2.在pom.xml文件中导入相关jar包 <!-- https://mvnrepository.com/artifact/org.s ...

  5. 【Spring 工厂】工厂设计模式、第一个Spring程序细节分析、整合日志框架

    Spring 引言 什么是 Spring? 工厂设计模式 简单工厂的设计 通用工厂的设计 通用工厂的使用方式 第一个 Spring 程序 环境搭建 Spring 的核心API 程序开发 细节分析 Sp ...

  6. 《C Primer Plus》第二章——C语言概述(程序示例与解释,提高程序可读性,函数的定义与使用,调试,关键字,复习题与编程练习)

    文章目录 第二章-C语言概述 本章内容 简单的C程序示例 示例解释 快速概要 程序细节 简单程序的结构 提高程序可读性的技巧 进一步使用C 多个函数 调试程序 语法错误 语义错误 程序状态 关键字和保 ...

  7. 第二章 装配Bean(Spring in action,3th)

                                         第二章 装配Bean 创建应用对象之间协作关系的行为通常被称为装配(wiring),是依赖注入的本质. XML方式声明Bean ...

  8. python语言程序设计基础第二章答案_python语言程序设计基础(嵩天版),第二章程序练习题...

    python语言程序设计基础(嵩天版),第二章程序练习题 欢迎访问江南烧酒的博客 2.2汇率兑换程序.按照1美元=6人民币汇率编写一个美元和人民币的双向兑换程序. """ ...

  9. 关东升python从小白到大牛_《Python从小白到大牛》第3章 第一个Python程序

    本章以HelloWorld作为切入点,介绍如何编写和运行Python程序代码. 运行Python程序主要有两种方式: 1.交互式方式运行 2.文件方式运行 本章介绍这两种运行方式实现HelloWorl ...

最新文章

  1. linux日志手机,通过 shell 脚本 自动发送 log日志 文件内容 到手机邮箱
  2. Oracle排序中NULL值处理的五种常用方法
  3. MYSQL批量插入数据库实现语句性能分析
  4. nyoj 174 Max Sequence(最大子串和变形)
  5. CentOS安装php mbstring的扩展
  6. 通过 Feature Level 动态控制 SAP Spartacus 的页面显示
  7. [复习]莫比乌斯反演,杜教筛,min_25筛
  8. java如何导入和导出ex_SpringBoot中关于Excel的导入和导出
  9. 从零开始搭建神经网络并将准确率提升至85%
  10. Unity3D 脚本模板插件
  11. Java的括号使用规则_java编码规范
  12. 2021年认证杯SPSSPRO杯数学建模D题(第一阶段)停车的策略全过程文档及程序
  13. 公司估值与财务分析指标
  14. 顶部标题栏的布局设计
  15. IntelliJ IDEA现有项目连接SVN(2)
  16. 视频号拍摄技巧和制作方法有哪些?
  17. 计算机研究生院校全国排名2015,2018年武书连中国大学排行榜(完整版)_计算机考研院校...
  18. 人立方六度搜索的界面设计的来龙去脉
  19. 跟我学springboot(二十五)springboot-过滤器之拦截不需要走过滤器的链接使用方法
  20. delphi 获取本机IP地址和MAC地址

热门文章

  1. python制作萝莉御姐语音包
  2. 富士W系列服务器,怀念一下曾经的FUJI GA645W
  3. 计算机正确e mail,电子邮件(E-mail)是____
  4. iphone7测试软件,iphone7跑分成绩
  5. 如何做出一份赏心悦目的PPT
  6. [算是原创否?]Arch Linux 下的BRAS配置方法 (感谢hellwolf学长!)
  7. 网络货运系统源码 网络货运平台源码,货运APP源码 货物运输管理源码
  8. MongoDB详解(一)
  9. SS00003.elasticsearch——|HadoopElasticSearch集中式日志分析系统.v03|——|Elasticsearch.v03|
  10. 数字万用表测试直流电流注意事项