SpringMVC学习指南-Spring框架
Spring框架主要使用依赖注入。实际上,很多牛叉的框架如Google的Guice都是使用依赖注入。
------------------------------------------------------依赖注入和IOC容器--------------------------------------------------------
1.依赖注入
有两个组件A和B,其中A中的一个方法使用到了B中的方法:
public classs A{
public void MethodA{
B b= ...//获取B的一个实例
b.MethodB();
}
}
1)要想使用B中的方法,必须首先获取B的一个实例,如果B是一个具体的类,则可以通过new获取到B的实例。但是如果B是一个接口,这个接口有多个实现,此时我们只能使用这个接口的一个实现,因此降低了A的重用性。
2)依赖注入接管对象的创建工作,并将该对象的引用注入到需要该对象的组件(也即对象)。上例,依赖注入框架会创建对象A和对象B,并将对象B注入到对象A中,这也对象A就可以使用对象B中方法。
3)框架进行依赖注入的前提是这些有依赖其他对象的对象中,定义了set方法或者构造函数。
set方法:框架会去调用这个set方法,将这个B对象注入到A对象。
public classs A{
private B b;
public void MethodA{
b.MethodB();
} public void setB(B b){
this.b=b;
}
}
构造函数:框架会去首先创建B对象,然后创建A对象。
public classs A{
private B b; public A(B b){
this.b=b;
} public void MethodA{
b.MethodB();
}
}
2.IOC容器
Spring通过一个IOC容器可以很完美的管理Java对象依赖关系。程序员无需知道Spring框架的存在,不需要引入任何Spring类型。
3.注解方式
Spring从2.5版本后即可以使用@Autowired注解支持field方式的依赖注入,但有一个问题,程序员必须依赖于Spring的org.springframework.beans.factory.annotation.Autowired,这样无法直接迁移到另一个IOC容器中。
使用Spring,程序几乎将所有重要对象的创建工作交给Spring,并管理配置如何注入依赖。Spring支持两种方式,分别是XML配置和注解。程序中需要一个ApplicationContext对象,代表一个Spring的IOC容器,这个接口有多个实现。一般对于Spring MVC应用来
说,不需要显示创建这个接口的对象,我们可以通过一个SpringServlet来处理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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
...
</beans>
如果需要更强的Spring配置能力,可以在schemalocation属性中添加相应的schema。配置文件可以是一份,也可以分解成多分,以便支持模块化配置。ApplicationContext的实现类支持读取多份配置文件。也可以通过创建一个主配置文件,将该文件导入到其他配置文件,以便复用。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<import resource="config1.xml"/>
<import resource="other.xml"/>
...
</beans>
SpringMVC学习指南-Spring框架的更多相关文章
- springmvc学习指南 之---第25篇 Spring Bean有三种配置方式
writed by不要张艳涛, 从tomcat转到了springmvc 现在开始有点不知道该看什么书了,看完了springmvc 学习指南之后 又查了一些书,好多都是内容相近,在找书的过程之中,发现s ...
- (转)SpringMVC学习(四)——Spring、MyBatis和SpringMVC的整合
http://blog.csdn.net/yerenyuan_pku/article/details/72231763 之前我整合了Spring和MyBatis这两个框架,不会的可以看我的文章MyBa ...
- spring学习12 -Spring 框架模块以及面试常见问题注解等
以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式—在AOP和remoting中被用的比较 ...
- SpringMVC学习指南-前言
SpringMVC是Spring框架中用于Web应用快速开发的一个模块. SpringMVC基于Spring框架.Servlet和JSP. ------------------------------ ...
- 又一本springmvc学习指南 之---第22篇 springmvc 加载.xml文件的bean标签的过程
writedby 张艳涛,今天看spring mvc 学习指南的第2章,特意提下这个作者是how tomcat works 俩个作者之一, 喜欢上一本书的风格,使用案例来讲述原理, 在做第一个案例的时 ...
- springmvc学习指南 之---第27篇 spring如何实现servlet3.0无web.xml 配置servlet对象的
writedby 张艳涛 基于web.xml配置,有人说麻烦,tomcat给按照servlet3.0,实现了基于注解@WebServlet,有人说springmvc的springmvc.xml配置麻烦 ...
- springmvc学习指南 之---第24篇 国际化问题
writedby 张艳涛,今天一天就搞了一个这个问题,主要是下路,遇到springmvc-config.web的配置和拦截器的使用问题, 看了几天的spring发现都没讲拦截器,之前看了两天sprin ...
- springmvc学习笔记一框架的理解
SpringMVC现在在很多公司都很流行,所以这个框架对我们来说,是很重要的. 首先我们对比mvc来分析springmvc这个框架是怎么设计,以及它的工作的流程. 首先来看mvc: 1. 用户发起r ...
- 准备写一些读书笔记,最近在填坑 SQL学习指南 Spring in Action effective Java
把一些读书的理解通过白板图的形式展示出来,加深自己的认识, 因为目前没有工程项目练手,暂时在学习中把这些知识深化认识一下
随机推荐
- SVN文件库移植(转)
SVN文件库移植(转) 分类: 项目管理2013-04-19 11:06 161人阅读 评论(0) 收藏 举报 公司以前用的SVN是安装在windows2003下,用了一年多,现在大家觉得很慢,强烈 ...
- ORACLE中DBMS_SQL的用法
ORACLE中DBMS_SQL的用法 对于一般的select操作,如果使用动态的sql语句则需要进行以下几个步骤: open cursor---> parse---> define ...
- ERC20 Token
pragma solidity ^0.4.8; contract Token{ // token总量,默认会为public变量生成一个getter函数接口,名称为totalSupply(). uint ...
- prop 和 attr 中一些羞羞的事情
引言 前几天做一个迷你京东小项目的时候涉及到一个全选的小功能,一开始用的是 attr,但是效果完全不是自己想要的,当商品按钮点击过一次后,attr就无法对其状态进行更改,最后谷歌了一番发现需要用 pr ...
- ResNet,DenseNet
目录 ResNet BOOM Why call Residual? 发展史 Basic Block Res Block ResNet-18 DenseNet ResNet 确保20层能训练好的前提下, ...
- Python基础—线程、进程和协程
今天已是学习Python的第十一天,来干一碗鸡汤继续今天的内容,今天的鸡汤是:超越别人对你的期望.本篇博客主要介绍以下几点内容: 线程的基本使用: 线程的锁机制: 生产者消费之模型(队列): 如何自定 ...
- //……关于HTTP与HTTPS
图1 图2 第一张访问域名http://www.tsinghua.edu.cn,谷歌浏览器提示不安全链接,第二张是https://www.12306.cn/index,浏览器显示安全,为什么会这样子呢 ...
- JavaScript - 如果...没有方法(xjl456852修改)
本文是对下面这篇文章中存在的错误进行修改,并增加少量注释. 原文出处: JavaScript - 如果...没有方法 http://www.cnblogs.com/silin6/p/4367019.h ...
- HTML5 & CSS3 & font-family
HTML5 & CSS3 & font-family 中文字体的英文名称 宋体* SimSun 黑体* SimHei 微软雅黑* Microsoft YaHei 微软正黑体 http: ...
- 权限管理组件:rbac
rbac: Role_Based Access Control,基于角色的权限控制 权限:一个包含正则表达式 的url就是一个权限 目录结构: rbac这个app中的文件代码如下: rbac/mode ...