一、spring概述

Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。

二、Spring特点

1、方便解耦,简化开发。

2、AOP编程的支持。

3、声明式事务的支持。

4、方便程序的测试

5、方便集成各种优秀框架

三、spring下载

下载地址:https://repo.spring.io/libs-release-local/org/springframework/spring/

进入后可选择下载版本,选择版本后,进入目录结构。其中dist是最终发布版本,包含开发所需lib和源码。docs是开发文档。schema是一些约束文件。

四、spring搭建入门案例

1、在eclipse中创建一个动态的web工程。

2、导入spring的基础lib包到lib文件夹下。

3、编写一个实体User类

package com.jichi.entity;public class User {private String name;private Integer age ;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}
}

4、创建applicationContext.xml文件

在src文件下,新建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:util="http://www.springframework.org/schema/util"xmlns:jee="http://www.springframework.org/schema/jee"xmlns:lang="http://www.springframework.org/schema/lang"xmlns:jms="http://www.springframework.org/schema/jms"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"xmlns:jdbc="http://www.springframework.org/schema/jdbc"xmlns:cache="http://www.springframework.org/schema/cache"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:oxm="http://www.springframework.org/schema/oxm"xmlns:task="http://www.springframework.org/schema/task"xmlns:tool="http://www.springframework.org/schema/tool"xmlns:websocket="http://www.springframework.org/schema/websocket"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsdhttp://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsdhttp://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsdhttp://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsdhttp://www.springframework.org/schema/tool http://www.springframework.org/schema/tool/spring-tool.xsdhttp://www.springframework.org/schema/websocket http://www.springframework.org/schema/websocket/spring-websocket.xsd"></beans>

5、在beans内将user实体配置进去

<bean name="user" class="com.jichi.entity.User"></bean>

6、书写测试代码

public class TestDemo {@Testpublic void test1(){ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");User user = (User) ac.getBean("user");System.out.println(user);}
}

7、结果显示,将user对象交给spring容器管理成功

com.jichi.entity.User@db5e9c

五、spring中的工厂BeanFactory与ApplicationContext的区别

1、BeanFactory

spring原始接口,功能较为单一,在从容器中获得对象的时候才会创建对象。

2、ApplicationContext

每次启动容器的时候,初始化容器中的所有对象并提供更多功能。

其中的实现类ClassPathXmlApplicationContext是加载类路径下的spring配置文件,FileSystemXmlApplicationContext是加载本地磁盘下spring的配置文件。

3、实现图

4、结论

web开发中,使用applicationContext。

在资源匮乏的环境可以使用BeanFactory。

六、spring的bean元素属性详解

1、class:被容器管理对象的完整类名。

2、name:被容器管理对象的名称,根据此名称从容器中获得该对象,可以重复,可以使用特殊字符。

3、id:被容器管理对象的唯一标识,id不可重复,不可使用特殊字符,作用与name相同,建议使用name。

4、scope:

  (1)singleton(默认):单例对象,该对象在spring容器中只会存在一个。

  (2)prototype:多例模式,配置为多例的对象不会在spring容器中创建,只有在从容器中要获取该对象的时候,容器对该对象进行创建,每次创建都是一个新的对象。注意在与struts2配合使用的时候,struts2中的action对象必须要配置成prototype这种多例模式。

  (3)request:web项目中,创建一个对象,将其存放在request域中。

  (4)session:web项目中,创建一个对象,将其存放在session域中。

5、init-method与destory-method

init-method是对象创建的时候所执行的方法,destory-method是对象销毁时所执行的方法。对象必须是单例的,同时容器关闭的时候,对象的销毁方法才会执行。

<bean name="user" class="com.jichi.entity.User" init-method="init" destroy-method="destory"></bean>

public class User {private String name;private Integer age ;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public void init(){System.out.println("初始");}public void destory(){System.out.println("销毁");}
}

七、spring创建对象的方式

1、空参构造方法

<bean name="user" class="com.jichi.entity.User" ></bean>

2、静态工厂实例化

(1)创建一个工厂类

public class UserFactory {public static User createUser(){return new User();}
}

(2)配置

<bean name="user" class="com.jichi.factory.UserFactory" factory-method="createUser"></bean>

3、实例工厂实例化

(1)创建一个工厂类

public class UserFactory {public static User createUser(){return new User();}
}

(2)配置

<bean name="user" factory-bean="userFactory" factory-method="createUser"></bean>

Spring入门详细教程(一)相关推荐

  1. spring入门详细教程(五)

    前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...

  2. Spring入门详细教程(四)

    前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...

  3. Spring入门详细教程(三)

    前言 本篇紧接着spring入门详细教程(二),建议阅读本篇前,先阅读第一篇和第二篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/101 ...

  4. Spring入门详细教程(二)

    前言 本篇紧接着spring入门详细教程(一),建议阅读本篇前,先阅读第一篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/1016553 ...

  5. ThinkJS框架入门详细教程(二)新手入门项目

    一.准备工作 参考前一篇:ThinkJS框架入门详细教程(一)开发环境 安装thinkJS命令 npm install -g think-cli 监测是否安装成功 thinkjs -v 二.创建项目 ...

  6. NMAP入门详细教程

    NAMP入门详细教程 一.功能: 网络扫描和嗅探. 二.原理: 使用TCP/IP协议栈指纹准确地判断目标主机的相关信息. 三.作用: 识别活跃主机 识别开放端口以及相关的服务 识别主机的系统指纹 路由 ...

  7. Pandas入门详细教程

    作者:luanhz 来源:小数志 导读 本文主要是对pandas进行入门详细介绍,通过本文你将系统性了解pandas为何会有数据分析界"瑞士军刀"的盛誉. 行文二级目录 01 关于 ...

  8. numpy入门详细教程(一)

    本讲主要介绍对numpy库和numpy库的N维数组对象:ndarray的基本了解.更多内容请看numpy入门详细教程(二) numpy: NumPy是一个开源的Python科学计算基础库,包含: • ...

  9. python数据科学系列:pandas入门详细教程

    导读 前2篇分别系统性介绍了numpy和matplotlib的入门基本知识,今天本文自然是要对pandas进行入门详细介绍,通过本文你将系统性了解pandas为何会有数据分析界"瑞士军刀&q ...

最新文章

  1. 冬奥冠军武大靖也有减重烦恼,还为此发了篇论文
  2. Oracle11g的安装及配置
  3. android avd orientation support,Android AVD-无法旋转风景/人像
  4. 快速构建Windows 8风格应用22-MessageDialog
  5. java二维数组的常见初始化
  6. js for in 获得遍历数组索引和对象属性
  7. [Objective-C语言教程]数据封装(27)
  8. python傅里叶变换库_python的numpy库和cv2库实现图像傅里叶变换
  9. java中 有return 的情况,return以及try,finally代码块的执行顺序
  10. appium入门篇(2)--desired capabilities
  11. tp3.2 批量插入
  12. python实现bt下载器_使用Python实现BT种子和磁力链接的相互转换
  13. 微软苏州招 Android/iOS 开发!
  14. css的定位属性——固定定位和粘性定位
  15. ddr走线教程_DDR3 Fly By走线精讲
  16. 《五》HTML5 多媒体技术
  17. MySQL入门学习的第一节(SQL语句)
  18. Ultra-Fast Mathematician
  19. 【离散】如何利用顶点数求树叶或知树叶求顶点
  20. Google Maps API 将开始收费

热门文章

  1. mac好用大java_好用,小个头大本事!Mac下轻量级清理软件。
  2. linux go redis,使用go来操作redis的方法示例
  3. 皮一皮:现在真是键盘侠的年代阿....
  4. Git 这样回退代码,才足够优雅
  5. 云原生收购潮:思科计划收购Portshift;Kasten加入Veeam
  6. 大量的 TIME_WAIT 状态 TCP 连接,对业务有什么影响?
  7. 如何实现一个可复用的分布式事务消息架构方案?
  8. 每日一皮:原型还可以啊,怎么上线后就这样了。。。
  9. Java 中商业运算必备的精确运算类:BigDecimal
  10. 如何使用Spring优雅地处理REST异常?