Criando e gerenciando objetos de terceiros com Spring e @Bean

Umas das premissas mais importantes quando trabalhamos com algum framework IoC/DI, como Spring ou CDI, é delegar a criação e o gerenciamento dos objetos para seus containers. Isso permite que nosso código seja mais flexível e menos acoplado a lógica de criação de objetos complexos ou de terceiros.

Assim como a anotação @Produces do CDI, o Spring desde sua versão 3.0 nos permite obter o mesmo comportamento através da anotação @Bean. A idéia é a mesma, criar objetos caros, complexos ou de outros frameworks e registrá-los no container para que eles possam ser injetados como dependências noutras classes do sistema.

Escrevi um artigo no blog da TriadWorks sobre o assunto com mais detalhes sobre a anotação @Bean e suas vantagens. Vale a pena a leitura e uso da prática!

Tagged with: , , , , , , , , ,
Posted in Boas Práticas, Desenvolvimento de Software, Java, JEE, Spring

Conversores e validadores acessando beans do Spring

Não é incomum ter conversores ou validadores do JSF que precisem acessar o banco de dados ou mesmo outros recursos do sistema, como um webservice, por exemplo. A verdade que esta prática é muito utilizada quando implementamos nossos entity converters. Quando trabalhamos com Spring ou CDI nós temos todo o poder de um container de IoC/DI, o que nos possibilita injetar beans gerenciados em nossas classes ou mesmo managed beans. Contudo a especificação do JSF 2.x ainda não tem um suporte decente de DI para conversores, validadores e alguns outros componentes internos do framework.

Para contornar essa limitação, podemos gerenciar os conversores do JSF com o container do Spring ou CDI. Dessa forma ganhamos a possibilidade de injetar qualquer bean dentro dos conversores e aplicar qualquer recurso extra do container, segurança, caching, controle transacional etc. Para saber mais detalhes sobre como injetar beans em seus validadores ou conversores, não deixe de ler o último post de 2014 no blog dos desenvolvedores da TriadWorks.

Tagged with: , , , , , , , , , , , , , , , , , , ,
Posted in Boas Práticas, Desenvolvimento de Software, Java, JEE, JSF, JSF2, Spring

Economize memória com o padrão Flyweight

Quando desenvolvemos jogos é muito comum termos diversas entidades do mesmo tipo em um cenário, como inimigos, projéteis, nuvens, efeitos etc. Criar sempre novos objetos para cada entidade que surge na tela é algo custoso para JVM, tanto em performance quanto em uso de memória.

Para minimizar o uso desnecessário de recursos da máquina ou dispositivo, nós podemos utilizar o padrão Flyweight, na qual se encarregaria de criar apenas um único objeto em memória e compartilhá-lo pelo resto do jogo ou aplicação. A idéia é simples mas os ganhos são consideráveis!

Para exemplificar bem o uso deste padrão de projeto, nós da TriadWorks escrevemos um post sobre o assunto com direito a exemplos! Vale a pena dar uma olhada e ver se esse padrão se encaixa no seu projeto!

Para não perder nenhum post no blog dos instrutores da TriadWorks, você pode se inscrever na nossa página (fica no rodapé!) e receber um email sempre que um novo post for lançado! Ah! Nós estamos tentando blogar toda segunda-feira pela manhã, então fica de olho!

Tagged with: , , , , , , , , , ,
Posted in Boas Práticas, Engenharia de Software, Java