一 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. 第四篇:Vue的项目开发

    安装Vue的脚手架cli环境 1)官网下载并安装node,附带npm https://nodejs.org/zh-cn/ node环境: 可以解释执行js语言 提供了npm应用商城,可以为node环境 ...

  2. JAVA - 创建SpringBoot项目

    JAVA - 创建SpringBoot项目 Spring Boot是由Pivotal团队提供的全新框架,设计目的是用来简化新Spring应用的初始搭建以及开发过程.它主要推崇的是'消灭配置’,实现零配 ...

  3. Java的Regex --正则表达式

    一.概述 正则表达式通常被用来对字符串提供范围性的校验.替换那些符合某个模式(规则)的文本. 正则表达式所对应的类Pattern,所有的正则表达式都是在这个类下创建的.Pattern类用于创建一个正则 ...

  4. 吴裕雄--天生自然C++语言学习笔记:C++ 继承

    当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可.这个已有的类称为基类,新建的类称为派生类. 继承代表了 is a 关系.例如,哺乳动物是动物,狗是 ...

  5. css 基础知识 (待完善...)

    CSS   1.position 属性     对元素进行定位.       absolute         相对于 非static类型的position 的 第一个(临近的) 父元素 进行定位. ...

  6. QThread创建多线程程序

    最近在阅读Qt 5.9 C++开发指南,为了加深对书本上内容的理解,参照书上的讲解尝试写了一些demo,用于以后工作中查阅,如果涉及侵权请告知,实例程序samp13_1 mythread.h #ifn ...

  7. C++ #if 1

    当注释掉大块代码时,使用"#if 0"比使用"/**/"要好,因为用"/**/"做大段的注释要防止被注释掉的代码中有嵌套的"/** ...

  8. JMP CALL RET

    一.JMP指令(修改EIP的值)(第一个修改EIP的指令) 三种方法 :JMP 立即数 JMP  寄存器 JMP  内存 EIP 之前介绍过,EIP存放的值就是cpu下一次要执行的地址 1.之前学过要 ...

  9. Dijkstra--The Captain

    *传送 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用. 先给一段证明:给定三个x值,x1<x2<x ...

  10. Essay写作的六大黄金法则以及四大禁区

    虽然Essay这么难写,但是,也有一些可以拿高分的准则,本文小编就为大家分享高分Essay写作必知黄金法则,希望对想要在Essay拿高分的留学生小伙伴们有些帮助. 黄金法则1.关注相关问题的重点词汇 ...