一 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. v2??? 替换协议

    输入 v2??? 命令,选择修改 v2??? 配置, 然后选择修改传输协议, 可以选择 mKcp_wechat-video .然后重新生成 vmess,放入客户端使用.

  2. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring通知类型及使用ProxyFactoryBean创建AOP代理

    通知(Advice)其实就是对目标切入点进行增强的内容,Spring AOP 为通知(Advice)提供了 org.aopalliance.aop.Advice 接口. Spring 通知按照在目标类 ...

  3. Adobe Photoshop CC2014 for MAC 详细破解步骤

    1,安装Adobe Photoshop CC2014 for MAC,可以断网安装,如果不断网的话,需要申请一个Adobe ID,是免费申请. 2,下载破解工具,https://sdifen.ctfi ...

  4. POJ 2182&& POJ 2828:Lost Cows 从后往前 线段树

    Lost Cows Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10544   Accepted: 6754 Descri ...

  5. redis qps监控

    最近有个客户反应redis的qps不准确,通过查看代码,发现我们的监控是调用的redis info里面的instantaneous_ops_per_sec 客户反应说自己压测了ns,但是从监控上看不到 ...

  6. ubuntu安装opencv3.2

    把master分支git下来: git clone git@github.com:opencv/opencv.git 查看可用的版本: git tag 选择自己想要的版本号: git reset -- ...

  7. Python学习——购物车程序

    问题需求: 1.启动程序,让用户输入工资,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4.可随时退出,退出时,打印已购买的商品和余 ...

  8. Vue.js(20)之 封装字母表(是这个名字吗0.0)

    HTML结构: <template> <div class="alphabet-container"> <h1>alphabet 组件</ ...

  9. RectTransform详解

    乾坤那个大挪移   ----------------------------------------------------------------- 我是分割线 ------------------ ...

  10. JavaScript 之 Function

    JavaScript function 语句定义和用法: function 语句用于声明一个函数. 函数声明后,我们可以在需要的时候调用. 在 JavaScript 中,函数是对象,函数也有属性和方法 ...