springboot整合HttpServlet获取配置文件参数,并遍历spring容器中所有bean

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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值