Spring学习1:Spring基本特性
http://longliqiang88.github.io/2015/08/14/Spring%E5%AD%A6%E4%B9%A01%EF%BC%9ASpring%E5%9F%BA%E6%9C%AC%E7%89%B9%E6%80%A7/
Spring学习1:Spring基本特性
Spring基本特征
Spring基本特征
Spring是一个非常活跃的开源框架;它是一个基于Core来构架多层JavaEE系统的框架,它的主要目地是简化企业开发。
Spring以一种非侵入式的方式来管理你的代码,Spring提倡”最少侵入”,这也就意味着你可以适当的时候安装或卸载Spring。
开发spring所需要的工具
Spring的jar包
到http://www.springsource.org/download下载spring,然后进行解压缩,在解压目录中找到下面jar文件,拷贝到类路径下
—spring的核心类库 在spring文档的dist下
dist\spring.jar
—引入的第三方类库 都spring文档的lib下
lib\jakarta-commons\commons-logging.jar
如果使用了切面编程(AOP),还需要下列jar文件
lib/aspectj/aspectjweaver.jar和aspectjrt.jar
lib/cglib/cglib-nodep-2.1_3.jar
如果使用了JSR-250中的注解,如@Resource/@PostConstruct/@PreDestroy,还需要下列jar文件
lib\j2ee\common-annotations.jar
注:JSR(Java 规范请求)是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR(Java 规范请求),以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准
Spring配置文件
默认情况下是applicationContext.xml文件。可以建立很多xml文件,工程中一般都是这样配置的。
Spring IOC
IOC指的是控制反转,把对象的创建、初始化、销毁等工作都交给Spring容器。由spring容器来控制对象的生命周期。下图可以说明我们传统创建类的方式和使用Spring之后的区别:
Spring IOC
代码实现如下:
首先创建Helloworld类:
1 |
public class HelloWorld {
|
Spring配置文件:
1 |
<?xml version="1.0" encoding="UTF-8"?> |
main方法的代码如下:
1 |
public static void main(String[] args){
|
Spring容易创建对象的意义:程序员可以更加专注于业务的开发,而不用管对象的创建、销毁等,把这些操作都交给Spring容器完成。
Spring创建对象的方式
无参构造方法
如果在配置文件中只使用id和class属性配置bean,则默认调用类的无参构造方法进行实例化,代码如下所示:
1 |
<bean id="helloWorld" class="cn.zju.spring.HelloWorld"></bean> |
上述配置将调用HelloWorld类的无参构造方法来创建HelloWorld实例。
静态工厂
有些类中提供了静态的工厂方法返回实例,假设HelloWorldFactory类中有如下的静态工厂方法:
1 |
public class HelloWorldFactory {
|
在配置文件中使用factory-method属性调用改静态工厂方法,创建HelloWorld实例,代码如下:
1 |
<bean id="helloWorldFactory" class="cn.zju.spring.HelloWorldFactory"></bean> |
实例工厂方法
- 提供工厂类
- 把工厂放到Spring容器中
- 在Spring容器中指定工厂类的工厂方法
- 在客户端中创建对象
1
2<bean id="helloWorldFactory" class="cn.zju.spring.HelloWorldFactory"></bean>
<bean id="helloWorld" class="cn.zju.spring.HelloWorldFactory" factory-bean="helloWorldFactory" factory-method="getInstance"></bean>
Spring对象初始化bean时机
在默认情况下,只要在Spring容器中配置了一个bean,容器在启动时就会实例化该bean,单例模式。
如果在Spring配制文件时设置懒加载模式(lazy-init=”true”),在getBean时才会实例化对象。
如果scope=”prototype”时,无论lazy-init的值是什么都只会在使用时才会创建,当struts2的action和spring容器整合的时候,action的scope设置成prototype。
Spring容器的生命周期
Spring容器生命周期
- 启动spring容器
- 创建helloWorld对象
- 调用helloWorld对象的init方法,init方法是由spring容器内部调用的
- 在客户端提取helloWorld对象,对象调用方法
- 当spring容器关闭的时候,执行destroy方法:注意:前提条件:必须为单例,如果多实例,不起作用。
Spring学习1:Spring基本特性的更多相关文章
- Spring学习(十一)-----Spring使用@Required注解依赖检查
Spring学习(九)-----Spring依赖检查 bean 配置文件用于确定的特定类型(基本,集合或对象)的所有属性被设置.在大多数情况下,你只需要确保特定属性已经设置但不是所有属性.. 对于这种 ...
- Spring学习(六)-----Spring使用@Autowired注解自动装配
Spring使用@Autowired注解自动装配 在上一篇 Spring学习(三)-----Spring自动装配Beans示例中,它会匹配当前Spring容器任何bean的属性自动装配.在大多数情况下 ...
- spring学习(三) ———— spring事务操作
前面一篇博文讲解了什么是AOP.学会了写AOP的实现,但是并没有实际运用起来,这一篇博文就算是对AOP技术应用的进阶把,重点是事务的处理. --wh 一.jdbcTemplate 什么是JdbcTem ...
- Spring学习【Spring概述】
从本文開始,我们就要一起学习Spring框架,首先不得不说Spring框架是一个优秀的开源框架. 当中採用IoC原理实现的基于Java Beans的配置管理和AOP的思想都是非常值得学习与使用的.以下 ...
- Spring学习笔记—Spring之旅
1.Spring简介 Spring是一个开源框架,最早由Rod Johnson创建,并在<Expert One-on-One:J2EE Design and Development> ...
- Spring学习笔记--spring+mybatis集成
前言: 技术的发展, 真的是日新月异. 作为javaer, 都不约而同地抛弃裸写jdbc代码, 而用各种持久化框架. 从hibernate, Spring的JDBCTemplate, 到ibatis, ...
- spring 学习 一 spring 介绍
Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架. Spring ...
- spring学习12 -Spring 框架模块以及面试常见问题注解等
以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式—在AOP和remoting中被用的比较 ...
- Spring学习2—Spring容器
一.Spring容器接口关系 容器是Spring框架的核心,Spring容器就是一个巨大的工厂.Spring容器使用Ioc(控制反转(Inversion of Control )管理所有组成应用系统的 ...
- spring学习之spring入门
一 spring的基础 1:什么是spring spring是由Rod Johnson组织和开发的一个分层 的Java SE/EE 一站式轻量级开源框架,它以Ioc(控制反转)和 AOP(面向切面编程 ...
随机推荐
- shell基础之bash
一直单单知道部署服务器等命令,shell语言还没有用心学习过,简单的学习下以供不时之需 .sh:bash脚本文件 很多时候需要多个命令来完成一项工作,而这个工作又常常是重复的,这个时候我们自然会想到将 ...
- Http如何利用304让浏览器去更新数据
ETag 是 Entity Tag 的缩写,中文译过来就是实体标签的意思.在HTTP1.1协议中其实就是请求HEAD中的一个属性而已. HTTP/1.1 200 OK Date: Mon, 23 Ma ...
- fiddler模拟返回
先把正常的请求响应报文保存为文件,操作方法为选中对应请求>右键> save >reponse>entire response 点击改请求,点击右侧autoresponder,点 ...
- OS + RedHat 6.3 x64 NFS / mount.nfs: access denied by server while mounting
s Linux mount/unmount命令(转) https://www.cnblogs.com/xd502djj/p/3809375.html 问题2:NFS配置项no_root_squash和 ...
- hibernate HQL查询参数设置
Hibernate中对动态查询参数绑定提供了丰富的支持,那么什么是查询参数动态绑定呢?其实如果我们熟悉传统JDBC编程的话,我们就不难理解查询参数动态绑定,如下代码传统JDBC的参数绑定: Prepa ...
- UNIX网络编程中的字节序问题
1.inet_pton 函数原型: inet_pton:将“点分十进制” -> “二进制整数” int inet_pton(int af, const char *src, void *dst) ...
- git status -s命令解析
git status -s 以精简的方式显示文件状态. git status 输出的命令很详细,但有些繁琐. 如果用 git status -s 或 git status --short 命令,会得到 ...
- c++进阶学习
以后可能要做c++开发了..记录要看的书和可能用的技术,让自己有个学习的方向... 1. 语言基础 2. 算法与数据结构基础 3. 多线程开发基础 4. 数据库 5. 网络编程 6. 内存数据库技 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理(附源码)
前言:时间很快,已经快到春节的时间了,这段时间由于生病,博客基本没更新,所以今天写一下我们做的一个项目吧,是对权限的基本操作的操作,代码也就不怎么说了,直接上传源码和图片展示,下面我们直接进入主题介绍 ...
- Idea构建maven项目
Idea构建maven项目: 步骤一: 步骤二: 自动导入Maven项目: 步骤三:增加web 二:搭建spring项目结构: 结构图: 网上都是一大堆的:自己也可以去搜:ssm pom.xml ...