SpringMVC的应用中,要实现类似的功能,主要是通过实现下面这些接口(任选一,至少一个即可)
一.ApplicationContextAware接口
package org.springframework.context; import org.springframework.beans.BeansException; import org.springframework.beans.factory.Aware; import org.springframework.context.ApplicationContext; public interface ApplicationContextAware extends Aware { void setApplicationContext(ApplicationContext var1) throws BeansException; }
二.ServletContextAware 接口
package org.springframework.web.context; import javax.servlet.ServletContext; import org.springframework.beans.factory.Aware; public interface ServletContextAware extends Aware { void setServletContext(ServletContext var1); }
三.InitializingBean接口
package org.springframework.beans.factory; public interface InitializingBean { void afterPropertiesSet() throws Exception; }
四.ApplicationListener<ApplicationEvent> 接口
package org.springframework.context; import java.util.EventListener; import org.springframework.context.ApplicationEvent; public interface ApplicationListener<E extends ApplicationEvent> extends EventListener { void onApplicationEvent(E var1); }
示例程序:
package com.bijian.study.controller; import javax.servlet.ServletContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.BeansException; import org.springframework.beans.factory.InitializingBean; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; import org.springframework.web.context.ServletContextAware; @Component public class StartupListener implements ApplicationContextAware, ServletContextAware, InitializingBean, ApplicationListener<ContextRefreshedEvent> { private Logger logger = LogManager.getLogger(); @Override public void setApplicationContext(ApplicationContext ctx) throws BeansException { logger.info("1 => StartupListener.setApplicationContext"); } @Override public void setServletContext(ServletContext context) { logger.info("2 => StartupListener.setServletContext"); } @Override public void afterPropertiesSet() throws Exception { logger.info("3 => StartupListener.afterPropertiesSet"); } @Override public void onApplicationEvent(ContextRefreshedEvent evt) { logger.info("4.1 => MyApplicationListener.onApplicationEvent"); if (evt.getApplicationContext().getParent() == null) { logger.info("4.2 => MyApplicationListener.onApplicationEvent"); } } }
服务启动时,输出的顺序如下:
22:54:44.433 [localhost-startStop-1] INFO com.bijian.study.controller.StartupListener - 1 => StartupListener.setApplicationContext 22:54:44.435 [localhost-startStop-1] INFO com.bijian.study.controller.StartupListener - 2 => StartupListener.setServletContext 22:54:44.435 [localhost-startStop-1] INFO com.bijian.study.controller.StartupListener - 3 => StartupListener.afterPropertiesSet 22:54:44.931 [localhost-startStop-1] INFO com.bijian.study.controller.StartupListener - 4.1 => MyApplicationListener.onApplicationEvent 22:54:44.931 [localhost-startStop-1] INFO com.bijian.study.controller.StartupListener - 4.2 => MyApplicationListener.onApplicationEvent
注意:onApplicationEvent方法会触发多次,初始化这种事情,越早越好,建议在setApplicationContext方法中处理,完整示例见附件。
此外还有一种方法:写个BEAN,将要执行的操作写在构造函数里,再将这个类配置到XML里,比如配置到SPRING-MVC.XML里 <bean class="com.test.xx"> 自己的类。不过不推荐使用这种方法。
相关推荐
爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP...
爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP...
我就花了几天的时间制作和部署了初始化系统,完成了login的登录,同时对用户登录和session过期进行安全验证,同时将原有的mybaits改造成了postgre,另外增加了权限的使用方法,由于原来的DWZ的列表增删改查、分页并...
AdminStore ...SSH (Spring、SpringMVC、Hibernate) 安全权限 Shiro 缓存 Ehcache 视图模板 freemarker 工作流引擎 activiti 定时任务 quartz AdminLTE bootstrap 搭建步骤 创建数据库。如使用MySQL
2.5.3 初始化和销毁Bean 2.6 小结 第3章 高级Bean装配 3.1 声明父Bean和子Bean 3.1.1 抽象基Bean类型 3.1.2 抽象共同属性 3.2 方法注入 3.2.1 基本的方法替换 3.2.2 获取器注入 3.3 注入非Spring Bean ...
2.5.3 初始化和销毁Bean 2.6 小结 第3章 高级Bean装配 3.1 声明父Bean和子Bean 3.1.1 抽象基Bean类型 3.1.2 抽象共同属性 3.2 方法注入 3.2.1 基本的方法替换 3.2.2 获取器注入 3.3 注入非Spring Bean ...
下面对这几个配置文件解释下: 1.Configuration.xml 是 mybatis 用来建立 sessionFactory 用的,里面主要包含了数据库连接相关东西,还有 java 类所对应的别名,比如 ...
141、使用useBean标志初始化BEAN时如何接受初始化参数 36 142、使用JSP如何获得客户浏览器的信息? 36 143、能象调用子程序一样调用JSP吗? 36 144、当我重编译我的JSP使用的一个类后,为什么JVM继续使用我的老CLASS...
141、使用useBean标志初始化BEAN时如何接受初始化参数 36 142、使用JSP如何获得客户浏览器的信息? 36 143、能象调用子程序一样调用JSP吗? 36 144、当我重编译我的JSP使用的一个类后,为什么JVM继续使用我的老CLASS...
一个请求在Struts2框架中的处理大概分为以下几个步骤: 1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选...
该资源包中可能包含以下几个主要部分:项目源码:包括了整个网上商城系统后端的所有Java源代码,这些代码遵循MVC(模型-视图-控制器)设计模式,将业务逻辑、数据模型和用户界面分离,以提高代码的可维护性和扩展性...
在启动时,有几个用户具有预先初始化的角色,并且 登陆页面上的登录功能,只在结果页面上打印消息,取决于登录是通过还是失败 没有测试 角色: 主持人:具有“主持人”角色的用户可以编辑数据库中的现有记录。 ...
new String(“abc”)创建了几个对象 String变量做“+”运算时的编译优化 "=="和equals方法究竟有什么区别 String,StringBuffer,StringBuilder有什么区别 java中的数组是不是对象 数组初始化的方式有哪几种 length...
响应式Spring Security 5研讨会这是一个动手实践研讨会,内容涉及使用Spring ...车间结构研讨会分为以下几个部分: 基本安全OAuth 2.0 / OpenID Connect执照Apache 2.0许可2019-2020年Andreas Falk版权所有(c)
创建了几个字符串对象 30 【基础】接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class) 30 【基础】一个".java"源文件中是否可以包含多个类(不是内部类...
3. 执行docs/sql/data.sql文件,初始化数据 4. 修改配置中心(weshop-config-server)的database.properties和common.properties文件,更新MySQL账号和密码,更新RabbitMQ配置,更新zipkinServer配置 5. 运行Maven命令...
6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...