springboot整合HttpServlet获取配置文件参数
1、在application.properties配置文件中添加参数
loginName=Jeff
password=123456
2、创建配置参数类获取配置文件中的参数(ParamConfig.java)
package com.jeff.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* @author Jeff
* @description 配置参数
* @date 2019/11/17
*/
@Component
public class ParamConfig {
@Value("${loginName}")
private String loginName;
@Value("${password}")
private String password;
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
3、创建spring工具类(SpringUtil.java)
package com.jeff.utils;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* @author Jeff
* @description spring工具类
* @date 2019/11/17
*/
@Component
public class SpringUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if (SpringUtil.applicationContext == null) {
SpringUtil.applicationContext = applicationContext;
}
System.out.println("---------------------------------------------------------------------");
System.out.println(
"========ApplicationContext配置成功,在普通类可以通过调用SpringUtils.getAppContext()获取applicationContext对象,applicationContext="
+ SpringUtil.applicationContext + "========");
System.out.println("---------------------------------------------------------------------");
}
/***
* @description 获取applicationContext
* @author Jeff
* @date 2019/11/17
* @return org.springframework.context.ApplicationContext
*/
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/***
* @description 获取spring容器中所有bean
* @author Jeff
* @date 2019/11/17
* @return java.lang.String[]
*/
public static String[] getAllBean() {
return getApplicationContext().getBeanDefinitionNames();
}
/***
* @description 通过name获取 Bean
* @author Jeff
* @date 2019/11/17
* @param name
* @return java.lang.Object
*/
public static Object getBean(String name) {
return getApplicationContext().getBean(name);
}
/***
* @description 通过class获取Bean
* @author Jeff
* @date 2019/11/17
* @param clazz
* @return T
*/
public static <T> T getBean(Class<T> clazz) {
return getApplicationContext().getBean(clazz);
}
/***
* @description 通过name, 以及Clazz返回指定的Bean
* @author Jeff
* @date 2019/11/17
* @param name, clazz
* @return T
*/
public static <T> T getBean(String name, Class<T> clazz) {
return getApplicationContext().getBean(name, clazz);
}
}
4、创建servlet配置类(ServletConfigure.java)
package com.jeff.config;
import com.jeff.servlet.TestServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author Jeff
* @description servlet配置
* @date 2019/11/17
*/
@Configuration
public class ServletConfigure {
@Bean
public ServletRegistrationBean<TestServlet> servletRegistrationBean() {
return new ServletRegistrationBean<TestServlet>(new TestServlet(), "/testServlet");
}
}
5、创建测试类(TestServlet.java)
package com.jeff.servlet;
import com.jeff.config.ParamConfig;
import com.jeff.utils.SpringUtil;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author Jeff
* @description 测试springboot整合HttpServlet
* @date 2019/11/17
*/
public class TestServlet extends HttpServlet {
/***
* @description servlet初始化
* @author Jeff
* @date 2019/11/17
* @param config
* @return void
*/
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("初始化servlet");
super.init();
System.out.println("初始化配置参数");
initParam();
}
/***
* @description doGet请求
* @author Jeff
* @date 2019/11/17
* @param req, resp
* @return void
*/
public void doGet(HttpServletRequest req, HttpServletResponse resp) {
System.out.println("请求类型: GET");
}
/***
* @description doPost请求
* @author Jeff
* @date 2019/11/17
* @param request, response
* @return void
*/
public void doPost(HttpServletRequest request, HttpServletResponse response) {
System.out.println("请求类型: POST");
}
private void initParam() {
ParamConfig bean = (ParamConfig) SpringUtil.getBean("paramConfig");
System.out.println("loginName:" + bean.getLoginName());
System.out.println("password:" + bean.getPassword());
String[] allBean = SpringUtil.getAllBean();
System.out.println("遍历spring容器中所有bean:");
for (String beanName : allBean) {
System.out.println(beanName);
}
}
}
6、启动springboot项目,打开浏览器测试,访问 http://localhost:8080/testServlet,在控制台即可看到配置文件中的参数值和spring容器中所有bean
源码地址:
https://gitee.com/jiefu813/jf-springboot/tree/jf_HttpServlet/