`
yuyue
  • 浏览: 23745 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

怎样在项目启动时得到Spring管理的对象

阅读更多
有个项目是用ssh框架的,所有的dao,service都交给spring管理,项目使用的也是openSessioninView这种方式来管理
hibernate的session.现在我想在项目一启动的时候加载数据库的东西,我是准备在一个servlet里面来调dao,service这些东西来操作数据库,可是好像这样不行,得spring管理的bean的时候总是报null,估计是spring还没有加载,这样的问题,应该怎么解决啊?我是把这个Servlet的加载设为1。项目一启动就加载这个Servlet了。
分享到:
评论
3 楼 fangwei 2009-03-05  
SysListener  
yyjn12 写道

项目启动时要做一些操作的话,不要用servlet.servlet是处理请求用的.写一个listener吧.在web.xml里,spring的ContextLoaderListener后边,写上你的listener.


Xml代码

<listener>  
        <listener-class>  
            org.springframework.web.context.ContextLoaderListener   
        </listener-class>  
    </listener>  
  
    <listener>  
        <listener-class>  
            com.my.web.SysListener   
        </listener-class>  
    </listener>  <listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

<listener>
<listener-class>
com.my.web.SysListener
</listener-class>
</listener>然后可以在listener中:


Java代码

public class SysListener implements ServletContextListener{   
    public void contextInitialized(ServletContextEvent se){   
        WebApplicationContext wa =   WebApplicationContextUtils.getWebApplicationContextse.getServletContext());   
        IXXXService xxxService = (IXXXService )wa.getBean("xxxService ");   
        //Do something here...   
    }   
}  public class SysListener implements ServletContextListener{
    public void contextInitialized(ServletContextEvent se){
        WebApplicationContext wa =   WebApplicationContextUtils.getWebApplicationContextse.getServletContext());
        IXXXService xxxService = (IXXXService )wa.getBean("xxxService ");
        //Do something here...
    }
}


你好,请问只能用编码的方式取得bean吗?我试过将SysListener交给spring来管理,并使用setter来注入service对象,但是web容器似乎会根据web.xml中的listener配置重新生成一个SysListener对象,生成的SysListener对象中的service为空。能否将listener也交给spring管理呢?
2 楼 yuyue 2008-04-01  
谢谢yyjn12,我会先按你说的方法试一下。
Servlet是可以在项目启动时加载的
把启动级别改成正数
<load-on-startup>1</load-on-startup>
然后重写
@Override
public void init() throws ServletException {
// TODO Auto-generated method stub
super.init();
}
在init()方法里面就可以写你准备让项目启动时执行的方法了。看样子是servlet在spring加载前执行了,所以得不到spring的注入 。
1 楼 yyjn12 2008-04-01  
项目启动时要做一些操作的话,不要用servlet.servlet是处理请求用的.写一个listener吧.在web.xml里,spring的ContextLoaderListener后边,写上你的listener.

<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>

	<listener>
		<listener-class>
			com.my.web.SysListener
		</listener-class>
	</listener>


然后可以在listener中:

public class SysListener implements ServletContextListener{
    public void contextInitialized(ServletContextEvent se){
        WebApplicationContext wa =   WebApplicationContextUtils.getWebApplicationContextse.getServletContext());
        IXXXService xxxService = (IXXXService )wa.getBean("xxxService ");
        //Do something here...
    }
}

相关推荐

    hibernate struts2 和spring的整合项目

    在这个项目中,Spring主要负责管理对象(包括Hibernate和Struts2中的组件),以及提供事务管理。核心概念包括IoC容器、Bean配置(beans.xml)、AOP代理、数据源和事务管理器。 4. **整合过程**: - 配置Spring:...

    通过spring管理的web工程的junit单元测试方法四

    Spring容器负责管理对象的生命周期,包括初始化、装配依赖关系以及销毁等过程。在单元测试中,我们可以利用Spring的TestContext框架来启动一个临时的容器,以便在隔离环境中运行测试。 1. **Spring TestContext框架...

    最新spring官网下载jar包 spring-4.2.4(免费)

    首先,Spring的核心特性包括依赖注入(Dependency Injection,DI),它简化了组件之间的关系,允许开发者通过配置来管理对象的生命周期和相互依赖。这种模式使得代码更加松耦合,易于测试和维护。在4.2.4版本中,DI...

    Spring源码

    3. **Bean工厂与ApplicationContext**:Bean工厂是Spring管理对象的基本容器,而ApplicationContext则是在Bean工厂的基础上增加了更多的企业级服务,如国际化、事件传播、资源加载等。ApplicationContext通常用于...

    spring4.2.0官方开发文档

    Spring框架的核心是依赖注入(Dependency Injection,DI),它允许开发者在运行时通过容器来管理对象的创建和装配,降低了代码的耦合度。在Spring 4.2.0中,这一特性得到了进一步优化,提供了更加灵活的配置方式,...

    eclipse下构建spring与OSGI项目

    通过XML配置或注解方式,Spring可以管理对象的生命周期,实现服务的解耦,使得组件间的依赖关系更加清晰。 OSGi则提供了一种动态模块化机制,每个模块称为一个bundle。在OSGi环境中,bundle可以独立加载、启动、...

    spring jar包最新版

    BeanFactory是Spring的IoC容器,负责创建、配置和管理对象(称为bean)。ApplicationContext不仅包含BeanFactory的功能,还添加了处理消息资源、应用事件以及集成其他Spring模块的能力。 2. **AOP**:Spring的AOP...

    Spring Boot 微框架.pdf

    3. 热部署:热部署(Hot Deployment)是指在运行时更新应用程序而不需要重新启动服务器。Spring Boot支持热部署,这意味着开发者可以在不中断应用运行的情况下,更新应用的类或配置文件。 4. 整合MyBatis:MyBatis...

    后端:Spring6相关项目

    - **Bean容器**:管理对象的生命周期和装配,提供对象间协作的能力。 - **Spring MVC**:用于构建Web应用程序,提供模型-视图-控制器架构。 2. **Spring6的新特性** - **Java 17支持**:Spring6将全面支持Java ...

    Spring教程  主要内容:介绍Spring的历史,Spring的概论和它的体系结构,重点阐述它在J2EE中扮演的角色。

    然而,随着Spring Boot的出现,这些问题得到了一定程度的缓解,Spring Boot简化了Spring应用的启动和配置过程。 6. Spring的IoC容器 IoC容器是Spring的核心,负责管理对象的生命周期和依赖关系。通过XML、注解或...

    Spring框架jar包全

    2. **Spring Beans**:这个模块定义了Spring容器,它负责管理对象(也称为bean)的生命周期和装配。XML配置文件或注解可以用来描述bean的属性和依赖关系。 3. **Spring AOP**:面向切面编程模块,允许开发者定义横...

    spring4.2.rar

    Spring的核心特性之一是依赖注入,它允许开发者通过配置文件或注解来管理对象之间的依赖关系,降低了代码间的耦合度。AOP则用于实现横切关注点,如日志、事务管理等,通过切面和通知机制,使代码更整洁。 2. **...

    十分钟上手spring boot

    - 使用Spring框架来管理对象的生命周期。 - **17.2. 依赖注入** - Spring Boot通过依赖注入来实现组件之间的解耦。 **18. 使用@SpringBootApplication注解** - `@SpringBootApplication`注解包含了`@...

    spring 源码四

    实现IoC的关键是DI(Dependency Injection,依赖注入),通过构造器注入、设值注入或接口注入等方式,让对象在运行时获得所需的依赖。在Spring源码中,我们可以看到BeanFactory和ApplicationContext是如何实现依赖...

    spring4.1.6jar包

    8. **Spring Expression Language (SpEL)**:SpEL是Spring提供的强大表达式语言,用于在运行时查询和操作对象图。在4.1.6版本中,它的功能更加完善,可以用于更复杂的逻辑判断和数据操作。 为了使用Spring 4.1.6,...

    spring4 jar包

    IoC通过管理对象的创建和依赖关系,使代码更加解耦和易于测试。在Spring4中,IoC容器的性能得到了优化,支持了Java 8的新特性,并增强了对CDI(Contexts and Dependency Injection for Java)的兼容性。 其次是AOP...

    spring-5.2.5.RELEASE-dist.zip

    1. **依赖注入 (Dependency Injection, DI)**:Spring 框架的核心特性之一是依赖注入,它允许对象之间的关系在运行时被定义和管理,而不是硬编码在类内部。这增强了代码的可测试性和可维护性。在 5.2.5 版本中,DI ...

    spring5.0.8

    在Spring中,对象的依赖关系由框架管理,而不是由对象自身创建和维护。这使得代码更易于测试、维护和重用,因为它减少了对象之间的硬编码依赖。 其次,Spring框架提供了AOP(Aspect-Oriented Programming,面向切面...

    spring 3.2.5 完整JAR

    Spring 3.2.5 继续支持并优化了依赖注入,这是一种设计模式,允许对象之间的关系在运行时被配置,而不是硬编码。DI 可以通过 XML 配置、注解或基于Java的配置实现,降低了对象间的耦合性,提高了代码的可测试性和可...

    spring-mq完美整合示例

    ActiveMQ具有高可用性、可扩展性以及强大的管理工具,因此在实际项目中得到了广泛使用。 接下来,我们探讨Spring与ActiveMQ的整合过程: 1. **配置ActiveMQ**:首先,我们需要在本地或远程部署一个ActiveMQ服务器...

Global site tag (gtag.js) - Google Analytics