ADDENDA EDIT:est la syntaxe de langage SFig efficace et claire (et mieux que XML DSL de Spring-Framework)?
ont pas accepté une réponse à ce que il n'y a pas eu de commentaires de Spring Framework expérimentés développeurs.
Je travaille sur un DSL de remplacement à utiliser pour les fichiers Spring Framework applicationContext.xml (où initialisation de haricots et les relations de dépendance sont décrites pour le chargement vers le haut dans l'usine de haricots de printemps). Ma motivation est que je n'ai rien contre l'utilisation de XML par Spring dans ce but, et je n'aime pas vraiment les alternatives qui ont été imaginées jusqu'à présent. Pour diverses raisons que je n'irai pas dans, je veux rester avec un langage déclaratif et pas un langage de script impératif tel que Groovy. J'ai donc saisi l'analyseur syntaxique ANTLR et j'ai conçu un nouveau DSL d'usine de haricots que j'ai baptisé SFig. Voici un lien qui parle plus à ce sujet:
SFig™ - alternative metadata config language for Spring-Framework
Et voici le site de dépôt de code source:
http://code.google.com/p/sfig/
Je suis intéressé de savoir comment je fais de la langue syntaxe jusqu'à présent. Pensez-vous que SFig est efficace et clair à comprendre? (Je suis particulièrement préoccupé en ce moment avec la chaîne de texte mulit-ligne):
properties_include "classpath:application.properties";
org.apache.commons.dbcp.BasicDataSource dataSource {
@scope = singleton;
@destroy-method = close;
driverClassName = "${jdbc.driverClassName}";
url = "${jdbc.url}";
username = "${jdbc.username}";
password = "${jdbc.password}";
defaultAutoCommit = true;
}
org.springframework.orm.ibatis.SqlMapClientFactoryBean sqlMapClient {
@scope = singleton;
@init-method = afterPropertiesSet;
@factory-method = getObject;
configLocation = "classpath:sqlmap-config.xml";
dataSource = $dataSource;
}
/* this string will have Java unescape encoding applied */
STRING str = "\tA test\u0020string with \\ escaped character encodings\r\n";
/* this string will remain literal - with escape characters remaining in place */
STRING regexp = @"(\$\{([a-zA-Z][a-zA-Z0-9._]*)\})";
/* multi-line text block - equates to a java.lang.String instance */
TEXT my_multi_line_text = ///
Here is a line of text.
This is yet another. Here is a blank line:
Now picks up again.
///;
/* forward use of 'props' bean */
java.util.HashMap map {
this($props);
}
/* equates to a java.util.Propertis instance */
PROPERTIES props {
"James Ward" = "Adobe Flex evangelist";
"Stu Stern" = "Gorilla Logic - Flex Monkey test automation";
Dilbert = "character in popular comic strip of same title";
"App Title Display" = "Application: ${app.name}";
"${app.desc}" = "JFig processes text-format Java configuration data";
}
/* equates to a java.util.ArrayList instance */
LIST list {
this(["dusty", "moldy", "${app.version}", $str]);
[234, 9798.76, -98, .05, "numbers", $props, ["red", "green", "blue"]];
}
je dû modifier mon poste pour changer « JFig » à « SFIG ». Turns out il y a déjà un autre outil de programmation Java-centrique appelé JFig et il a été autour depuis plusieurs années. J'ai choisi SFIG impliquer la relation prévue de configuration pour le printemps-cadre. – RogerV