- 浏览: 52668 次
- 性别:
- 来自: 厦门
最新评论
-
zhangyanlinya:
...
Quartz中时间表达式的设置 -
lvye351:
HiveDB 哪个商业公司在支持?没搜到。且github上看 ...
数据库sharding -
buyajun:
XML在进行XSD校验时,怎样设置,才能让抛出英文错误信息,而 ...
xml schema校验XML合法性
Spring 学习--part1:
1.spring框架:
七个模块
(1)核心容器:提供了spring框架的核心功能.BeanFactory是spring核心容器的主要组件.它通过控制反转将应用程序的配置和依赖性规范与实际的应用程序代码分开.这是整个spring的基础.
(2)Spring Context:通过配置文件,向Spring框架提供上下文信息.它构建在BeanFactory之上.另外增加了国际化/资源访问等功能.
(3)Spring AOP:Spring提供了面向方面编程的功能,因为Spring的核心是基于控制反转的,所以可以很容易地使Spring的依赖注入为AOP提供支持.
(4)Spring DAO:提供了一个简单而又有效的JDBC应用,使用它的DAO就足以应付开发人员的日常应用了.
(5)Spring ORM:Spring除了有自己的JDBC应用之外,还提供了对其它一些ORM框架的支持.
(6)Spring Web:提供了简化的处理多部分请求以及将请求参数绑定到域对象的任务.
(7)Spring MVC
详细说明可参见: http://guanjh.iteye.com/blog/123978
自己动手山寨一个spring框架: http://www.iteye.com/topic/413449
------- 之一: 控制反转&BeanFactory
1)控制反转
(英文缩写为IoC),也叫做依赖注入(Dependency Injection),简称DI。
应用控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用,传递给它。也可以说,依赖被注入到对象中。所以,控制反转是,关于一个对象如何获取它所依赖的对象的引用。
Martin Fowler 將 IoC 分成三類。
Type 1 : 基於interface (interface injection)。Depending object 需要實作(implement) 特定 interface 以供框架注入所需物件。
Type 2 : 基於setter (setter injection)。Depending object 需要實現特定 setter 方法 (但不需要依賴特定interface),
Type 3 : 基於constructor (constructor injection)
2)BeanFactory与ApplicationConText比较
使用BeanFactory从xml配置文件加载bean: import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
public class XmlConfigWithBeanFactory {
public static void main(String[] args) {
XmlBeanFactory factory = new XmlBeanFactory(new FileSystemResource(
"build/beans.xml"));
}
}
使用ApplicationConText从xml配置文件加载bean:
public class XmlConfigWithApplication{
public static void main(String[] args){
ApplicationContext application = new ClassPathXmlApplicationContext(beans.xml"));
application.getBean("BeanName");
}
}
ApplicationContext和BeanFacotry相比,提供了更多的扩展功能,但其主要区别在于后者是延迟加载,如果Bean的某一个属性没有注入,BeanFacotry加载后,直至第一次使用调用getBean方法才会抛出异常;而ApplicationContext则在初始化自身是检验,这样有利于检查所依赖属性是否注入;所以通常情况下我们选择使用ApplicationContext.
3) 实例化Bean的过程
当从BeanFactory中通过getBean()方法获取一个bean的时候,BeanFactory会经过如下的步骤来构建Bean的实例,这正是实例化Bean的过程:
1、调用Bean的默认构造方法,或者在指定的构造方法,生成bean实例(暂称为instance1);
3、如果Bean的配置文件中注入了Bean属性值,则在instance1基础上进行属性注入形成instance2,这种注入是覆盖性的。
2、如果Bean实现了InitializingBean接口,则调用afterPropertiesSet()方法,来改变或操作instance2,得到instance3;
4、如果Bean的配置文件中指定了init-method="init"属性,则会调用指定的初始化方法,则在instance3的基础上调用初始化方法init(),将对象最终初始化为instance4;当然,这个初始化的名字是任意的。
4) 加载spring配置文件的常用三种方法
1方法(web.xml)——————当前项目使用该方法
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-*.xml</param-value>
</context-param>
<!--Spring Context loader-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
----------
2方法(web.xml)
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-*.xml</param-value>
</context-param>
<servlet>
<servlet-name>SpringContextServlet</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>
-----------
3方法在(struts-config.xml)中加载
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml,
/WEB-INF/action-servlet.xml"/>
</plug-in>
1.spring框架:
七个模块
(1)核心容器:提供了spring框架的核心功能.BeanFactory是spring核心容器的主要组件.它通过控制反转将应用程序的配置和依赖性规范与实际的应用程序代码分开.这是整个spring的基础.
(2)Spring Context:通过配置文件,向Spring框架提供上下文信息.它构建在BeanFactory之上.另外增加了国际化/资源访问等功能.
(3)Spring AOP:Spring提供了面向方面编程的功能,因为Spring的核心是基于控制反转的,所以可以很容易地使Spring的依赖注入为AOP提供支持.
(4)Spring DAO:提供了一个简单而又有效的JDBC应用,使用它的DAO就足以应付开发人员的日常应用了.
(5)Spring ORM:Spring除了有自己的JDBC应用之外,还提供了对其它一些ORM框架的支持.
(6)Spring Web:提供了简化的处理多部分请求以及将请求参数绑定到域对象的任务.
(7)Spring MVC
详细说明可参见: http://guanjh.iteye.com/blog/123978
自己动手山寨一个spring框架: http://www.iteye.com/topic/413449
------- 之一: 控制反转&BeanFactory
1)控制反转
(英文缩写为IoC),也叫做依赖注入(Dependency Injection),简称DI。
应用控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用,传递给它。也可以说,依赖被注入到对象中。所以,控制反转是,关于一个对象如何获取它所依赖的对象的引用。
Martin Fowler 將 IoC 分成三類。
Type 1 : 基於interface (interface injection)。Depending object 需要實作(implement) 特定 interface 以供框架注入所需物件。
Type 2 : 基於setter (setter injection)。Depending object 需要實現特定 setter 方法 (但不需要依賴特定interface),
Type 3 : 基於constructor (constructor injection)
2)BeanFactory与ApplicationConText比较
使用BeanFactory从xml配置文件加载bean: import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
public class XmlConfigWithBeanFactory {
public static void main(String[] args) {
XmlBeanFactory factory = new XmlBeanFactory(new FileSystemResource(
"build/beans.xml"));
}
}
使用ApplicationConText从xml配置文件加载bean:
public class XmlConfigWithApplication{
public static void main(String[] args){
ApplicationContext application = new ClassPathXmlApplicationContext(beans.xml"));
application.getBean("BeanName");
}
}
ApplicationContext和BeanFacotry相比,提供了更多的扩展功能,但其主要区别在于后者是延迟加载,如果Bean的某一个属性没有注入,BeanFacotry加载后,直至第一次使用调用getBean方法才会抛出异常;而ApplicationContext则在初始化自身是检验,这样有利于检查所依赖属性是否注入;所以通常情况下我们选择使用ApplicationContext.
3) 实例化Bean的过程
当从BeanFactory中通过getBean()方法获取一个bean的时候,BeanFactory会经过如下的步骤来构建Bean的实例,这正是实例化Bean的过程:
1、调用Bean的默认构造方法,或者在指定的构造方法,生成bean实例(暂称为instance1);
3、如果Bean的配置文件中注入了Bean属性值,则在instance1基础上进行属性注入形成instance2,这种注入是覆盖性的。
2、如果Bean实现了InitializingBean接口,则调用afterPropertiesSet()方法,来改变或操作instance2,得到instance3;
4、如果Bean的配置文件中指定了init-method="init"属性,则会调用指定的初始化方法,则在instance3的基础上调用初始化方法init(),将对象最终初始化为instance4;当然,这个初始化的名字是任意的。
4) 加载spring配置文件的常用三种方法
1方法(web.xml)——————当前项目使用该方法
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-*.xml</param-value>
</context-param>
<!--Spring Context loader-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
----------
2方法(web.xml)
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-*.xml</param-value>
</context-param>
<servlet>
<servlet-name>SpringContextServlet</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>
-----------
3方法在(struts-config.xml)中加载
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml,
/WEB-INF/action-servlet.xml"/>
</plug-in>
发表评论
-
一致性hash详解
2010-10-07 10:22 1185参考网址:Consistent hashing http ... -
https 实践:CAS实践复杂
2010-08-05 10:14 787http://www.iteye.com/topic/4012 ... -
https 实践:tomcat配置https(简单)
2010-08-05 08:32 1112给Tomcat配置HTTPS 1.首先用jdk自带的工具ke ... -
抽像类的学习纪要
2010-04-29 17:52 0抽像类的学习纪要 因为工程中要用到,老是搞不清楚,抽像类有什 ... -
(转)jsp/servlet、浏览器、tomcat之间的编码知识汇总
2010-04-22 16:19 1097(转)jsp/servlet、浏览 ... -
httpclient组件使用经验
2010-04-22 16:14 2980httpclient组件使用经验 ------------- ... -
Difference between request.getParameter() and request.getAttribute()
2010-04-21 15:15 0Difference between request.ge ... -
JAVA map的遍列方法
2010-04-12 17:19 0JAVA map的遍列方法 Map map = ... -
JDK实现动态代理的例子-proxy
2010-04-06 10:37 2019JDK实现动态代理的例子-proxy 给出个JDK实现动态代 ... -
AOP的理解一
2010-04-06 10:34 0AOP的理解一 Aop面向方面编程, 方面是指问题的一个 ... -
比较:class.getClassLoader().getResourceAsStream 与class.getResourceAsStream
2010-03-30 15:59 0比较:class.getClassLoader().getRe ... -
获取文件操作
2010-03-30 15:35 0获取文件操作 (摘抄自:http://gavin-chen ... -
REST学习
2010-03-29 17:19 0REST学习(入门) REST架构遵循了CRUD原则,CR ... -
常用的请求转发方法
2010-02-26 22:52 1004常用的请求转发方法 将某http请求转发给别的servle ... -
tomcat启动mysql报错:SQLNestedException: Cannot create PoolableConnectionFactory
2010-02-24 17:16 5165tomcat启动mysql报错:SQLNestedExcept ... -
httpClient使用步骤
2010-02-12 12:02 1021httpClient使用步骤 1. 创建 HttpClien ... -
常用网址保存
2010-02-09 15:26 915java 基础知识了解好地方:http://lavasoft. ... -
java 文件操作注意事项(教训)
2010-02-09 12:00 1246文件操作注意事项 1)为了程序的健壮性,请在文件操作前检查文 ...
相关推荐
以下是对"Spring学习资料大全"的详细解析: 1. **Spring框架基础**: - **依赖注入(Dependency Injection,DI)**:Spring的核心特性之一,它允许开发者在运行时通过XML配置或注解方式来管理对象间的依赖关系,...
本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...
本资源集合围绕"spring学习.zip",提供了多本深入讲解Spring及其相关技术的电子书籍,旨在帮助读者深入理解和掌握Spring生态。 1. **《深入实践Spring Boot.陈韶健.pdf》**:这本书详细介绍了Spring Boot,它是...
《SpringCloud视频学习》 SpringCloud作为微服务架构的重要实现框架,深受广大开发者的喜爱。本资源包含了两部关于SpringCloud的视频教程,由尚硅谷出品,内容详实且易于理解,是学习SpringCloud的理想资料。 一、...
Spring学习指南是一份提供Spring框架学习资料的文档,由夏昕编写。Spring是一个开源的Java平台,它提供了全面的编程和配置模型。该框架的主要特点是为Java平台提供了一个轻量级的、全功能的开源应用框架,目的是使得...
由于提供的文件内容中存在大量重复的网址信息,并没有实际的教学内容或者相关知识点,我将从标题...学习Spring也是一个不断实践和解决问题的过程,通常建议开发者在实际项目中边做边学,加深对知识的理解和应用。
"spring第一个学习的例子"旨在帮助初学者快速入门Spring框架,通过实际操作理解其基本概念和工作原理。 首先,Spring的核心特性之一是依赖注入(Dependency Injection,简称DI)。这个例子可能包含了如何在配置文件...
根据提供的压缩包文件名,我们可以推测这是一个逐步学习Spring的系列笔记。从"Spring_day1"开始,可能涵盖了Spring的基础概念、环境搭建和基本配置。"Spring_day2"可能涉及了依赖注入和AOP的深入讲解。"Spring_day3...
Spring框架是Java开发中最常用的轻量级开源框架之一,它以其强大的依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)能力而著名。本篇将深入探讨Spring的核心概念、主要模块...
SpringCloud学习手册是一个针对微服务架构的资源包,主要涵盖了SpringCloud的相关知识,适用于初学者。SpringCloud作为Java领域中的主流微服务框架,为开发者提供了构建分布式系统所需的工具和服务发现、配置管理、...
其次,"SpringGuide.pdf" 可能是另一份Spring的学习指南或者教程,可能涵盖了Spring的基本概念、核心组件、实战示例等内容。这份文档可能会深入探讨Spring的IoC容器、AOP原理,以及如何整合其他技术,如MyBatis、...
本学习提纲旨在为初学者提供一份详尽的Spring 2.0学习指南,帮助他们系统地掌握这个框架的核心概念和技术。 一、Spring概述 1. Spring框架介绍:理解Spring的起源,目标及主要功能,包括简化Java EE开发、提供容器...
这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...
Spring Cloud 学习笔记 本笔记主要介绍了从单体架构到微服务架构的演变过程,以及 Spring Cloud 中的微服务架构搭建。下面是本笔记的详细知识点总结: 一、单体架构 单体架构是指整个系统只有一个工程,打包往往...
这份"Spring框架学习笔记"涵盖了Spring框架的基础知识、核心组件以及高级特性,对于初学者来说是一份宝贵的资料。 一、Spring框架概述 Spring框架是为了解决企业应用开发的复杂性而设计的,它提供了一个全面的基础...
在Spring框架的学习过程中,我们可以深入理解到它在Java企业级应用中的核心作用。Spring作为一个开源的、全面的企业级应用开发框架,它简化了Java EE(Enterprise Edition)开发,提供了丰富的功能,包括依赖注入...
总的来说,这个压缩包提供了一个全面的Spring学习路径,从基本概念到高级应用,涵盖了Spring框架的各个方面。无论是初学者还是经验丰富的开发者,都可以从中受益。通过阅读和实践这些文档,你将能够熟练掌握Spring...
Spring框架是Java开发中不可或缺的一部分,它以...通过学习以上这些知识点,你可以全面掌握Spring框架,并将其应用于实际项目中,提高开发效率和应用的稳定性。Spring的灵活性和强大功能使其成为Java开发者的首选框架。
这个“springcloud视频学习7”似乎是一个专门针对Spring Cloud的学习资源,特别是围绕Eureka这一核心组件的讲解。 Eureka是Spring Cloud中的一个关键组件,主要负责服务注册与发现。在微服务架构中,每个服务都是...
本篇文章将围绕“Spring 3.3学习案例”这一主题,深入探讨SpringMVC与Mybatis的集成,旨在帮助读者掌握这两个组件的核心概念和实践技巧。 一、SpringMVC简介 SpringMVC是Spring框架的一个模块,专门用于构建Web应用...