需要通过原生Spring获取对象的方式,
1、先编写以下工具类SpringBeanUtil.java
package com.cnd.yourcompany.utils;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class SpringBeanUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext = null;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
// TODO Auto-generated method stub
SpringBeanUtil.applicationContext = applicationContext;
}
/**
* 从静态变量applicationContext中得到Bean, 自动转型为所赋值对象的类型.
*/
@SuppressWarnings("unchecked")
public static <T> T getBean(String name) {
if (name == null || applicationContext == null)
return null;
return (T) applicationContext.getBean(name);
}
/**
* 从静态变量applicationContext中得到Bean, 自动转型为所赋值对象的类型.
*/
public static <T> T getBean(Class<T> clazz) {
return applicationContext.getBean(clazz);
}
}
2、映射yml文件的JavaBean
package com.cnd.yourcompany.utils;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "emqx")
public class IvtMqttConfigureInfo {
private String url;
private int port;
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
3、在业务线程中实现配置文件信息使用
public class MqttClientSubMsgInFuture implements Runnable {
private IvtMqttConfigureInfo configInfo = SpringBeanUtil.getBean(IvtMqttConfigureInfo.class);
//......
}
4、yml文件配置application.yml如下:
emqx:
url: www.yourcompany.com
port: 1883
username: biz_user
password: asde13sdeow75x1w
分享到:
相关推荐
1. 多线程Autowire注入null的原因是因为多线程是防注入的,容器中的组件不会自动注入到多线程中。 2. 解决方案一:将需要使用的service当做多线程实现类的一个属性参数。 3. 解决方案二:写个获取spring bean的帮助...
在 SpringBoot 多线程处理任务中无法使用 @Autowired 注入 bean 的问题,可以通过创建一个工具类来解决,这个工具类可以用于获取 bean 对象,从而解决多线程处理任务中无法使用 @Autowired 注入 bean 的问题。
本文将介绍如何在 Spring Boot 中使用注解将值注入参数,主要涵盖了定义注解、定义注解处理类、使 Spring Boot 支持该拦截器三个方面的内容。 一、定义注解 在 Spring Boot 中,定义注解需要使用 @interface ...
"解决SpringBoot项目使用多线程处理任务时无法通过@Autowired注入bean问题" Spring Boot项目在使用多线程处理任务时,经常会遇到无法通过@Autowired注入bean的问题。本文将介绍解决该问题的方法,并详细解释原因和...
**Autowire:Python中的轻量级依赖注入库** 在Python开发中,依赖注入(Dependency Injection,简称DI)是一种设计模式,它可以帮助我们编写更灵活、可测试和可维护的代码。Autowire是一个专为Python设计的轻量级且...
#学习springboot自动装配 ##一,手动装配 ### 1,模式注解装配 @Component注解,或者@Component注解的扩展,@ Controller,@ Service,存储库,@ Configruation等, ### 2. @ Configuration启动容器+ @ Bean注册...
Spring框架通过DI实现了这一模式,使得对象间的依赖关系更加清晰,降低了代码的复杂性。 接下来,我们来看看@Autowired注解。@Autowired是Spring框架提供的一个用于自动装配bean的注解,它可以被用在字段、构造器、...
SpringBoot 是一个基于 Java 的框架,它简化了创建独立、生产级别的基于 Spring 应用的步骤,通过自动配置和一站式的解决方案,使得开发者能够更快地搭建应用并投入开发。SpringBoot 的核心特性包括内嵌式 web ...
在Spring框架中,`autowire`是一种自动装配bean依赖的方式,它极大地简化了bean之间的依赖注入过程。本文将深入探讨`autowire`自动导入句柄及其在实际开发中的应用。 ### 1. `autowire`简介 `autowire`是Spring...
在Spring Boot应用中,`@Autowired`注解用于自动装配依赖的bean,是Spring框架提供的一种依赖注入方式。然而,当出现`@Autowired`无法注入的情况时,这通常意味着Spring容器无法正确地扫描并管理你的组件。在描述中...
SpringBoot+Vue基于Java的少数民族音乐网站的设计与实现论文 一、系统架构设计 本系统设计采用了JAVA语言,使用Spring Boot框架技术对系统进行开发。Spring Boot框架是一种基于JAVA的开源框架,可以快速构建独立的...
这个项目采取了了在prepare方法中执行注入的方式使bolt在序列化完成后执行注入,绕开了storm的序列化机制 使用这个项目里 你可以通过以下代码做到最基本的注入 @Resource private SentenceCounter counter; public ...
使用构造方法注入可以在创建对象时完成依赖关系的建立。 四、ApplicationContext 接口 ApplicationContext 接口是 beanfactory 的子接口,提供了对资源文件的访问支持。fileSystemXmlApplicationContext 是其子...
5. **配置Spring**:在spring-context.xml中配置UserDAO,使用bean的`class`属性指定实现类,并通过`autowire`属性实现自动装配。 6. **配置Struts**:创建Action类,该类通常由Spring管理,负责处理用户请求。在...
在这个工程中,Spring3采用了标签注入的方式,这意味着在XML配置文件中,我们可以使用`<bean>`标签的`autowire`属性来实现自动装配,减少手动配置的工作量。同时,Spring3还集成了Hibernate3,使得数据访问层的管理...
Spring框架提供了AOP(面向切面编程)和IOC(控制反转)两大核心特性,AOP用于处理横切关注点,如日志、事务等,而IOC则是Spring的核心,通过依赖注入实现了对象之间的解耦。 在实际运行中,SpringBoot的内嵌Tomcat...
在单例对象中使用多例对象时,需要注意对象的生命周期和线程安全问题。 通过实现 BeanFactoryAware 接口来获得 factory 可以获取 Spring 容器。 动态代理技术是指在运行时生成代理对象,以便在运行时动态地将横切...
在Spring框架中,依赖注入(Dependency Injection,简称DI)是一种重要的设计模式,它使得对象之间的耦合度降低,提高了代码的可测试性和可维护性。本篇主要介绍Spring中的三种注入方式,着重讲解在"Spring三种注入...
用于Golang的基于反射的依赖项注入工具箱。 该自述文件处于进行中状态。 安装 整个项目基于go模块。 要获取最新版本,请使用go1.16 +并使用go get命令获取它。 例如: go get github.com/go-autowire/autowire ...
在Spring框架中,自动装配(Autowiring)是一种强大的特性,它允许我们无需显式配置bean之间的依赖关系,Spring会自动地将bean的依赖注入到它们的实例中。本示例"spring-autowire-demo.zip"是基于Spring 5.3.6版本,...