spring入门及web下应用环境的初始化(lp)

 
一、spring入门 
0. new project
1.Add Spring Capabilities,(初学中间配置不清楚的话,全部选择默认)
2.MyClass.java
package com.lipeng.myinterface;
public interface MyClass {
  public void execute();
}
 
3.MyClassImpl.java
package com.lipeng.myimpl;
import com.lipeng.myinterface.MyClass;
public class MyClassImpl implements MyClass {
  public void execute() {
     System. out .println( "test spring successful" );
 }
}
4.applicationContext.xml
< beans >
  < bean id = "myClass" class = "com.lipeng.myimpl.MyClassImpl" />
</ beans >
5.test.java
public class Test {
  public static void main(String[] args) {
ApplicationContext ac = new FileSystemXmlApplicationContext( "…//applicationContext.xml" ); //载入Spring配置文档
     MyClass myclass = (MyClass)ac.getBean( "myClass" );
        //实例化配置的对象,以配置文件的bean节点ID值作为实例引用的关键字。
     myclass.execute();      
 }
}
运行 test.java
如果提示 log4j error....
这是因为springFramework使用的log4j,而我们没有添加log4j的配置文件导致。
6.Log4j配置文件log4j.properties
 log4j.rootLogger = INFO,f
  #
 log4j.appender.f = org.apache.log4j.RollingFileAppender
 log4j.appender.f.File = D : //workspace//test//logs//test.log
 log4j.appender.f.MaxFileSize = 512KB
 log4j.appender.f.MaxBackupIndex = 3
 log4j.appender.f.layout = org.apache.log4j.PatternLayout
 
再次运行 test.java ,输出“ test spring successful ”,表明 MyClass myclass 对象 执行了 MyClassImpl.java execute()
 
这就是 Spring ?就是一个 getBean (),不过,已经尝试完了。
 
二. 搭建spring的Web应用环境
1、下载springFramework最新版本 http://www.springframework.org,将springFramework下的*.jar 拷贝到项目lib中,并引用。
2、在Web.xml中配置spring的启动方式。
springFramework提供两种形式的web context,基于Listener接口的实现和基于Servlet接口的实现。
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<display-name>Test</display-name>
<context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>/WEB-INF/spring_bean.xml</param-value>
</context-param>
<listener>
       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--
<servlet>
       <servlet-name>context</servlet-name>
       <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
       <load-on-startup>2</load-on-startup>
</servlet>
-->
<servlet>
       <servlet-name>Init</servlet-name>
       <servlet-class>com.m5.Initializtion</servlet-class>
       <load-on-startup>3</load-on-startup>
</servlet>
</web-app>
                    
tomcat 启动时会装载/WEB-INF/spring_bean.xml文件,如果不指定contextConfigLocation参数, 默认装载/WEB-INF/applicationContext.xml文件。然后在tomcat启动时初始化一个自定义servlet, 在这里实现springFramework的装载。
Initializtion.java
public class Initializtion extends HttpServlet
{
    public void init(ServletConfig config) throws ServletException
       {
              WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext
              (config.getServletContext());
              super.init(config);  
              InitSpring.Init((AbstractApplicationContext)wac);      (1)
       }
}
                    
 InitSpring.java
public class InitSpring {
       AbstractApplicationContext wac = null;
       private static InitSpring instance = new InitSpring();
       private InitSpring(){}
       public static void Init(AbstractApplicationContext wac){
              instance.wac = wac;
       }
       public static Object getInstance(String objName) {
              return instance.wac.getBean(objName);
       }
       public static Object getInstance(Class objClass){
              return getInstance(objClass.getName());
       }
}
      
经过以上处理,在项目任何一个类中如需得到Spring配置文件中的一个类实例,如下即可: InitSpring.getObject(beanId);
附:
当然了,如果是spring+struts也可以用:
需要注意的是:servlet是org.apache.struts.action.Acation的一个实例变量,所以如下方法只能在继承了Action类的类中使用,一般为了方便,我们为工程所有的action建一个公共父类去管理它BaseDispatchAction 。

import org.springframework.web.context.support.WebApplicationContextUtils;

import org.apache.struts.action.Action.servlet

public class BaseDispatchAction extends Action {

...............

/**
      * Convenience method to get Spring - initialized beans
      *
      * @param name
      * @return Object bean from ApplicationContext
      */
    public Object getBean(String name) {
       ApplicationContext ctx = WebApplicationContextUtils 
            .getRequiredWebApplicationContext( servlet .getServletContext());
       return ctx.getBean(name);
 }
......

 }

 

http://www.easywms.com/easywms/?q=en/node/53

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值