springboot使用上下文ApplicationContext

一、spring上下文

1.1 什么是spring上下文

1.2 spring上下文的作用

二、如何使用spring上下文

有四种方式获得spring上下文

  • 方式一:实现ApplicationContextAware接口
  • 方式二:非static方法版
  • 方式三:在springboot引导类中设置
  • 方式四;直接注入ApplicationContext

2.1 实现ApplicationContextAware接口

提供static方法供调用者使用,不要求使用者受spring容器管理


package net.facelib.eam.plancenter.webController.service.impl;

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

/**
 * @author lc
 * @version 1.0
 * @date 2022/7/26 9:28
 */
@Component
public class MyTestService implements ApplicationContextAware {

    public static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        MyTestService.applicationContext = applicationContext;
    }

    public static ApplicationContext getApplicationContext() {
        return MyTestService.applicationContext;
    }

    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }

    public static <T>T getBean(Class clazz) {
        return (T)getApplicationContext().getBean(clazz);
    }

    public static <T>T getBean(String name, Class clazz) {
        return (T)getApplicationContext().getBean(name,clazz);
    }
}

2.2 同方法一,但是是非static方法版

使用者也得是被spring管理的bean,注入使用

2.3 在springboot引导类(启动类)里设置,此时就不需要实现ApplicationContextAware接口

@SpringBootApplication
public class MainApplication{

	public static void main(String[] args) {
		ConfigutableApplicationContext context = SpringApplication.run(MainApplication.clss,args)
		MyTestService.setApplicationContext(context);
	}

}
package net.facelib.eam.plancenter.webController.service.impl;

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

/**
 * @author lc
 * @version 1.0
 * @date 2022/7/26 9:28
 */
@Component
public class MyTestService{

    public static ApplicationContext applicationContext;

   public static void setApplicationContext(ApplicationContext applicationContext) {
       MyTestService.applicationContext = applicationContext;
   }

    public static ApplicationContext getApplicationContext() {
        return MyTestService.applicationContext;
    }

    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }

    public static <T>T getBean(Class clazz) {
        return (T)getApplicationContext().getBean(clazz);
    }

    public static <T>T getBean(String name, Class clazz) {
        return (T)getApplicationContext().getBean(name,clazz);
    }
}

2.4 直接注入ApplicationContext

@Component
public class ContextUser{

	// 在需要使用上下文的地方直接注入,前提,被spring管理
	@Autowired
	public ApplicationContext applicationContext;
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Spring Boot加载应用程序上下文失败。 这可能是由于以下原因之一导致的: 1. 应用程序配置错误:检查应用程序配置文件是否正确,例如application.properties或application.yml文件。 2. 依赖项冲突:检查应用程序的依赖项是否存在冲突,可能需要升级或降级某些依赖项。 3. 缺少必需的依赖项:检查应用程序是否缺少必需的依赖项,例如数据库驱动程序或Spring Boot Starter。 4. 代码错误:检查应用程序代码是否存在错误,例如无法找到或加载类。 您可以查看应用程序的日志文件以获取更多详细信息,以确定导致加载应用程序上下文失败的确切原因。 ### 回答2: 在解决SpringBoot应用程序加载ApplicationContext失败的问题时,需要从以下几个方面进行分析: 1.检查pom文件中的依赖项 通常,SpringBoot应用程序依赖于许多其他库和框架,如果依赖项存在问题,则可能导致ApplicationContext加载失败。尝试检查依赖是否正确,版本是否与当前SpringBoot版本兼容。 2.检查配置文件 SpringBoot应用程序需要一个或多个配置文件。如果这些文件中存在任何错误,可能会导致ApplicationContext加载失败。尝试检查配置文件,确保文件格式正确,属性名称正确,属性值有效和正确地指定配置文件位置。 3.检查注解 SpringBoot使用注解来完成各种任务。如果注解用得不正确或没有正确使用注解可能会导致ApplicationContext加载失败。尝试检查注解,确保正确使用了@Service、@Component等注解。 4.检查应用程序代码 在应用程序中编写不正确的代码可能会导致ApplicationContext加载失败。检查代码,找出是否有任何语法错误或逻辑错误。 5.检查日志文件 日志文件可以提供有关ApplicationContext加载失败的更多信息。尝试检查日志文件以查找有关加载失败的详细信息。 在解决ApplicationContext加载失败的问题时,需要进行深入的分析和排查。通过综合上述几个方面进行分析,可以帮助我们找到问题的根源并解决这一问题。 ### 回答3: 当我们在使用SpringBoot进行开发时,可能会遇到“failed to load applicationcontext”这样的错误信息。这个错误信息通常出现在应用程序上下文加载的时候,比如说,当我们在启动SpringBoot应用时,它会自动扫描类路径下的所有组件并将它们加载到应用程序上下文中,但是在加载的过程中,可能会出现一些问题而导致上下文加载失败。 以下是一些常见的出现“failed to load applicationcontext”错误的原因: 1. 依赖冲突。如果你在应用程序中使用了一些不兼容的依赖库,或者使用了多个版本的同一个库,就有可能会导致应用程序上下文加载失败。 2. 配置错误。如果你在应用程序的配置文件中有一些错误或者不一致的配置,就有可能会导致应用程序上下文加载失败。 3. 缺少必要的依赖项。如果你在应用程序中引用了一个不包含所需依赖项的库,就会导致应用程序上下文加载失败。 解决此问题的方法是: 1. 排查依赖库的错误:我们可以使用一些工具,比如 Maven Dependency Plugin,来排查依赖库的问题。你可以使用该插件查找依赖树中的不兼容版本的库,以便找到并解决问题。 2. 检查配置文件:如果你的应用程序的配置文件(比如application.properties或application.yml)出现了问题,就会导致应用程序上下文加载失败。因此,我们可以检查配置文件,找出错误并纠正。 3. 确保所有依赖项都存在:当我们引用某个库时,一定要确保它包含了所有所需的依赖项。如果有任何缺失,就会导致应用程序上下文加载失败。 总之,当我们遇到“failed to load applicationcontext”的错误时,最好先去检查以上三个方面的问题,以确定问题的来源,并解决它们,以便确保应用程序正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LC超人在良家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值