代码不是看出来的,而是敲出来的,欢迎关注公众号【秃头程序员】,收藏教程

步骤一:框架概述

所谓的框架其实就是程序的架子,在这个程序的架子中,搭建起程序的基本的骨架,针对程序的通用问题给出了便捷的解决方案,可以使开发人员 基于框架快速开发具体的应用程序。

常见的框架:

  • SSH(Struts2+Spring+Hibernate)

  • SSM(SpringMVC+Spring+MyBatis)

Spring是一个Service层的框架,可以整合许多其它框架进行工作。Spring的主要技术是 IOC(DI) AOP。IOC - 控制反转(依赖注入)。AOP - 面向切面编程。

步骤二:为MyEclipse配置Spring的约束

Spring本身是基于xml配置来工作的,在使用Spring的过程中不可避免的要编写大量xml配置,Spring官方提供了这些xml文件的编写规范,这是通过提供xml的约束文件来实现的。

所谓的xml的约束其实是一种限定xml文件写法的技术,主要分为两种:

  • DTD,通常文件的后缀.dtd

  • Schema,通常文件的后缀为.xsd

Spring提供了Schema格式的约束,来限定Spring配置文件的写法。开发人员可以通过阅读Spring提供的约束文件来了解Sprinig的xml配置的写法。但是这个过程比较麻烦,通常我们会将约束文件交给开发工具管理,开发工具可以通过解析约束文件了解xml的写法,并在需要时为开发者提供标签提示。

a. 将Spring的约束文件交给MyEclipse管理:

1) 将spring的压缩包解压一份放置到到一个固定目录中,要注意的是路径中不可以有中文或空格。

2) 打开MyEclipse的/window/preferences,配置其中的XML Catalog

    3) 点击Add按钮,在新弹出的选项卡中选择刚解压的Spring目录下schema目录中想要导入的.xsd文件,并且设定好名称空间,通常就是在自动识别的名称空间之加上/文件名,点击确定就可以使MyEclipse管理该约束文件了。

b. 通过xml约束文件自动生成符合约束格式的xml:

1) 新建xml文件,选择BasicTemplates方式

2) 设定模板

3) 选择通过schema文件创建一个xml

4) 选择之前导入的 schema文件

5) 指定根标签,及标签前缀,通常可以将前缀置为空,方便后续使用

6) 确定之后即可产生符合格式的xml

c. 配置xml模版,用来快速生成xml:

1) 在MyEclipse的window/preferences中配置新模版

2) 设定模版

3) 使用模版,在xml文件中输入模版名称,可以通过自动提示插入模版内容

步骤三:Spring IOC

1. IOC(DI) - 控制反转(依赖注入)

所谓的IOC称之为控制反转,简单来说就是将对象的创建的权利及对象的生命周期的管理过程交由Spring框架来处理,从此在开发过程中不再需要关注对象的创建和生命周期的管理,而是在需要时由Spring框架提供,这个由spring框架管理对象创建和生命周期的机制称之为控制反转。而在 创建对象的过程中Spring可以依据配置对对象的属性进行设置,这个过称之为依赖注入,也即DI。

2.IOC的入门案例

  • 下载Spring

访问Spring官网,下载Spring相关的包

  • 解压下载好的压缩包

其中包含着Spring的依赖包

  • 创建一个java项目

spring并不是非要在javaweb环境下才可以使用,一个普通的java程序中也可以使用Spring。

  • 导入Spring的libs目录下IOC相关的jar包

  • 创建Spring的配置文件

Spring采用xml文件作为配置文件,xml文件名字任意,但通常都取名为applicationContext.xml,通常将该文件放置在类加载的目录里下(src目录),方便后续使用。

  • 创建bean类,并在spring中进行配置交由spring来管理

<?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-3.2.xsd">        <bean id="person" class="cn.tedu.beans.Person"></bean></beans>
  • 在程序中通过Spring容器获取对象并使用

public class Person_Test {        @Test        /**         * SpringIOC的入门案例         */        public void  test1(){                ApplicationContext context =                                 new ClassPathXmlApplicationContext("applicationContext.xml");                Person p = (Person) context.getBean("person");                p.say();        }}

3.IOC的实现原理

在初始化一个Spring容器时,Spring会去解析指定的xml文件,当解析到其中的<bean>标签时,会根据该标签中的class属性指定的类的全路径名,通过反射创建该类的对象,并将该对象存入内置的Map中管理。其中键就是该标签的id值,值就是该对象。

之后,当通过getBean方法来从容器中获取对象时,其实就是根据传入的条件在内置的Map中寻找是否有匹配的键值,如果有则将该键值对中保存的对象返回,如果没有匹配到则抛出异常。

由此可以推测而知:

默认情况下,多次获取同一个id的bean,得到的将是同一个对象。

即使 是同一个类,如果配置过多个<bean>标签具有不同的id,每个id都会在内置Map中有一个键值对,其中的值是这个类创建的不同的对象

同一个<beans>标签下不允许配置多个同id的<bean>标签,如果配置则启动抛异常

关注公众号【秃头程序员】,不错过Spring框架自学之路(二)

(原创文章文字图片禁止转载,禁止用于商业用途,转载公众号请后台留言申请。图文部分来自网络,若有侵权,请联系删除)

秃头程序员保姆教程:Spring框架自学之路(一)相关推荐

  1. 如何避免成为一个被“优化”的中年秃头程序员?

    来源| 技术领导力(ID:jishulingdaoli) 曾几何时,我们年少轻狂,我们不怕失去,我们心怀梦想用技术改变世界,熬过无数个996之后发现,口袋里的钞票跟头发一样薄情寡义,生活的压力跟肚子上 ...

  2. 【本人秃顶程序员】使用Spring Cloud Stream和RabbitMQ实现事件驱动的微服务

    ←←←←←←←←←←←← 快!点关注 让我们展示如何使用Spring Cloud Stream来设计事件驱动的微服务.首先,Spring Cloud Stream首先有什么好处?因为Spring AM ...

  3. 24岁秃头程序员教你微服务交付下如何持续集成交付,学不会砍我

    微服务如何持续集成交付 在微服务架构下,每一个微服务都是职责单一的,可独立部署单元,但是众多分散的微服务也带来了代码共享.微服务功能依赖.版本管理等复杂问题,微服务需要解决配置管理.服务持续集成.持续 ...

  4. javaweb模板_好程序员Java教程分享javaweb框架

    好程序员Java教程分享javaweb框架:Java是开源的,框架很多,这些框架都能解决特定的问题,提高开发效率.简化我们的代码复杂度,现在除了很多大家通用的一些主流框架外,很多公司针对自己的业务会自 ...

  5. 好程序员技术教程分享JavaScript运动框架

    好程序员技术教程分享JavaScript运动框架,有需要的朋友可以参考下. JavaScript的运动,即让某元素的某些属性由一个值变到另一个值的过程.如让div的width属性由200px变到400 ...

  6. 【本人秃顶程序员】分享一些数据结构与算法常用的算法技巧总结

    今天和大家讲讲,在做算法题时常用的一些技巧.对于平时没用过这些技巧的人,或许你可以考虑试着去看看在实践中能否用的上这些技巧来优化问题的解. 一.巧用数组下标 数组的下标是一个隐含的很有用的数组,特别是 ...

  7. 【本人秃顶程序员】中小型互联网公司微服务实践-经验和教训

    ←←←←←←←←←←←← 我都秃顶了,还不点关注! 在开始之前我们先介绍一下几个概念,什么是微服务,它的特点是什么? Spring Boot/Cloud都做了那些事情?他们三者之间又有什么联系? 技术 ...

  8. java程序员秃顶,【本人秃顶程序员】使用Azure Function + Cognitive Services 实现图片自动化审核...

    ←←←←←←←←←←←← 快!点关注 假定我们正在运行某个应用程序,此应用程序需要用户在应用程序中提交大量图片文件,那么对于系统管理员来说手动审核这些图片是很消耗时间的,并且对于图片的审核也许并不是即 ...

  9. 【本人秃顶程序员】美女程序员观点:程序员最重要的非编程技巧

    ←←←←←←←←←←←← 快!点关注 这是来自一位美女程序员Ali Spittel的观点,至少可以看看美女喜欢和怎样的男程序猿打交道: 当我想与我希望的程序员合作时,我更多地考虑非技术技能,而不是技术 ...

  10. 【本人秃顶程序员】图解分布式架构的演进过程

    ←←←←←←←←←←←← 快!点关注!!! 一.什么是分布式架构 分布式系统(distributed system) 是建立在网络之上的软件系统. 内聚性: 是指每一个数据库分布节点高度自治,有本地的 ...

最新文章

  1. 教程-MessageBox 使用方法
  2. Linux配置脚本导出运行,linux服务器部署jar包以及shell脚本的书写
  3. 温故之 “快速排序”
  4. 经典C语言程序100例之七四
  5. PIC32单片机harmony开发环境 - uart例程和代码分析
  6. LeetCode - 3Sum Closest
  7. Gridview应用技巧——如何为行添加事件
  8. 如何根据原理图画封装_常用原理图封装
  9. 面试官又整新活,居然问我for循环用i++和++i哪个效率高?
  10. UE4 调整引擎功能的级别
  11. 问题五十九:怎么求一元六次方程在区间内的所有不相等的实根(2)
  12. 免费WiFi初体验——个小白的WiFi旅程
  13. appium inspector连接appium service
  14. ie9 html5 web worker,HTML5之殇
  15. 从零开始做运营第一课:运营是做什么的?一篇文章解释清楚!
  16. 【SAP】 SAP自定义权限对象
  17. 记一次从某多多上买的斐讯N1黑盒的电视盒子刷机经历
  18. 【ABAP】-第四堂课-创建函数FM
  19. python numpy.arry, pytorch.Tensor及原生python中list相互转换
  20. 北大数学系「扫地僧」韦东奕爆红!拒绝哈佛offer,留任北大,却因长相引热议...

热门文章

  1. 用auto.js写一个自动刷快手抖音视频的小玩意
  2. 0.5mm的焊锡丝能吃多大电流_【高考必备】高考物理5大类型的实验要点整理,考前一定要看!...
  3. 在线DES加密/解密工具
  4. 毕业论文选题之开题报告
  5. 软件促进两化深度融合 ——记2016中国软件和信息技术服务业发展高峰论坛
  6. 长沙县北部新城:“湖湘生态”蓝图已绘就,“右岸经济”起飞正当时
  7. AQL学习笔记(二)--文档的创建
  8. 控制器同变频器建立modbus RTU通信小结
  9. sop流程图模板_这是一份标准作业流程SOP详解,附流程图绘制规范,不愁不会画!...
  10. 计算机英语词汇带音标,计算机专用英语词汇1500词(带音标).doc