spring获取bean

参考:百度安全验证

这里我列举2种方法,其它方法可以自行学习。

1、BeanUtils代码如下:

package com.hmblogs.backend.util;

import org.springframework.context.ApplicationContext;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.context.support.WebApplicationContextUtils;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

public class BeanUtils {

    public static Object getBean(Class clas){
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
        ServletContext servletContext = request.getSession().getServletContext();
        ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(servletContext);
        return ac.getBean(clas);
    }
}

2、SpringUtils代码如下:

package com.hmblogs.backend.util;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Component
public class SpringUtils implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SpringUtils.applicationContext = applicationContext;
    }
    public static <T> T getBeanByName(String beanName) {
        if(applicationContext.containsBean(beanName)){
            return (T) applicationContext.getBean(beanName);
        }else{
            return null;
        }
    }
    public static <T> T getBeanByClass(Class<T> className) {
        T result = (T) applicationContext.getBean(className);
        return result;
    }

}

3、验证,测试类代码如下:

package com.hmblogs.backend.util;

import com.hmblogs.backend.entity.Blog;
import com.hmblogs.backend.service.BlogServiceImpl;
import com.hmblogs.backend.service.StockServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@Slf4j
//@Component
@RunWith(SpringRunner.class)
@SpringBootTest
public class BeanTest {

    @Test
    public void testBean() {
        // 请求参数
        BlogServiceImpl blogServiceImpl = (BlogServiceImpl) BeanUtils.getBean(BlogServiceImpl.class);
        Blog blog = new Blog();
        blog.setBlogTitle("xxxxxxx");
        blog.setBlogContent("fdsafadsfadsfdasf");
        blogServiceImpl.addBlog(blog);
    }

    @Test
    public void testBean22() {
        // 请求参数
        BlogServiceImpl blogServiceImpl = (BlogServiceImpl) SpringUtils.getBeanByClass(BlogServiceImpl.class);
        Blog blog = new Blog();
        blog.setBlogTitle("222222222");
        blog.setBlogContent("22222sasadsdas");
        blogServiceImpl.addBlog(blog);
    }
}

相关推荐

  1. spring获取bean

    2024-04-09 17:34:02       32 阅读
  2. Spring Bean获取方法 (手动注入bean)超级实用

    2024-04-09 17:34:02       63 阅读
  3. 4、SpringBean生命周期~获取Bean

    2024-04-09 17:34:02       24 阅读
  4. spring更加松散的获取bean的方式ObjectProvider

    2024-04-09 17:34:02       75 阅读
  5. Spring手动获取bean的四种方式

    2024-04-09 17:34:02       51 阅读
  6. 使用SpringContextHolder获取 Spring 容器中的 Bean

    2024-04-09 17:34:02       47 阅读
  7. spring获取不到bean 报NoSuchBeanDefinitionException异常

    2024-04-09 17:34:02       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-09 17:34:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-09 17:34:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-09 17:34:02       82 阅读
  4. Python语言-面向对象

    2024-04-09 17:34:02       91 阅读

热门阅读

  1. # 计算机视觉入门

    2024-04-09 17:34:02       34 阅读
  2. 算法刷题记录 Day41

    2024-04-09 17:34:02       39 阅读
  3. 外观模式(面子模式)

    2024-04-09 17:34:02       33 阅读
  4. uni-app中的地图简单说明 map

    2024-04-09 17:34:02       29 阅读
  5. 文本转语音常用的几个python库

    2024-04-09 17:34:02       30 阅读
  6. 【AIGC调研系列】在手机上运行的Octopusv2模型

    2024-04-09 17:34:02       44 阅读
  7. 2024年下半年软考考试科目有哪些?

    2024-04-09 17:34:02       43 阅读
  8. MySql01

    MySql01

    2024-04-09 17:34:02      31 阅读
  9. mapbox 工作问题暂时记录

    2024-04-09 17:34:02       32 阅读
  10. golang 协程池 动态扩缩容

    2024-04-09 17:34:02       32 阅读
  11. 谷粒商城学习日志

    2024-04-09 17:34:02       32 阅读
  12. 蓝桥杯刷题 深度优先搜索-[2410]最大连通(C++)

    2024-04-09 17:34:02       34 阅读
  13. ChopticsDriver调用说明

    2024-04-09 17:34:02       36 阅读