一 spring的基础

1:什么是spring

  spring是由Rod Johnson组织和开发的一个分层 的Java SE/EE 一站式轻量级开源框架,它以Ioc(控制反转)和 AOP(面向切面编程)为内核,使用了基本的JavaBean来代替了以前由EJB完成的工作,取代了EJB 的臃肿,低效。

  一站式:spring在JavaEE三层框架中(表现层,业务逻辑层,持久层)分别提供了不同的解决技术

    表现层:spring中的springmvc

    service层:spring的ioc

    dao层:spring的jdbcTemplate

  轻量级:不需要其他很多的其他东西来支持

  框架:是能够完成一定功能的半成品。

  框架能够帮助我们完成的是:项目的整体开发框架,一些基础功能,规定了类和对象怎么创建,如何协作,在我们开发一个项目时,框架能够帮助我们完成一部分的功能,我们自己需要完成一部分的功能,

2:spring框架的优点

    • 非侵入式设计:从框架的角度来看,无需继承框架提供的任何类。
    • 方便解耦 :spring就是一个大工厂,可以将所有的对象的创建和依赖关系的维护工作都交给spring来管理,大大降低了组件之间的耦合性。
    • 支持AOP:spring提供了AOP的支持,它允许将一些通用的任务,入安全,事务,日志等功能进行集中处理。
    • 支持是声明式事务处理:只要通过配置就可以完成对事务的管理,而无需手动的编程。
    • 方便程序的测试:spring提供了Junit4的支持,可以通过注解方便的测试spring程序。
    • 方便集成各种框架:spring不排斥各种优秀的框架,其内部提供了各种框架的直接支持。
    • 降低了javaEE 中一些API的使用难度。

3:Spring的体系结构

     

             spring体系结构图   

  spring框架采用的是分层架构,它是一系列的功能要素被分为20个模块,主要是Core Container,Data Access/Integration,Web,AOP,Instrumentation,Messaging和Test。

4.spring的下载

  Spring压缩包可以通过地址官网下载,点击 http://repo.spring.io.

  

     鼠标点击左边>>符号展开菜单选择Artifacts选项。

    

    选择子菜单下的libs-release-local 选项。

    

      

    依次进入其子目录org/springframework/spring 就能看到spring 各版本信息了。

    选择你需要的spring版本例如4.3.2.RELEASE点击打开选择 ,spring-framework-4.3.2.RELEASE-dist.zip 下载解压即可获得jar包api等等文件。

 

    

   直接获取方法。URL为最Spring最新4.3.2版本 地址,获取其他版本只需修改下面链接的4.3.2的版本号信息成想要的版本即可。

   https://repo.spring.io/webapp/#/artifacts/browse/tree/General/libs-release-local/org/springframework/spring/4.3.2.RELEASE

    

  docs文件夹中包含了spring的API文档和开发规范,libs文件夹中包含了开发所需要的jar包和源码,schema文件夹中包含了开发搜需要的schema文件,这些文件中定义了spring相关配置文件的约束。

    

  libs中的包分为三种:一种是以javadoc结尾的是spring框架API文档的压缩包,以source结尾的是spring框架源文件的压缩包,另一个就是spring框架class文件的压缩包。

  spring的核心包主要由四个:spring-core- ,spring-beans- ,spring-context-,spring-expression-,

  spring还需要一个依赖包:commons-logging-

二 spring的核心容器

  spring框架的主要功能是通过其核心容器来实现的,spring框架提供了两种核心容器:Bean Factory(不常用) 和 Application Context。

  容器:从日常来讲,就是盛装东西的组件,从程序来讲,就是装对象的对象,因为存在放入,拿出等操作,还要管理对象的生命周期。

  主要讲ApplicationContext容器。

  ApplicationContext容器是BeanFactory的子接口,也被称为应用上下文,是spring框架常用的容器

1.ApplicationContext容器的获取:

  -通过ClassPathXmlApplicationContext创建

  ClassPathXMLApplicationContext会从类路径classpath中去获取指定的XML文件,找到并装载完成ApplicationContext的实例化工作。

  AppliationContext applicationContext= new ClassPathXmlApplicationContext(String configLocation);

  上述代码中,configLocation是指定spring配置文件的位置和名称。

  -通过FileSystemXmlApplicationContext创建

  ApplicationContext applicationContext=new FileSystemApplicationConext(String configLocation);

  与第一种方法有所不同的是第二种方法使用的路径不是从类路径中去找,而是从给定的位置去找,例如“D:/work/applicationContext.xml”,如果早参数中写的不是路径,这个方法调用的时候回默然使用绝对路径来找,注意:这种使用绝对路径的方法,会导致程序的灵活性变低,

  在使用spring框架时,可以通过实例化任何一个类创建ApplicationContext容器。

  通常在java程序中,是采用通过ClassPathXMLApplicationContext来实例化ApplicationContext容器的。

  在web项目中,通常是把ApplicationContext实例化的工作交给web服务器,web服务器实例化ApplicationContext容器时,通常使用基于ContextLoaderListener实现的方法,这种配置要在web.xml中配置如下代码:

  

<!--指定spring配置文件的位置,多个配置文件时,以逗号分开-->
<context-param>
<param-name>contextConfigLocation</param-name>
<!--将加载spring目录下的ApplicationContext.xml文件-->
<param-value>classpath:spring/applicationContext.xml</param-value>
</context-param>
<!--指定以ContextLoaderListener方式启动spring容器-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

2.使用spring容器来获取bean

  spring获取bean的实例通常有两种方法:

  Object getBean(String name):根据容器中的bean的ID值来获取指定 的bean,获取之后要进行强制类型转换。

  <T> T getBean(Class<T> requiredType):根据类的类型来获取Bean的实例,该方法为泛型,不需要进行强制类型转换。

  注意:当使用BeanFactory和ApplicationContext两种容器都是通过XML配置文件来获取bean,两者的区别在于,如果bean的某一个属性没有注入,在使用BeanFactory加载时,在第一次获取bean时会报错,如果使用的是ApplicationContext,会在初始化时自检,这样会有利于检查所有的依赖属性是否注入。

spring学习之spring入门的更多相关文章

  1. Spring学习(十一)-----Spring使用@Required注解依赖检查

    Spring学习(九)-----Spring依赖检查 bean 配置文件用于确定的特定类型(基本,集合或对象)的所有属性被设置.在大多数情况下,你只需要确保特定属性已经设置但不是所有属性.. 对于这种 ...

  2. Spring学习(六)-----Spring使用@Autowired注解自动装配

    Spring使用@Autowired注解自动装配 在上一篇 Spring学习(三)-----Spring自动装配Beans示例中,它会匹配当前Spring容器任何bean的属性自动装配.在大多数情况下 ...

  3. Spring学习笔记--spring+mybatis集成

    前言: 技术的发展, 真的是日新月异. 作为javaer, 都不约而同地抛弃裸写jdbc代码, 而用各种持久化框架. 从hibernate, Spring的JDBCTemplate, 到ibatis, ...

  4. spring学习(三) ———— spring事务操作

    前面一篇博文讲解了什么是AOP.学会了写AOP的实现,但是并没有实际运用起来,这一篇博文就算是对AOP技术应用的进阶把,重点是事务的处理. --wh 一.jdbcTemplate 什么是JdbcTem ...

  5. spring学习12 -Spring 框架模块以及面试常见问题注解等

    以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式—在AOP和remoting中被用的比较 ...

  6. Spring学习【Spring概述】

    从本文開始,我们就要一起学习Spring框架,首先不得不说Spring框架是一个优秀的开源框架. 当中採用IoC原理实现的基于Java Beans的配置管理和AOP的思想都是非常值得学习与使用的.以下 ...

  7. Spring学习笔记—Spring之旅

    1.Spring简介     Spring是一个开源框架,最早由Rod Johnson创建,并在<Expert One-on-One:J2EE Design and Development> ...

  8. Spring学习2—Spring容器

    一.Spring容器接口关系 容器是Spring框架的核心,Spring容器就是一个巨大的工厂.Spring容器使用Ioc(控制反转(Inversion of Control )管理所有组成应用系统的 ...

  9. spring 学习 一 spring 介绍

    Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架. Spring ...

随机推荐

  1. Lombok认知

    Lombok的简介 Lombok是一款Java开发插件,公司项目到处使用,整体效果很棒,代码更干净.Java开发人员可以节省出重复构建,诸如hashCode和equals这样的方法以及各种业务对象模型 ...

  2. C# winform中ListView用法

    this.listView1.GridLines = true; //显示表格线 this.listView1.View = View.Details;//显示表格细节 this.listView1. ...

  3. yagmail四行代码发送邮件

    yagmail四行代码发送邮件 import yagmail # 链接邮箱服务器 yag = yagmail.SMTP(user="xxxx@163.com", password= ...

  4. 常见的http错误

    错误类型: 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. 2xx (成功) 表示成功处理了请求的状态代码. 3xx (重定向) 表示要完成请求,需要进一步操作. 通常,这些状态 ...

  5. 17. react redux的中间件

    1. redux 数据流程图 View 会派发一个 Action Action 通过 Dispatch 方法派发给 Store Store 接收到 Action 连同之前的 State 发给  Red ...

  6. tkinter组件详解之Label

    tkinter组件详解之Label Label组件用于在屏幕上显示文本或图像.最红呈现出的结果是由背景和前景叠加构成的. 函数定义:Label(master=None, cnf={}, **kw) 背 ...

  7. list的泛型

    更新记录 [1]2020.02.12-21:26 1.完善内容 正文 在学习list集合时,我看到书上写list的格式时 List<E> list = new ArrayList<& ...

  8. Linux学习20200215

  9. js去除热点的虚线框

    1.一个页面有多张图片,图片的链接为热点绘制,在ie中点击会出现虚线框. <script type="text/javascript"> window.onload = ...

  10. android studio 黑屏问题

    AVD配置不对,打开AVD从新配置