spring的使用《一》
在前边的文章中说明了,如何搭建一个spring的开发环境,简单回顾下就是把spring的jar包导入工程中,如果是在javaWeb项目中是放在lib目录下,然后在web.xml文件中进行配置,配置spring的配置文件的路径,上篇文章中忘记贴spring的配置文件了,具体的配置文件入下,
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> <bean id="address" class="com.cn.test.spring.Address"></bean> </beans>
从上边的配置文件中可以看到,配置了一个bean,其ID为address,类的全限类名为com.cn.test.spring.Address。由于使用了spring那么类的创建都由spring来管理,我们在java代码中不需要使用new关键字创建一个对象,那么要如何获得一个由spring创建的类的对象呢,下面是本文的重点。
如何从spring环境中获得一个实例对象
要从spring中获得一个类的实例,可以通过spring的上下文ApplicationContext对象,ApplicationtContext是一个接口,也称为IOC容器,另外还有BeanFactory容器。它有几个比较重要的实现类,ClassPathXmlApplicationContext、FileSystemXmlApplicationContext、XmlWebApplicationContext
ClassPathXmlApplicationContext
从类路径下读取配置文件,即从src下读取spring的配置文件,如下,
ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(
"spring-application.xml"); Address address = (Address) appContext.getBean("address");
从类路径下读取了spring-application.xml,然后获得Address的实例对象
这种方式使用于在java项目下获得IOC容器,并取得类的实例。
FileSystemXmlApplicationContext
从文件系统中读取配置文件,这个类用的不多
XmlWebApplicationContext
在jsp或servlet中获得applicationContext容器,如下是在servlet中获得applicationContext,
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
WebApplicationContext wac=WebApplicationContextUtils.getRequiredWebApplicationContext(config.getServletContext()); //XmlWebApplicationContext wac=(XmlWebApplicationContext) WebApplicationContextUtils.getRequiredWebApplicationContext(config.getServletContext());
Address address=(Address)wac.getBean("address");
address.printInfo(); }
上面的代码是servlet中的init方法,在此方法中可以获得在javaWeb环境下获得IOC容器(前提是在web.xml中已经配置了spring)。上面两种方式都可以使用。如果外部要使用IOC容器,则可以从这里入手。
下面对在javaWeb环境下配置spring的环境做如下补充,
在Java项目中通过ClassPathXmlApplicationContext类手动实例化ApplicationContext容器是最常用的。但对于Web项目就不行了,Web项目的启动是由相应的Web服务器负责的;所以,在Web项目中ApplicationContext容器的实例化工作最好交给Web服务器来完成。这里以tomcat服务器为例。
在javaWeb环境下配置spring的环境有两种方式,第一种是使用listener,另一种是使用servlet;这两种方式都要使用配置文件,默认是类路径下的application-context.xml,如果没有,则必须使用<context-param>标签指定,具体的方式可查看上篇文章。
使用listener
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
使用servlet
这种方式是为了兼顾Servlet2.3及以下规范的Servlet容器,在tomcat5中已经支持servlet2.4了,所以第一种方式是主流的,
<servlet> <servlet-name>context</servlet-name> <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
综上是spring在java项目中的使用
有不正之处欢迎指出
谢谢
spring的使用《一》的更多相关文章
- 基于spring注解AOP的异常处理
一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...
- 玩转spring boot——快速开始
开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv web应用程序 打开Eclipse,新建Maven项目 选择quic ...
- Spring基于AOP的事务管理
Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...
- [Spring]IoC容器之进击的注解
先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺眼. 概述 Spring2.5 引入了注解. 于是,一个问题产生了:使用注解方式注入 JavaB ...
- 学习AOP之透过Spring的Ioc理解Advisor
花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...
- 学习AOP之深入一点Spring Aop
上一篇<学习AOP之认识一下SpringAOP>中大体的了解了代理.动态代理及SpringAop的知识.因为写的篇幅长了点所以还是再写一篇吧.接下来开始深入一点Spring aop的一些实 ...
- 学习AOP之认识一下Spring AOP
心碎之事 要说知道AOP这个词倒是很久很久以前了,但是直到今天我也不敢说非常的理解它,其中的各种概念即抽象又太拗口. 在几次面试中都被问及AOP,但是真的没有答上来,或者都在面上,这给面试官的感觉就是 ...
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...
- Spring之旅(2)
Spring简化Java的下一个理念:基于切面的声明式编程 3.应用切面 依赖注入的目的是让相互协作的组件保持松散耦合:而AOP编程允许你把遍布应用各处的功能分离出来形成可重用的组件. AOP面向切面 ...
- Spring之旅
Java使得以模块化构建复杂应用系统成为可能,它为Applet而来,但为组件化而留. Spring是一个开源的框架,最早由Rod Johnson创建.Spring是为了解决企业级应用开发的复杂性而创建 ...
随机推荐
- OutputCache属性详解(二)一 Location
目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...
- OutputCache属性详解(三)— VaryByHeader,VaryByCustom
目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...
- Jsp练习——连接数据库模拟登录
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- UML基础系列:用例图
1. 概述 用例图(Use Case Diagram)描述“用户.需求.系统功能单元”之间的关系,是参与者所能观察和使用到的系统功能模型图. 用例图用于需求分析阶段 用例图包含6个基本元素:参与者(A ...
- IO流-概览
一. 抽象类InputStream和OutputStream构成了了IO类的基础 因为面向字节流的对象不便于处理Unicode形式储存的信息,所以从抽象类Reader和Writer中继承出专门用于处理 ...
- Uvaoj 11624 - Fire!
/************************************************************************* > File Name: test.cpp ...
- RobotFramework - Tips
1 --- API的使用 Robot Framework的版本发展是向下包容,建议尽量使用robot本身的API. 例如:通过导入logger.py(...\Lib\site-packages\rob ...
- Linux - 终端语言设置
查看当前终端用户的语言设置 locale - get locale-specific information : locale |grep LANG 改变当前终端用户的语言设置(临时生效) 中文UTF ...
- ibatis轻松入门
近日,由于公司项目应用开发的逻辑层使用的是iBatis.上网查了些资料,自己写了点demo入门.感觉良好.iBatis实在是比Hibernate很容易入门,贡献出来与各路菜鸟分享(后文附源码),希望得 ...
- 在Spring Boot中使用Https
本文介绍如何在Spring Boot中,使用Https提供服务,并将Http请求自动重定向到Https. Https证书 巧妇难为无米之炊,开始的开始,要先取得Https证书.你可以向证书机构申请证书 ...