Vra

Ek is in die proses van die onkruid uit te trek uit al gekodeer waardes in'n Java biblioteek en het gewonder watter raamwerk die beste sou wees (in terme van die nul - of naby-aan-zero opset) te hanteer run-time opset?Ek sou verkies om XML-gebaseerde konfigurasie lêers, maar dit is nie noodsaaklik nie.

Doen asseblief slegs antwoord as jy praktiese ervaring met'n raamwerk.Ek is nie op soek vir voorbeelde, maar ervaring...

Was dit nuttig?

Oplossing

As u hardcoded waardes is net eenvoudig sleutel-waarde pare, moet jy kyk na java.util.Properties . Dit is 'n baie makliker as xml, makliker om te gebruik, en gedagte-numbingly triviale te implementeer.

As jy besig is met Java en die data wat jy stoor of herwinning van die skyf is geskoei as 'n belangrike waarde pair (wat dit klink soos dit is in jou geval), dan het ek regtig kan nie 'n beter oplossing dink.

Ek het gebruik eienskappe lêers vir 'n eenvoudige opset van klein pakkies in 'n groter projek, en as 'n meer globale opset vir 'n hele projek, en ek het nog nooit probleme gehad met dit.

Natuurlik is dit het die groot voordeel van nie dat enige 3de party biblioteke aan te wend.

Ander wenke

Apache Commons Configuration werk baie goed. Dit word ondersteun deur met die opset gestoor in 'n wye verskeidenheid van formate op die agterkant insluitend eiendomme, XML, JNDI, en nog baie meer. Dit is maklik om te gebruik en uit te brei. Om die meeste buigsaamheid daaruit kry gebruik 'n fabriek om die opset te kry en net gebruik die < a href = "http://commons.apache.org/configuration/apidocs/org/apache/commons/configuration/Configuration.html" rel = "nofollow noreferrer"> Configuration koppelvlak daarna.

Twee funksie of Commons Configuration dat dit onderskei oor 'n reguit Properties lêer is dat dit 'n outomatiese omskakeling na algemene tipes (int, float, String skikkings) ondersteun en dit word ondersteun deur eiendom te vervang:

server.host=myHost
server.url=http://${server.host}/somePath

Hier is verskeie opsies:

Jy mag dalk wil om te lees Vergelyking van Commons opset met JFig en JConfig en jou Aansoeke behulp JFig vir 'n paar instel terugvoer van verskeie gebruikers.

Persoonlik, Ek het jConfig gebruik en dit was 'n goeie ervaring.

Commons Configuration

Ons gebruik hierdie. Eienskappe lêers alleen is veel makliker om te hanteer, maar as jy nodig het om meer komplekse data Commons opset kan dit doen en lees jou eienskappe verteenwoordig lêers sowel.

As jy niks ingewikkeld Ek sal vashou aan properites lêers doen.

As jy wil iets gevorderde (en typesafe) doen, kan jy 'n blik op hierdie: http://www.ibm.com/developerworks/java/library/j-configint/index.html

die Intelligent Parameter benutting Tool (insette, bladsy ) kan eksternaliseer byna enige (hard gekodeer) besluit as 'n parameter in 'n XML-gebaseerde konfigurasie lêer. Dit is 'n inisiatief in die vroeë 2012 as 'n reaksie op die vermeende tekortkominge in bestaande opset gereedskap met betrekking tot algemeenheid, en skeiding van kommer.

insette is waarskynlik sterker as die meeste gebruik gevalle vereis, as dit moontlik maak vir die programmeertaal onafhanklike formulering van eksperimentele data (insette - uitset), met eienskappe soos die definisie van kompleks descriptor klas afbeeldings , of ewekansige opset paai en validering gebaseer op voorafbepaalde waarde reekse (vir toets en navorsing, bv Monte Carlo simulasies). Jy kan parameters met sub parameters, relatiewe beperkings op parameterwaardes (numeriese param n> param b) ens.

definieer

Die steeds in beta, maar eerder 'n stabiele, gebruik ek dit vir my navorsing, vir die opset en dokumentasie van eksperimente, en vir onderrigdoeleindes . Sodra dit beskikbaar is vir ander tale (C ++ adapter in die pyp), ander navorsers / praktisyns kan die beskrywers hergebruik loop hul implementering van dieselfde algoritmes in C ++ (met behulp van die kode kartering konsep). Op dié manier, eksperimentele resultate kan bekragtig / programme kan makliker migreer . Die dokumentasie is nog in 'n werkende proses, maar 'n paar van voorbeelde is beskikbaar op die bladsy. Insette is open source sagteware.

Vir diegene wat belangstel, die Konseptuele Navorsing Paper .

Ek is geneig om java.util.Properties (of 'n soortgelyke klasse in ander tale en raamwerke) toegedraai in 'n aansoek-spesifieke opset klas meeste van die tyd, maar ek baie geïnteresseerd in alternatiewe of variasies op hierdie am. Veral omdat dinge 'n bietjie lastig kan raak as grafiese opset vensters of veelvuldige sienings oor die opset data betrokke is.

Ongelukkig het ek het geen ondervinding met spesifieke biblioteke vir Java (behalwe met die wat ek het myself geskryf), maar enige wenke sal waardeer word.

Update

OK. Dit was nie heeltemal waar nie, drie is die Lente Java Configuration Projek .

Ek geskryf oor hierdie'n paar weke gelede en tot die gevolgtrekking gekom dat XML is een van die mees wyd gebruik word in notasies.

Is dit die beste?Ek dink nie so nie, ek het regtig soos JSON, maar die gereedskap is nog nie tot XML so ek dink ons moet wag en sien.

Jy kan probeer YamlBeans . Hierdie manier waarop jy skryf watter klasse jy wil om jou config data hou, dan kan jy outomaties skryf en lees hulle na en van YAML.

YAML is 'n leesbare data formaat. Dit het meer ekspressiewe krag as java.util.Properties. Jy kan lyste, kaarte, ankers, getik data, ens.

Neem asseblief 'n blik op hierdie URL:       http://issues.apache.org/jira/browse/CONFIGURATION-394

Die Configuration raamwerk wat ons is op soek na dit is iets op die top van Apache Commons Configuration en moet Concurrency Kwessies, JMX kwessies en ondersteun die meeste van die winkels (bv .properties lêer, Xml lêers of PreferencesAPI).

Wat WebLogic span bied op 'Administrasie Console "is Inter wat daardeur jy transaksionele (atoom) updates op konfigurasies sodat geregistreer luisteraars in kennis gestel kan hê.

Die Apache ouens dring daarop aan dat hierdie projek is uit bestek van Commons Configuration, miskien!

Ek het 'n eenvoudige opset raamwerk Neem kyk asseblief aangeheg.

Ek het nou net gepos word 'n kort stukkie kode oor die gebruik van die lente se ClassPathResource as 'n alternatief vir IoC. ClassPathResource u toelaat om eiendom lêers te plaas op enige plek op die classpath (bv, almal op een plek, of as maats om die kode wat hulle instel. My voorbeeld net gebruik java.util.Properties, sodat jy die skoonteks kan gebruik "naam = waarde" styl of sy XML-formaat.

Properties lêers 'n baie eenvoudige, as jy nodig het iets meer funksionele, kan jy 'n paar van jou konfigurasielêers as Java klasse formaat. Dit kan in 'n ander pakket / module geplaas word en kan vooraf opgestel of gelaai tydens looptyd met 'n biblioteek soos BeanShell.

Let wel: In die eenvoudigste geval (pre-saamgestel) jy nie enige bykomende biblioteke nodig

.

Met betrekking tot die voorstelle om java.util.Properties gebruik - begin in JDK 1.5, blyk die Voorkeure API (java.util.prefs) om die voorkeur-alternatief vir die gebruik van die API Properties wees.

Redes:. Toegeneem scalability, back-end neutraliteit, ens

Jy kan 'n blik te hê op nuut aangekondigde tools4j-config wie se missiestelling is om jou toelaat om maklik te hanteer opset tydens looptyd.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top