在前边的文章中说明了,如何搭建一个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的使用《一》的更多相关文章

  1. 基于spring注解AOP的异常处理

    一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...

  2. 玩转spring boot——快速开始

    开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv web应用程序 打开Eclipse,新建Maven项目 选择quic ...

  3. Spring基于AOP的事务管理

                                  Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...

  4. [Spring]IoC容器之进击的注解

    先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺眼. 概述 Spring2.5 引入了注解. 于是,一个问题产生了:使用注解方式注入 JavaB ...

  5. 学习AOP之透过Spring的Ioc理解Advisor

    花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...

  6. 学习AOP之深入一点Spring Aop

    上一篇<学习AOP之认识一下SpringAOP>中大体的了解了代理.动态代理及SpringAop的知识.因为写的篇幅长了点所以还是再写一篇吧.接下来开始深入一点Spring aop的一些实 ...

  7. 学习AOP之认识一下Spring AOP

    心碎之事 要说知道AOP这个词倒是很久很久以前了,但是直到今天我也不敢说非常的理解它,其中的各种概念即抽象又太拗口. 在几次面试中都被问及AOP,但是真的没有答上来,或者都在面上,这给面试官的感觉就是 ...

  8. 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...

  9. Spring之旅(2)

    Spring简化Java的下一个理念:基于切面的声明式编程 3.应用切面 依赖注入的目的是让相互协作的组件保持松散耦合:而AOP编程允许你把遍布应用各处的功能分离出来形成可重用的组件. AOP面向切面 ...

  10. Spring之旅

    Java使得以模块化构建复杂应用系统成为可能,它为Applet而来,但为组件化而留. Spring是一个开源的框架,最早由Rod Johnson创建.Spring是为了解决企业级应用开发的复杂性而创建 ...

随机推荐

  1. OutputCache属性详解(二)一 Location

    目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...

  2. OutputCache属性详解(三)— VaryByHeader,VaryByCustom

    目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...

  3. Jsp练习——连接数据库模拟登录

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  4. UML基础系列:用例图

    1. 概述 用例图(Use Case Diagram)描述“用户.需求.系统功能单元”之间的关系,是参与者所能观察和使用到的系统功能模型图. 用例图用于需求分析阶段 用例图包含6个基本元素:参与者(A ...

  5. IO流-概览

    一. 抽象类InputStream和OutputStream构成了了IO类的基础 因为面向字节流的对象不便于处理Unicode形式储存的信息,所以从抽象类Reader和Writer中继承出专门用于处理 ...

  6. Uvaoj 11624 - Fire!

    /************************************************************************* > File Name: test.cpp ...

  7. RobotFramework - Tips

    1 --- API的使用 Robot Framework的版本发展是向下包容,建议尽量使用robot本身的API. 例如:通过导入logger.py(...\Lib\site-packages\rob ...

  8. Linux - 终端语言设置

    查看当前终端用户的语言设置 locale - get locale-specific information : locale |grep LANG 改变当前终端用户的语言设置(临时生效) 中文UTF ...

  9. ibatis轻松入门

    近日,由于公司项目应用开发的逻辑层使用的是iBatis.上网查了些资料,自己写了点demo入门.感觉良好.iBatis实在是比Hibernate很容易入门,贡献出来与各路菜鸟分享(后文附源码),希望得 ...

  10. 在Spring Boot中使用Https

    本文介绍如何在Spring Boot中,使用Https提供服务,并将Http请求自动重定向到Https. Https证书 巧妇难为无米之炊,开始的开始,要先取得Https证书.你可以向证书机构申请证书 ...