Framework de desenvolvimento perfeito :D
Adoro o SpringFramework, mas acho que ele utiliza XML demais, então seguindo a mesma linha do mentaway, aproveitei a api da bean factory do spring, e criei uma pequena biblioteca que possibilita utilizar todo o poder e flexibilidade do spring sem utilizar nem uma linha de XML, apenas código java.
A ideia utilizada do mentaway foi a de colocar uma classe de nome especifico no package default que faz a configuração inicial do sistema, mas isto é alteravel na configuração do applicationContext passando um array de classes de configuração como parametro, as poucas linhas de código que escrevi ja dão suporte para trabalhar para desktop ou para uma aplicação WEB, a unica coisa que foi feito foi um wrapper para a configuração de inicialização da BeanFactory.
Fiz uma aplicação de testes, que consiste de um VO, um dao qe extende HibernateDaoSupport, e uma classe que utiliza este dao para salvar 100 VOs, a classe de configuração que inicializa um DataSource e a SessionFactory do Hibernate possui apenas o código a baixo:
public class SpringContext extends AbstractSpringContext {
@Override
public void configure() {
addBean("testeDao", TesteDao.class);
JavaBeanDefinition def = addBean("dataSource", BasicDataSource.class);
def.setDestroyMethod("close");
def.addProperty("driverClassName", null, "org.postgresql.Driver");
def.addProperty("url", null, "jdbc:postgresql:getnet");
def.addProperty("username", null, "postgres");
def.addProperty("password", null, "postgres");
def = addBean("sessionFactory", AnnotationSessionFactoryBean.class);
def.addProperty("annotatedClasses", null, new String[] { "br.com.usiinformatica.spring.test.TesteVo" });
def.addProperty("schemaUpdate", null, "true");
Properties p = new Properties();
def.addProperty("hibernateProperties", null, p);
p.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
p.put("hibernate.c3p0.min_size", "3");
p.put("hibernate.c3p0.max_size", "5");
p.put("hibernate.c3p0.timeout", "1800");
p.put("hibernate.cache.provider_class", "org.hibernate.cache.EhCacheProvider");
p.put("hibernate.cache.use_query_cache", "false");
p.put("hibernate.cache.use_minimal_puts", "false");
p.put("hibernate.max_fetch_depth", "3");
p.put("hibernate.show_sql", "true");
p.put("hibernate.hbm2ddl.auto", "update");
addBean("app",App.class);
}
}
e a aplicação de testes tem o seguinte código:
public class App {
private TesteDao testeDao;
public static void main(String[] args) {
JavaApplicationContext ctx = new JavaApplicationContext();
App a = (App) ctx.getBean("app");
a.run();
}
O que acham desta brincadeira? sera que cola spring ala mentaway? spring sem XML? se tiver mais gente interessada em brincar com isto, tenho mais algumas ideias para continuar o desenvolvimento, quem quiser o código para testar é só entrar em contato comigo deixando um comentário aqui.
ideias para incrementar o brinquedo
- Criar algumas anotações para tornar esta configuração mais fácil e mais transparente
- Criar um processador para estas anotações para que a classe de configuração seja criada automaticamente.
- ….
- coloque a sua ideia aqui
O código atual utiliza generics e alguns outros recursos do java 1.5, mas isto não é necessário, se for interessante para alguem, isto é fácilmente alteravel, ainda mais que escrevi bem poucas linhas de código até agora para fazer isto
Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!


