有时候需要启动一个后台守护线程,做一些别的事情。这时候怎么获取spring里的Service、Dao、Action等对象?(注意自己new一个是不行的,因为脱离了spring的管理,其中IoC资源都没有被注入)。
一个解决办法是,重新弄一个Spring:
XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource(
"applicationContext.xml"));
// 从配置文件中获取对象
IService hello = (IService) factory.getBean("service");
hello.service("Helloween");
factory.destroySingletons();
这是最笨的办法,也是不科学的。这样的话,web中会有两个spring容器,两套service、dao等。
--------------------------------------------------------------
比较科学的办法,是用Spring的方法获取到当前的容器(也是当前应用下唯一的spring容器),并从中获取资源。代码为:
WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();
IService service = (IService) context.getBean("service");
----------------------------------------------------------------
ContextLoader.getCurrentWebApplicationContext()方法 可以从spring的加载listener中追踪到:
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
看一下这个类的代码就知道了。
相关推荐
在Spring框架中,Bean是应用程序的核心组成部分,它们由Spring容器管理并负责实例化、装配以及初始化。本节主要探讨了Spring中Bean的四种创建方式及其优缺点。 首先,Spring中的Bean默认是单例模式,这意味着在整个...
4. 异步方法支持:Spring 4.2引入了异步方法执行的支持,通过`@Async`注解,可以在后台线程中执行方法,提高应用的并发性能。 5. Spring Expression Language (SpEL)增强:Spring的表达式语言在4.2版本中进行了优化...
与`ScheduledExecutorService`不同,`ThreadPoolTaskScheduler`是Spring的`TaskScheduler`接口的一个实现,它提供了与Spring容器的集成,可以方便地注入bean并进行依赖注入。 2. **如何使用ThreadPoolTaskScheduler...
6. **Async Support**:引入异步处理支持,允许在后台线程中执行方法,提高应用性能。 7. **Web Flow**:提供了流程控制和状态管理的框架,适用于构建复杂的交互式Web应用。 这些文档对于学习和使用Spring框架的...
通过以上步骤,开发者可以实现Spring容器对Jbpm的管理和控制,实现流程的自动化启动、任务调度以及事务管理等高级功能。在实际开发过程中,根据具体需求,可能还需要对异常处理、日志记录、权限控制等方面进行定制化...
2. 异步请求:Spring MVC提供了异步处理能力,通过`@Async`注解,可以在后台线程中执行耗时操作,而不阻塞主线程。 四、组件注册 1. `@ComponentScan`:这个注解用于自动扫描指定包下的组件(标记了@Controller, @...
在Spring框架中,IoC容器负责管理对象的生命周期及其依赖关系。 - **DI(Dependency Injection)**:依赖注入是实现IoC的一种方式,通过外部容器来注入对象所依赖的对象,而不是在对象内部创建或查找依赖对象。 ###...
3. @Async异步处理:在方法上添加@Async注解,可以让该方法在后台线程中异步执行,提高了系统并发处理能力。 4. 数据源支持:Spring 3.1.0提供了对多数据源的支持,方便在分布式环境中处理多个数据库。 5. NoSQL...
3. **Async Support**:添加了异步处理支持,允许方法在后台线程中执行,提高了系统的并发性能。 4. **JavaConfig**:增强了Java配置的支持,使得开发者可以完全用Java代码替代XML配置。 5. **MVC增强**:包括路径...
`@Async` 注解标记的方法会在后台线程执行。 8. **Spring Cloud** - 提供了一套微服务解决方案,包括服务发现(Eureka)、配置中心(Config Server)、熔断机制(Hystrix)等。 通过深入学习 Spring 源码,开发者...
集成Quartz到Web应用中,可以使用Spring框架的Quartz支持,通过Spring的Bean管理来简化配置和任务的声明。此外,还可以利用Spring的AOP(面向切面编程)特性,为任务添加事务管理、日志记录等功能。 标签中的“源码...
主要分为以下模块:Core Container(核心容器),包括Beans、Context、Core和SpEL(Spring Expression Language);Data Access/Integration,涵盖JDBC、ORM、OXM、JMS和Tx(事务管理);Web,如MVC、WebSocket和...
这意味着在调用这个方法时,控制权会立即返回给调用者,而方法的实际执行会在后台线程中完成。这样可以提高系统响应速度,尤其在处理耗时任务时。 综上所述,这个项目是一个综合性的系统,融合了Spring Boot的便捷...
Spring MVC提供了对Servlet 3.0异步处理的封装,通过`@Async`注解标记在方法上,表示这个方法将在后台线程中执行。`@Async`方法所在的类需要配置为`@EnableAsync`的bean,这样Spring会自动创建一个TaskExecutor来...
书中可能涵盖JSF组件库的使用,以及与后台bean的交互。 4. **Spring框架**:Spring是Java企业级应用的事实标准,提供了依赖注入、AOP(面向切面编程)、事务管理等功能。书中会详细讲解Spring MVC的使用,以及如何...
- **Asynchronous Processing**:Spring 3.2引入异步处理,允许在后台线程执行耗时操作。 Spring Framework 3.2.2.RELEASE是一个稳定且广泛使用的版本,它不仅包含了上述的诸多特性,还修复了许多已知问题,提升了...
1. **Bean**:Spring管理的对象,由Spring容器创建、配置和管理。 2. **@Component、@Service、@Repository、@Controller**:这些注解用于标记不同层的Bean。 3. **@Autowired**:自动装配Bean的依赖。 4. **XML配置...
SpringMVC和Mybatis是Java Web开发中的两大核心技术,常被组合使用构建高效、灵活的后台管理系统。本项目以"SpringMVC+Mybatis后台管理系统开发源码"为题,提供了一个可以直接运行的系统,非常适合有经验的开发者...
37. 通常,Web容器中只有一份Servlet实例,通过线程处理并发请求。 38. Java Servlet API包括javax.servlet和javax.servlet.http包,前者包含Servlet和Filter接口,后者包含HttpServletRequest和...
### Spring MVC面试宝典知识点详解 #### 一、SpringMVC简介 ##### 1.1 什么是SpringMVC? SpringMVC是一个基于Java...它可以用来管理整个Web应用的生命周期,并且可以与Servlet容器集成,提供对Web相关的Bean的支持。