個人部落格位址: http://www.chenguanting.top
文章目錄
- 引子
- 手動new對象和從spring中擷取對象的差別
- 工具類
引子
在使用設計模式時經常會碰到需要依據指定的類名稱或者calss擷取對象的例子, 這時可以手動的new對象也可以從spring中擷取對象
手動new對象和從spring中擷取對象的差別
手動new對象
- 對象無法被spring所管理
- 對象内的成員變量無法使用 DI,入無法使用@Resource 等注入
從spring中擷取對象的差別
- 爽
工具類
package com.yuyu.sales.common.util;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component("springContextUtil")
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext applicationContext) {
SpringContextUtil.applicationContext = applicationContext;
}
/**
* 擷取應用上下文
*
* @return
*/
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/**
* 根據bean名稱擷取執行個體
*
* @param name
* @param <T>
* @return
*/
public static <T> T getBean(String name) {
return (T) applicationContext.getBean(name);
}
/**
* 根據class擷取執行個體
*
* @param clazz
* @param <T>
* @return
*/
public static <T> T getBean(Class<T> clazz) {
return (T) applicationContext.getBean(clazz);
}
/**
* 根據class擷取執行個體map
*
* @param clazz
* @param <T>
* @return
*/
public static <T> Map<String, T> getBeansOfType(Class<T> clazz) {
return applicationContext.getBeansOfType(clazz);
}
}