springboot-9-在非springboot管理的类引入bean

在非spring管理的包中引入spring管理的类, 可以使用一个类继承ApplicationContextAware即可

分两种, 第一种该类在spring的包扫描范围之下:

package com.iwhere.test.util;

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

/**
 * 在普通类中引入spring中的bean, 在springboot的扫描包下
 * @ServletComponentScan
 *
 * 如果不在springboot的包扫描下, 则不需要component, 但需要在App.java中引入
 * @Import(value={SpringAppUtils.class})
 *
 * @author 231
 * @time 2017年3月15日 下午2:40:32 2017
 */
@Component
public class SpringAppUtils implements ApplicationContextAware {
    private static Logger LOGGER = LoggerFactory.getLogger(SpringAppUtils.class);
    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext context) throws BeansException {
        if (SpringAppUtils.applicationContext == null) {
            applicationContext = context;
        }
        LOGGER.info("springAppUtils is init");
    }

    /**
     * 获取applicationContext
     *
     * @return
     */
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    /**
     * 通过那么获取bean
     */
    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }

    /**
     * 通过class获取bean
     */
    public static <T> T getBean(Class<T> clazz) {
        return getApplicationContext().getBean(clazz);
    }

    /**
     * 通过name和class获取bean
     */
    public static <T> T getBean(String name, Class<T> clazz) {
        return getApplicationContext().getBean(name, clazz);
    }
}

第二种: 配置类不在springboot扫描之下:

此时类上不需要加 @Component 注解

但需要在App.java中引入

@Import(value={SpringAppUtils.class})

@SpringBootApplication
@ServletComponentScan
@Import(value={SpringUtil.class})
publicclass App {

   {main}

}
时间: 2024-10-16 04:42:06

springboot-9-在非springboot管理的类引入bean的相关文章

spring管理的类如何调用非spring管理的类

spring管理的类如何调用非spring管理的类. 就是使用一个spring提供的感知概念,在容器启动的时候,注入上下文即可. 下面是一个工具类. 1 import org.springframework.beans.BeansException; 2 import org.springframework.context.ApplicationContext; 3 import org.springframework.context.ApplicationContextAware; 4 imp

springboot对于数据源的动态管理实践

springboot对于数据源的动态管理实践 需求 用户通过界面配置数据源,可能包括oracle.mysql.mongodb等等:配置完数据源后,支持对于具体数据源进行实时sql查询操作. 一般来说,如果不考虑性能,最简单的实现就是每次进行sql connecntion操作,实时连接查询.很显然,这样的操作,没有利用到数据库连接池.性能不好.所以 本篇博客的具体实现就是利用spring框架提供的AbstractRoutingDataSource类来实现动态的添加数据源.最终实现不同数据源的请求,

【spring-boot】spring-boot项目中,通过JAVA配置类形式配置前台代码都重定向转发

以下是MyMvcConfig.java配置类的代码,可供参考: package com.springboot.config; import com.springboot.conponent.LoginHanderInterceptor; import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration; import org.springframework.context.annotation.Be

springboot报错,springboot注解

目录 SpringBoot注解 SpringBoot注解 一.注解(annotations)列表 @SpringBootApplication: ? 包含了@ComponentScan.@Configuration和@EnableAutoConfiguration注解.其中@ComponentScan让Spring Boot扫描到Configuration类并把它加入到程序上下文. @Configuration:等同于Spring的XML配置文件:使用Java代码可以检查类型安全. @Enabl

【spring-boot】快速构建spring-boot微框架

spring-boot是一个快速构建环境的一套框架,其设计理念是尽可能的减少xml的配置,用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 废话不多说,关于spring-boot是什么具体请百度. 官网:http://projects.spring.io/spring-boot 1. spring-boot是一个mavan项目,所以其使用的jar包全部是通过maven管理,当然,使用maven也是非常方便的. 首先上我的

[SpringBoot]源码分析SpringBoot的异常处理机制

微信号:GitShare微信公众号:爱折腾的稻草如有问题或建议,请在公众号留言[1] 前续 为帮助广大SpringBoot用户达到"知其然,更需知其所以然"的境界,作者将通过SpringBoot系列文章全方位对SpringBoot2.0.0.RELEASE版本深入分解剖析,让您深刻的理解其内部工作原理. 正文 在SpringBoot启动时,会查找并加载所有可用的SpringBootExceptionReporter,其源码如下: //7 使用SpringFactoriesLoader在

一起学习SpringBoot(一) SpringBoot 开始准备

一起学习SpringBoot(一) SpringBoot 开始准备 Spring Boot 简介 简化Spring应用开发的一个框架,整个Spring技术栈的一个大整合,J2EE开发的一站式解决方案 maven设置 <profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> <

SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」

摘自:https://www.cnblogs.com/bingyang-py/p/12407675.html 有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+案例 思维导图」「基础篇上」 SpringBoot图文教程2—日志的使用「logback」「log4j」 SpringBoot图文教程3—「‘初恋’情结」集成Jsp SpringBoot图文

ActionScript 3.0日期与时间管理(Date类)

/*Flash中,Date类管理着日期和时间信息.要获取   当前日期,可以新建一个Date对象   */var now:Date =new Date();trace (now);     /*输出当前时间和日期,格式如:                  Sun Jul 27 19:45:57 GMT+0800 2014  */ /*以上代码中,Date对象中包括了当前的秒.分.小时.  星期数.日.月.年.时区等信息...如果仅需要返  回星期值和日期值,而不返回时间或时区,可以使用Date