日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 简单 框架_java简单框架设计

發布時間:2023/12/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 简单 框架_java简单框架设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

設計框架包可以作為一個工具給大家用,需要有完全不同設計思路給出來,不同于我們去做一個web服務、網站、

或者一個業務微服務,需要從原來使用視角轉換成一個構建者視角。

框架或者工具,更多是框架來管理或者說調用我們,我們來遵循框架原則來實現,框架和業務實現上的核心差異。

java框架,可以依賴注解以及抽象類來實現邏輯,實現基于注解配置,通過注解簡化配置方式。子類實現抽象類,

子類中的注解對象可以用過反射方式在框架中被調用,從而實現一個簡單的框架。

注解類:

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

//注解配置信息字段.

@Target({ElementType.FIELD})

@Retention(RetentionPolicy.RUNTIME)

public @interface DeskConf {

String getComponent() default "";

String value();

}

抽象類:

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

//注解配置信息字段.

@Target({ElementType.FIELD})

@Retention(RetentionPolicy.RUNTIME)

public @interface DeskConf {

String getComponent() default "";

String value();

}

解析工具:

import org.apache.log4j.Logger;

import java.lang.reflect.Field;

import java.util.HashMap;

import java.util.Map;

/**

* 讀取注解信息

*/

public class ConfigAnnotationParse {

protected Logger logger = Logger.getLogger(ConfigAnnotationParse.class);

private ConfRegister configRegister;

public ConfigAnnotationParse(ConfRegister configCenter) {

this.configRegister = configCenter;

}

public DeskConf parseNodeAnnotation() throws Exception {

if (configRegister == null)

throw new ExceptionInInitializerError("ConfigRegister 統一配置注冊中心必須被繼承實現");

Class clazz = configRegister.getClass();

Map nodeMap = new HashMap();

DeskConf deskConf = null;

Field[] fields = clazz.getDeclaredFields();

for(Field field : fields) {

if (field.isAnnotationPresent(DeskConf.class)) {

deskConf = field.getAnnotation(DeskConf.class);

}

}

return deskConf;

}

}

使用樣例:

import org.apache.log4j.Logger;

import java.lang.reflect.Field;

import java.util.HashMap;

import java.util.Map;

/**

* 讀取注解信息

*/

public class ConfigAnnotationParse {

protected Logger logger = Logger.getLogger(ConfigAnnotationParse.class);

private ConfRegister configRegister;

public ConfigAnnotationParse(ConfRegister configCenter) {

this.configRegister = configCenter;

}

public DeskConf parseNodeAnnotation() throws Exception {

if (configRegister == null)

throw new ExceptionInInitializerError("ConfigRegister 統一配置注冊中心必須被繼承實現");

Class clazz = configRegister.getClass();

Map nodeMap = new HashMap();

DeskConf deskConf = null;

Field[] fields = clazz.getDeclaredFields();

for(Field field : fields) {

if (field.isAnnotationPresent(DeskConf.class)) {

deskConf = field.getAnnotation(DeskConf.class);

}

}

return deskConf;

}

}

接口:

public interface ConfService {

/**

* 獲取配置信息

* @param name 項目名稱.

* @param key key名稱.

* @return

*/

String getConf(String name,String key);

/**

* 獲得所屬模塊.

* @return

*/

String getComponent();

}

實現類:

public class ConfServiceImpl implements ConfService {

private ConfRegister myConfRegister;

private DeskConf deskConf;

/**

*

* @param confRegister

* @throws Exception

*/

public ConfServiceImpl(ConfRegister confRegister) throws Exception {

this.myConfRegister = confRegister;

ConfigAnnotationParse configAnnotationParse = new ConfigAnnotationParse(myConfRegister);

deskConf = configAnnotationParse.parseNodeAnnotation();

}

/**

* 獲取配置項信息

* @param name 項目名稱.

* @param key key名稱.

* @return

*/

public String getConf(String name, String key) {

if(deskConf==null)

return null;

String component = deskConf.getComponent();

Conf conf = new Conf();

conf.setComponent(component);

conf.setName(name);

conf.setKey(key);

String value = DBConf.getValue(conf);

return value;

}

/**

* 獲得所屬模塊.

* @return

*/

public String getComponent() {

if(deskConf==null)

return null;

String component = deskConf.value();

return component;

}

}

二、jar包配置使用方式

1、maven依賴

com.jd.app.server

desk-conf

1.0.0-SNAPSHOT

2、配置項注入樣例

/**

*

*/

public class TimeConstants extends ConfRegister{

@DeskConf("online")

private static String comp = "";

}

3、spring-config.xml 主配置文件中配置

4、使用說明

@Autowired

ConfService confService;

讀取監控信息

String value = confService.getConf("findgood","down");

讀取模塊名稱

String com = confService.getComponent();

Getty – Java NIO 框架設計與實現

前言 Getty是我為了學習 Java NIO 所寫的一個 NIO 框架,實現過程中參考了 Netty 的設計,同時使用 Groovy 來實現.雖然只是玩具,但是麻雀雖小,五臟俱全,在實現過程中,不僅 ...

Java+Selenium3框架設計篇5-如何實現郵件發送測試報告

https://blog.csdn.net/u011541946/article/details/77278837 本篇繼續回答網友的問題,這個主題是如何通過郵件發送測試報告.通過郵件發送測試報告,這 ...

java 簡單框架的運用

Struts Struts是一個基于Sun J2EE平臺的MVC框架,主要是采用Servlet和JSP技術來實現的. Struts框架可分為以下四個主要部分,其中三個就和MVC模式緊密相關:? 1.模 ...

Java簡單購物車設計

還是存在一些問題(比如clear函數沒效果.亂碼,單獨測試也沒,確實找不到問題),路過的給解決下... 第一部分???? 會話控制 會話跟蹤: 使用隱藏表單字段 URL重寫,實際就是直 ...

Selenium2(java)框架設計 九

設計框架原則: 數據分離,業務層和邏輯層不要混雜在一起. 設計圖: 框架結構初始化: com.wymall.test:這是存放這個框架源代碼的根目錄 base:里面有個基類(BaseParpaare. ...

Java異常框架設計

什么是異常? 異常(exception)應該是異常事件(exceptional event)的縮寫.異常定義:異常是一個在程序執行期間發生的事件,它中斷正在執行的程序的正常的指令流.當在一個方法中發生 ...

[轉]輕量級 Java Web 框架架構設計

工作閑暇之余,我想設計并開發一款輕量級 Java Web 框架,看看能否取代目前最為流行的而又越來越重的 Spring.Hibernate 等框架.請原諒在下的大膽行為與不自量力,本人不是為了重造輪子 ...

Fork/Join 框架-設計與實現(翻譯自論文《A Java Fork/Join Framework》原作者 Doug Lea)

作者簡介 Dong Lea任職于紐約州立大學奧斯威戈分校(State University of New York at Oswego),他發布了第一個廣泛使用的java collections框架實 ...

基于Java Mina框架的部標jt808服務器設計和開發

在開發部標GPS平臺中,部標jt808GPS服務器是系統的核心關鍵,決定了部標平臺的穩定性和行那個.Linux服務器是首選,為了跨平臺,開發語言選擇Java自不待言.需要購買jt808GPS服務器源碼 ...

隨機推薦

code

using System;using System.Threading; namespace ThreadLocalTest{?? ?public class MyObject?? ?{?? ??? ...

父類div高度適應子類div

父類div高度適應子類div 通常有許多div的高度由子類的高度決定父類的高度,所以需要父類div要適應子類div的高度,一般情況父類的高度可以直接設置成“auto”即可. 在有的情況下,子類div會 ...

UIWebView如何獲取內容高度

iOS UIWebView如何獲取到內容的高度呢?我們經常會遇到項目中需要使用UIWebView來加載H5頁面,但是頁面的高度并不確定,而我們前端需要根據內容的高度呈現出來,且不允許webview滾動 ...

在ThinkPHP3.x框架中實現將原創文章第一時間推送到百度收錄

前兩天自己寫的一篇文章“針對BootStrap中tabs控件的美化和完善”被別的網站給轉載了,這也許是值得高興的一件事情,但是有些網站并沒有注明來源和作者.而去百度搜索這篇文章,排名第一的居然是那些轉 ...

在TextView使用部分顏色文字

/** * change a part of string color. * * @param string * whole string. * @param subString * the sub ...

HDU_2029——回文串的判斷

Problem Description “回文串”是一個正讀和反讀都一樣的字符串,比如“level”或者“noon”等等就是回文串.請寫一個程序判斷讀入的字符串是否是“回文”. ? Input 輸入包 ...

CCNP路由實驗(2) -- OSPF

OSPF作為一種內部網關協議(IGP),用于在同一個AS中的路由器之間交換路由信息.OSPF的特性如下:1.可適應大規模網絡2.收斂速度快3.無路由環路4.支持VLSM和CIDR5.支持等價路由6.支 ...

Tomcat7安裝(linux環境)

1.獲取安裝包 如果沒有tomcat,則創建之,并下載二進制文件到該目錄,如下: mkdir /opt/tomcat cd /opt/tomcat wget http://mirrors.hust.e ...

動態修改屬性設置 easyUI

if(條件){? $("#area").combobox({ required:false }); }else{ $("#area").combobox({ r ...

Go中error類型的nil值和nil

https://my.oschina.net/chai2010/blog/117923

總結

以上是生活随笔為你收集整理的java 简单 框架_java简单框架设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。