1. 程式人生 > >Spring Boot 獲取Bean對象實體

Spring Boot 獲取Bean對象實體

oid cep clas ride ext @override pub tex creat

一、實現 ApplicationContextAware 接口

package com.zxguan;

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

/**
 * @author zxguan
 * @description
 * @create 2018-01-29 15:21
 */
public class SpringUtil implements ApplicationContextAware {

    
private static ApplicationContext applicationContext = null; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { if(SpringUtil.applicationContext == null){ SpringUtil.applicationContext = applicationContext; } }
//獲取applicationContext public static ApplicationContext getApplicationContext() { return applicationContext; } //通過name獲取 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,以及Clazz返回指定的Bean public static <T> T getBean(String name,Class<T> clazz){ return getApplicationContext().getBean(name, clazz); } }

二、幾種方式

  1、在Spring Boot可以掃描的包下, SpringUtil 使用註解@Component

  2、不在Spring Boot的掃描包下方式一, 使用@Bean註解,註入Spring容器

  3、不在Spring Boot的掃描包下方式二, 在App.class類上使用@Import(value={SpringUtil.class})


Spring Boot 獲取Bean對象實體