一、Spring简述

一段费话

Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。

二、Spring体系结构

2.1、体系结构介绍

  • Spring Core:管理bean与bean之间的依赖
  • Spring Web:提供Web应用开发的支持
  • Spring DAO:支持包括一致的异常处理和编程方式
  • Spring BeanFactory:功能加强的一个子接口
  • Spring MVC:针对Web应用MVC思想实现
  • Spring ORM:用于与流行ORM框架整合
  • Spring AOP:AOP面象切面编程,提供与OP联盟兼容的编号实现

以上大部分都可以 单独使用

2.2、各部分

三、Spring设计理念

四、如何获取Spring

下载地址

http://repo.spring.io/libs-release-local/org/springframework/spring/

五、使用Spring实现Hello Spring

添加包

建立类

package com.pb.demo;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class HelloSpring {
private String str; public void print() {
System.out.println("Hello! " + this.getStr());
} public static void main(String[] args) {
// 创建ApplicationContext上下文件对象
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
HelloSpring hello=(HelloSpring) context.getBean("hellospring");
hello.print(); } public String getStr() {
return str;
} public void setStr(String str) {
this.str = str;
} }

建立applicationContext.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="hellospring" class="com.pb.demo.HelloSpring">
<property name="str" value="Spring"></property>
</bean> </beans>

另一个

package com.pb.demo;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpringDemo1 {
private String name;
private String job; public void print() {
System.out.println("姓名: " + this.getName() + " \t职业: " + this.getJob()); } public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
SpringDemo1 demo=(SpringDemo1)context.getBean("springdemo");
demo.print(); } public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getJob() {
return job;
} public void setJob(String job) {
this.job = job;
} }
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="hellospring" class="com.pb.demo.HelloSpring">
<property name="str" value="Spring"></property>
</bean>
<bean id="springdemo" class="com.pb.demo.SpringDemo1">
<property name="name" value="林冲"/>
<property name="job" value="80万禁军教头!"/>
</bean>
</beans>

六、Spring对单态和工厂模式的支持

6.1、工厂模式

package com.pb.lnk;
/**
* 墨盒接口
* @author Administrator
*
*/
public interface Lnk { public void getColor();
}

实现类

package com.pb.lnk;
/**
* 彩色墨盒
* @author Administrator
*
*/
public class Color implements Lnk { @Override
public void getColor() {
System.out.println("=======使用彩色墨盒打印!========"); } } package com.pb.lnk;
/**
* 灰色墨盒
* @author Administrator
*
*/
public class Grey implements Lnk { @Override
public void getColor() {
System.out.println("--------使用灰色墨盒打印!---------"); } }

测试类

package com.pb.lnk;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* 墨盒测试类
*
* @author Administrator
*
*/
public class LnkTest { public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml"); Lnk k=null;
k=(Lnk) context.getBean("color");
k.getColor();
k=(Lnk) context.getBean("grey");
k.getColor(); } }

applicationContext.xml

<bean id="color" class="com.pb.lnk.Color"></bean>
<bean id="grey" class="com.pb.lnk.Grey"></bean>

6.2、单态模式支持

package com.pb.lnk;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* 单态模式(单实例模式)
* @author Administrator
*
*/
public class LnkTest2 { public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Lnk lnk1=null;
Lnk lnk2=null;
lnk1=(Lnk)context.getBean("color");
lnk2=(Lnk)context.getBean("color");
System.out.println(lnk1==lnk2);
//结果是true表示2个是同一个对象
} }

七、Spring核心机制

Spring(一)简述的更多相关文章

  1. Spring(一)简述(转载)

    原文出自:http://www.cnblogs.com/liunanjava/p/4396794.html 一.Spring简述 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量 ...

  2. 【Spring】简述@Configuration配置类注册BeanDefinition到Spring容器的过程

    概述 本文以SpringBoot应用为基础,尝试分析基于注解@Configuration的配置类是如何向Spring容器注册BeanDefinition的过程 其中主要分析了 Configuratio ...

  3. Spring AOP简述

    使用面想对象(Object-Oriented Programming,OOP)包含一些弊端,当需要为多个不具有继承关系的对象引入公共行为时,例如日志,安全检测等.我们只有在每个对象中引入公共行为,这样 ...

  4. Spring MVC 简述:从MVC框架普遍关注的问题说起

    任何一个完备的MVC框架都需要解决Web开发过程中的一些共性的问题,比如请求的收集与分发.数据前后台流转与转换,当前最流行的SpringMVC和Struts2也不例外.本文首先概述MVC模式的分层思想 ...

  5. Spring5.0源码学习系列之Spring AOP简述

    前言介绍 附录:Spring源码学习专栏 在前面章节的学习中,我们对Spring框架的IOC实现源码有了一定的了解,接着本文继续学习Springframework一个核心的技术点AOP技术. 在学习S ...

  6. spring annotation简述

    一.Annotation基本概念 Annotation是jdk5以后出现的新特性,在jdk中,其内置了许多自己的Annotation,例如@Override,@SuppresWarning,@Depr ...

  7. Spring 详解第一天

    spring 框架简述: http://www.cnblogs.com/ToBeAProgrammer/p/5230065.html http://www.cnblogs.com/ToBeAProgr ...

  8. Spring之IOC核心模块详解

    Spring IOC简述 IOC称为控制反转,也有一种说法叫DI(依赖注入).IOC也是spring最核心的模块,Spring的所有工作几乎都围绕着IOC展开. 什么是控制反转呢?简单的说,控制反转就 ...

  9. Java方式配置Spring MVC

    概述 使用Java方式配置Spring MVC,以及回顾一下Spring MVC的各种用法. Spring MVC简述 关于Spring MVC的介绍网上有很多,这里就不再赘述了,只是要说一下,Spr ...

随机推荐

  1. RESTful API 设计指南【转】

    网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). 因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信.这导致AP ...

  2. Sass学习之路:Sass、Compass安装与命令行

    导言 CSS不是一门真正意义上的编程语言,很多编程语言理所当然的特性(比如变量),都不被支持.同时再开发模块化的web项目的时候,也要避免相互干扰.为了弥补CSS的这些不足,就产生了CSS预处理器,S ...

  3. [ML] Naive Bayes for Text Classification

    TF-IDF Algorithm From http://www.ruanyifeng.com/blog/2013/03/tf-idf.html Chapter 1, 知道了"词频" ...

  4. LeetCode——Find the Duplicate Number

    Description: Given an array nums containing n + 1 integers where each integer is between 1 and n (in ...

  5. [linux]scp指令

    实例1:从远处复制文件到本地目录 $scp root@10.6.159.147:/opt/soft/demo.tar /opt/soft/ 说明: 从10.6.159.147机器上的/opt/soft ...

  6. js-基础(1)

    js-基础(1) javascript由三部分组成:核心,DOM,BOM核心——ECMAScript,可以运行浏览器/单纯的JS引擎    console.log(‘hello’);DOM——操作HT ...

  7. 100行JS实现HTML5的3D贪吃蛇游戏

    js1k.com收集了小于1k的javascript小例子,里面有很多很炫很酷的游戏和特效,今年规则又增加了新花样,传统的classic类型基础上又增加了WebGL类型,以及允许增加到2K的++类型, ...

  8. AC自动机 - 多模式串的匹配 --- HDU 3695 Computer Virus on Planet Pandora

    Problem's Link Mean: 有n个模式串和一篇文章,统计有多少模式串在文章中出现(正反统计两次). analyse: 好久没写AC自动机了,回顾一下AC自动机的知识. 本题在构造文章的时 ...

  9. HTML5 Viewport Meta Tag

    https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/U ...

  10. Discuz API的延伸

    作为社交平台来使用Discuz的话,UC_Server提供的那些数据接口是不够用的,我们还需要访问及操作用户的扩展数据. 基于UXF框架的rest_controller,很容易就可以实现API接口. ...