1. 程式人生 > >在spring下獲取分類下的所有子類

在spring下獲取分類下的所有子類

我們一般使用java的時候更多的時候是獲取子類的父類是誰。或者多型的使用具體子類。但是有時候的業務會要求你拿到父類下的所有子類。那麼該怎麼做呢?

注意:子類不一定在同一個包裡。

1.在所有的子類上加上自定義註解,全域性獲取使用自定義註解的類。即為所有的子類。

該方式未使用,但肯定可以實現。暫不做討論,有機會在後面予以補充。

2.在全域性類載入的過程裡比對 具體的類是否是你父類的子類。

操作方式,獲取全域性的class檔案路徑,挨個比對。發現一個存一個,之後即可獲得所有子類。但是這種方式在spring下有點浪費。因為spring有類的託管機制。我們把具體的子類交給spring,讓其在jvm啟動的時候即例項化。使用如下程式碼:

@Component
//監控類 實現BeanPostProcessor介面
public class DictDepository implements BeanPostProcessor {

	@Override
	public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
		return bean;
	}

	/**
	 * 在具體子類初始化之後 確認該物件是否是對應父類(DictCode)的子類
	 */
	@Override
	public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
		// 如實現字典DictCode 則就執行put功能
		if (bean instanceof DictCode) {
			DictCode dict = (DictCode) bean;
			dict.addDict(DictCode.MAPCODE);
		}
		return bean;
	}

}

此時 該問題即可解決。

歡迎拍磚。

相關推薦

spring獲取分類所有

我們一般使用java的時候更多的時候是獲取子類的父類是誰。或者多型的使用具體子類。但是有時候的業務會要求你拿到父類下的所有子類。那麼該怎麼做呢? 注意:子類不一定在同一個包裡。 1.在所有的子類上加上自定義註解,全域性獲取使用自定義註解的類。即為所有的子類。 該方式未使用,但肯定可以實現。暫不做討論,有機

JAVA獲取同一路徑所有或介面實現

整個測試程式碼如下: Java程式碼   package find;   import java.io.File;   import java.io.IOException;   import java.net.URL;   import java.util.A

根據父獲取同一個包(包括包)所有

宣告:文章內容全都是自己的學習總結,如有不對的地方請大家幫忙指出。有需要溝通交流的可加我QQ群:425120333 Java語言的三大特性是繼承、封裝、多型。繼承指的是子類通過關鍵字extends繼承父類、或者是implements實現介面。不管

背水一戰 Windows 10 (122) - 其它: 通過 Windows.System.Profile 命名空間獲取信息, 查找指定或接口的所在程序集的所有接口

enter 轉換 local frame long windows 添加 roo schema [源碼下載] 背水一戰 Windows 10 (122) - 其它: 通過 Windows.System.Profile 命名空間下的類獲取信息, 查找指定類或接口的所在程序集

php無限分類根據頂獲取所有

 首先建立分類資訊表: CREATE TABLE IF NOT EXISTS `category` ( `categoryId` smallint(5) unsigned NOT NULL AUTO_INCREMENT, `parentId` smallint(5)

php獲取分類下面的所有方法

獲取分類下面的所有子類方法: static function getMenuTree($arrCat, $parent_id = 0, $level = 0,$all=True)

Linux 獲取當前路徑所有目錄大小並排序

目錄排序 大小排序日常工作中,會遇到一堆目錄,如何查看各目錄大小呢,大家都知道du命令先列出前10條[email protected]/* */ /scripts]#du -sh * | head 120K 2017031510 248K 2017031514 23M 2017031515 664

Python3獲取WINDOWS所有常用系統路徑

all IT environ RM TE lena 常用 nvi form #codeing:utf-8import os #搞定WINDOWS下所有系統路徑filename=‘c:\\WINDOWS_ALL_PATH.txt‘f=open(filename,‘w‘)i=1

通過父級id獲取到其下所有級(無窮級)id及父級id——Mysql函數實現

led cti creator returns ror mod har 為什麽 界面 【需求】某用戶只能查看其自己信息及其下級信息,涉及通過該用戶所在部門獲取其下所有部門(多層)id集合。 步驟一:對數據庫進行設置: set global log_bin_trust_f

mysql獲取選單下面所有選單的sql

select * from ( select t1.*, if(find_in_set(ac_pid, @pids) > 0, @pids := concat(@pids, ',', rc_id), 0) as ischild from (

spring動態獲取介面的不同實現

最近做專案,有個需求是和外部對接,從介面獲取新聞資料,把資料和快取中的資料對比,多了的新增到資料庫,少了的刪掉。介面有兩個,一開始我是在業務類裡寫了兩個方法,程式碼太長,簡單說就是兩個部分: public Object saveANews() { //1、獲取A介面新聞列

mongoose 實現DBRef查詢所有資訊

產品表 var Mongoose = require('mongoose'); var Schema = Mongoose.Schema; var Product = new Schema({ image : { type

Android View的繼承體系大全(包含125個view的所有)(by 星空武哥)

       安卓的view是一個龐大是繼承體系,今天花了一個晚上我總結一下view的繼承體系。view的直接繼承子類有12個,間接繼承子類有113個。今天我就總結一下所有的view的子類,希

序列化必須所有都要實現序列化

import java.io.*; public class Pond implements Serializable { private Duck duck=new Duck(); public static void main(String [] args) {

遞迴查詢-簡單遞迴查詢父所有

   專案中需要遞迴查詢,簡單的寫了一個,記錄一下。   具體查詢sql就不貼出來了,每個業務都不一樣,但是都差不多,基本上都是根據父類搜尋下面的子類。    public Result sele

ThinkPHP分類查詢(獲取當前分類分類獲取分類一級分類)

lod ids implode logs emp str foreach reac 初始化 獲取指定分類的所有子分類ID號 //獲取指定分類的所有子分類ID號 function getAllChildcateIds($categoryID){ //初始化ID數組

js獲取元素所有元素總寬度賦值給父元素

網上 () func back 賦值 click button article ack 這個問題是今天在網上看到有人提的。 想要獲取#box下面所有div的寬度之和,然後賦值給#box,不論加多少個div,#box的寬都會隨著div的增加而改變。 <styl

[Java] File 遞歸 獲取目錄所有文件/文件夾

div static absolut 遞歸 urn 返回 direct gpo private package com.xiwi; import java.io.*; import java.util.*; class file{ public st

java基礎 File與遞歸練習 使用文件過濾器篩選將指定文件夾的小於200K的小文件獲取並打印按層次打印(包括所有文件夾的文件)

tor accep length 按層 col 不存在 args name style package com.swift.kuozhan; import java.io.File; import java.io.FileFilter; /*使用文件過濾器篩選將指定文

Android獲取資料夾所有檔名稱;

public static List<String> getFilesAllName(String path) { File file=new File(path); File[] files=file.listFiles(); if