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
把一些读书的理解通过白板图的形式展示出来,加深自己的认识, 因为目前没有工程项目练手,暂时在学习中把这些知识深化认识一下
随机推荐
- expdp dblink
客户端创建dblik create public database link [link_name] connect to {username} identified by "{passwo ...
- ehcache的学习笔记(一)
学习ehcache文档: 介绍:Ehcache是一个开源的项目,用来提高性能的基于标准化的缓存,无需使用数据库,简化了可扩展性.他是最广泛使用的基于java的缓存,因为他是强壮的,被证实的,功能全面的 ...
- IDEA基本使用及配置(1)
前言:现在IDEA用的人很多,我以前都是用Eclipse的,都说这个IDE比较智能.好用,于是学习一下. IDEA与Eclipse目录结构对比: IDEA中的Project相当于Eclispe中的wo ...
- ubuntu 16.4 安装mysql-python
sudo apt-get install python-pip python-dev libmysqlclient-dev pip install MySQL-python
- cgi fastcgi php-cgi php-fpm
参考: 摘至:http://www.cnblogs.com/thinksasa/p/4497567.html 详说fastcgi,php-fpm的区别:http://segmentfault.co ...
- sqlserver常用简单语句
1.增 插入内容 insert into <表名> (列1,列2,列3) values ('值1','值2','值3') 检索出的内容插入到另外一张表 insert into <表名 ...
- Codeforces Round #413 B T-shirt buying (STL set)
链接:http://codeforces.com/contest/799/problem/B 题意: 给定n件衣服,对于第i(1<i<=n)件衣服,分别有价格pi,前颜色ai,后颜色bi三 ...
- os系统下安装Python2和Python3
一.下载Xcode工具 1.在App Store 里面下载并安装Xcode 2.安装好Xcode后就打开它,首次进入会有一些LicenceAgreement,点同意就是了,然后就进入到 这个界面: 3 ...
- 100ns周期200ns的正脉冲波形形状描述
用FPGA控制16245产生正脉冲,正脉冲的形状是上升会有过冲现象,下降会有震荡产生,做了个实验室,用同轴电缆承载这种信号,在同轴电缆的末端会产生的波形是标准的衰减震荡. (简单的入pcb,经过继电器 ...
- 在win10配置环境变量
从win7升级成win10后找不到在哪配置环境变量...手动再见ヾ( ̄▽ ̄)Bye~,废话不多说,下面开始图文模式: 1)打开文件资源管理器,点左上角的"计算机"