Para quem se interessa em aprender sobre Jython, Python na plataforma Java, indico ler o artigo do Luis Antonio Tavares publicado na Java Magazine deste mês (nº95). O artigo aborda conceitos exemplificando-os através de trecho de códigos focando na construção de uma aplicação Swing utlizando Jython.
29/04/2011
Spring – DI Utilizando Annotations
Posted by cris under Java, Spring | Tags: Annotations, Injeção de Dependência, Java, Spring |Leave a Comment
Para que se possa habilitar a configuração dos beans por anotações, será utilizado no arquivo de configuração do Spring o elemento <context:annotationconfig/>. A listagem a seguir ilustra o uso deste elemento.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans- 3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context- 3.0.xsd"> <context:annotation-config/> </beans>
A listagem seguinte ilustra a classe Message, que possui alguns atributos prédefinidos no código e seus respectivos métodos de acesso.
@Component
public class Message {
@Value("Somebody")
private String author;
@Value("It's DI with Spring's annotation")
private String message;
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
A classe MessegerImpl implementa a interface Messeger. A anotação @Service é uma especialização da anotação @Component, ela é usada especificamente para indicar um serviço.
@Service("messeger")
public class MessegerImpl implements Messeger {
@Override
public void writeMessage(Message message) {
System.out.println("Author: " + message.getAuthor());
System.out.println("Message: " + message.getMessage());
}
}
A próxima classe é a WelcomeController, nesta classe de controle existem dois atributos: uma mensagem e um mensageiro. Estes atributos são anotados com o @Autowired, isto fará com que o Spring injete uma instância da classe correspondente no atributo. Pode-se notar então que os atributos não são instanciados, eles são usados diretamente.
@Controller
public class WelcomeController {
@Autowired
private Message message;
@Autowired
private Messeger messeger;
@RequestMapping("/showMessage")
public void showMessage(){
messeger.writeMessage(message);
}
}
Fonte: TAVARES, L. A; TRIPOLI, C. S. – SAS – Sistema de Avaliações e Simulados – Pouso Alegre. UNIVÁS, 2010. 76f.
22/09/2010
Artigo Integrando Spring 3.0 e JPA 2.0 – Java Magazine 83
Posted by cris under Java, Spring | Tags: Artigo, Java Magazine, JPA, Spring |[6] Comments
A revista Java Magazine deste mês (edição 83) trás um artigo que escrevi sobre a integração do framework Spring com JPA.
O artigo trata de como fazer a integração do Spring 3.0 e JPA 2.0. No decorrer do artigo é implementado um exemplo demonstrando o funcionamento das duas tecnologias e como elas podem trazer vantagens para a camada de persistência da sua aplicação, simplificando e desacoplando código, obtendo desta forma, facilidade de manutenção e um código mais limpo.
Abaixo segue a lista de todos os artigos publicados nesta edição:
- Java SE 7: Plataforma
- Guice: o novo Spring da Google?
- Desenvolvimento 3D em Java
- Conhecendo o Hibernate Validator
- Integrando Spring 3.0 e JPA 2.0
- Boas práticas com web services RESTful
- Criando Aplicações com MVC
A versão digital desta edição já está liberada e acredito que em breve a versão impressa já deve estar nas bancas. Espero que gostem do artigo!
16/12/2009
eco4planet – O Buscador Ecologicamente Correto!!!
Posted by cris under Outros | Tags: Conscientização Ambiental, Meio Ambiente |Leave a Comment
O eco4planet é um buscador que utiliza o sistema Google™ Pesquisas Personalizadas que tráz a qualidade das pesquisas Google agregando consciência ambiental. O buscador utiliza predominantemente a cor preta garando assim uma economia de energia de até 20% comparando com o buscador de tela branca. De acordo com site do eco4planet:
Considerando as mais de 2,55 bilhões de buscas diárias realizadas no Google™ com tempo médio suposto em 10 segundos por pesquisa e a proporção de monitores por tecnologia utilizada, teríamos com um buscador de fundo preto a economia anual de mais de 7 Milhões de Kilowatts-hora! Esse valor equivale à:
- Mais de 63 milhões de televisores em cores desligados por 1 hora;
- Mais de 77 milhões de geladeiras desligadas por 1 hora;
- Mais de 175 milhões de lâmpadas desligadas por 1 hora;
- Mais de 58 milhões de computadores desligados por 1 hora.
Bom, isso faz muita diferença neh! Além disso a cada 50 mil acessos uma árvore é plantada. Esta é uma forma de mostrar que todos tem a possibilidade de ajudar este planeta de alguma forma. Então se você utiliza o Google como buscador comece também a usar o eco4planet!!!
- Mais de 63 milhões de televisores em cores desligados por 1 hora;
- Mais de 77 milhões de geladeiras desligadas por 1 hora;
- Mais de 175 milhões de lâmpadas desligadas por 1 hora;
- Mais de 58 milhões de computadores desligados por 1 hora.
13/08/2009
Prototype
Posted by cris under Padrões de Projeto | Tags: Design Patterns, Engeharia de Software, Padrões de Projetos, Prototype |1 Comment
Prototype também é um padrão de projeto (design pattern) criacional, seu objetivo é a criação de objetos a partir de um modelo, um protótipo já estabelecido, ele é usado em casos em que se é necessário a criação de vários objetos de uma classe cujo tais objetos sejam semelhante.
Para isso deve-se criar um objeto modelo (protótipo) clonável e fazer as atribuições que são comuns a todos os objetos ou os valores default. A classe deve implementar a interface Clonable.
public class Aluno implements Cloneable {
private String nome;
private String cidade;
private String cep;
private String universidade;
private Boolean possuiDependencia;
private ArrayList<Float> notas = new ArrayList<Float>();
// GETTERS AND SETTERS
...
}
No metodo clone poderá ser feito a clonagem do protótipo, no caso da array, terá que ser feito um for, clonando a array manualmente, pois senão ele apenas criará uma referência para o mesmo objeto e então se um elemento for alterado em uma lista será alterado nas outras também.
protected Object clone() throws CloneNotSupportedException {
Aluno novoAluno = (Aluno) super.clone();
if(this.notas != null){
novoAluno.notas = new ArrayList<Float>();
for(Float f : this.notas){
novoAluno.notas.add(f);
}
}
return novoAluno;
}
Usando:
public static void main(String[] args) throws CloneNotSupportedException {
Aluno alunoPrototipo = new Aluno();
alunoPrototipo.setCidade("Cidade Default");
alunoPrototipo.setCep("Cep Default");
alunoPrototipo.setUniversidade("Universidade Defaut");
alunoPrototipo.setDependencias(false);
Aluno a1 = (Aluno) alunoPrototipo.clone();
a1.setNome("José");
System.out.println(a1);
Em UML:
Referência: Aula de Engenharia de Software – Profº Marcio – Univás.
[/sourcecode]
12/08/2009
Singleton
Posted by cris under Padrões de Projeto | Tags: Design Patterns, Engeharia de Software, Padrões de Projetos, Singleton |Leave a Comment
Singleton é um padrão de projeto (desingn patterns) criacional cuja a função é garantir a criação de uma única instância de determinada classe para toda a aplicação, ou seja, o objeto desta classe será criada apenas uma vez e sempre que necessário usa-lo, será sempre o mesmo objeto que será utilizado.
Para isso é necessário que a classe tenha um construtor privado, tenha um atributo estático e privado da classe para que nele seja armazenado a instância única da classe e um método público e estático para retornar a instância única do objeto e cria-la quando for utilizada da primeira vez.
public class SingletonClass {
private static SingletonClass instance;
private SingletonClass() {
}
public static SingletonClass getInstance(){
if(instance == null){
instance = new SingletonClass();
}
return instance;
}
}
Este código acima pode ser melhorado ainda para que tenha maior garantia tornado o atributo da classe também uma constante.
public class SingletonClass {
private static final SingletonClass INSTANCE = new SingletonClass();
private SingletonClass() {
}
public static SingletonClass getInstance(){
return INSTANCE;
}
}
Em UML:
Referência: Aula de Engenharia de Software – Profº Marcio – Univás.
23/07/2009
Expressões Regulares
Posted by cris under Outros | Tags: Expressões Regulares, Regex |Leave a Comment
Hoje precisei fazer validação de email e me deparei com as expressões regulares, não tinha o menor conhecimento sobre elas mas descobri que são bastante úteis, então resolvi postar aqui algumas dos metacaracteres que conheci:
Circunflexo ^
É um metacaractere de posicionamento, indica início de linha. Por exemplo:
^alguma_palavra
quando esta expressão for usada ela buscará por um início de linha seguida da palavra especificada na expressão.
Cifrão $
Também é um metacaractere de posicionamento, ele representa um final de linha. Por exemplo:
alguma_palavra$
esta expressão buscará pela palavra especificada seguida de um final de linha.
Lista []
A lista é utilizada para indicar todos os caracteres que podem aparecer em uma determminada posição. Por exemplo:
[Mm]aria
No exemplo acima a expressão irá aceitar tanto o nome Maria iniciado com lera maiúscula quando com letra minúscula.
Ponto .
Indica que naquela posição poderá ter qualquer caractere. Por exemplo:
.[aeio]$
procura por qualquer caractere seguido de uma vogal e seguido de um final de linha.
O ponto também pode ser utilizado para indicar uma quantidade fixa de caractere. Por exemplo:
^..........$
No exemplo acima ele buscará por uma linha que contenha 10 caracteres.
Chaves {}
Dentro dela pode ser indicado a quantidade do caractere ou metacaractere anterior que sera repedidas. Por exemplo:
a{4}
A espressão acima procurará pela letra a se repetindo 4 vezes.
^.{10}$
Esta expressão faz a mesma coisa que o exemplo citado do Ponto (.), buscará por uma linha que contenha 10 caracteres, pois ele repetirá o ponto 10 vezes.
Curinga ou AND .*
Ele significa “qualquer coisa”. Pode ser usado para procurar por partes distintas de uma string. Por exemplo:
João .* Silva
A expressao acima fará verdadeira todas as strings que tem João qualquer coisa e Silva.
OR |
É usado para encontrar uma de várias opções, procura ou uma palavra ou outra, as opções devem ficar dentro de parentêses(). Por exemplo:
^(palavra1|palavra2|palavra3)
Essa expressão procurará um início de linha seguido da palavra1 ou a palavra2 ou a palavra3.
Interrogração ?
Assim como as chaves ela também é um repetidor. O caractere pode aparecer uma vez ou nao aparecer. Por exemplo:
a?
Asterisco *
Também é um repetidor. O caractere pode não aparecer ou aparecer em qualquer quantidade. Por exemplo:
a*
Mais +
Também é um repetidor. O caractere deve aparecer uma ou mais vezes. Por exemplo:
a+
Lista Negada [^]
Quando se quer negar uma lista é só utilizar o circunflexo antes. Por exemplo:
[^Mm]aria
Ele buscará por qualquer caractere exceto o M maiúsculo e minúsculo.
Referência: Apostila Conhecendo as Expressões Regulares, Aurélio Jargas.
14/07/2009
Janela de Confimação com JavaScript
Posted by cris under JavaScript | Tags: HTML, JavaScript |Leave a Comment
11/05/2009
Integração JPA + Spring
Posted by cris under Java, Spring | Tags: Injeção de Dependência, Persistência de dados, Spring |[11] Comments
Neste exemplo será utilizado a versão do spring 2.5.6, hibernate-distribuition 3.3.1, hibernate-entitymanager 3.4 e hibernate-annotation 3.4, como IDE está sendo usado o Eclipse e como servidor o Tomcat. Abaixo segue a relação com os jars necessários:
| hibernate3.jar | c3p0.jar |
| antlr.jar | commons-beanutils-1.7.0.jar |
| asm.jar | commons-pool-1.4.jar |
| asm-attrs.jar | jstl.jar |
| cglib.jar | jta.jar |
| commons-collections.jar | oro.jar |
| commons-logging.jar | slf4j-api.jar |
| dom4j.jar | slf4j-simple.jar |
| ehcache.jar | spring.jar |
| javassist.jar | spring-aop.jar |
| jta.jar | spring-beans.jar |
| hibernate-annotations.jar | spring-context.jar |
| hibernate-commons-annotations.jar | spring-context-support.jar |
| hibernate-entitymanager.jar | spring-core.jar |
| ejb3-persistence.jar | spring-orm.jar |
| jboss-archive-browsing.jar | spring-tx.jar |
| postgresql-8.2-504.jdbc4.jar | spring-web.jar |
| spring-webmvc.jar | standard.jar |
No eclipse será criado um Web Dinamic Project, dentro do projeto criado será adicionado as libs no diretório WebContent -> WEB-INF -> lib:
A aplicação exemplo rodando:
Clique no link para baixar o tutorial completo em PDF: Spring+JPA
Clique aqui para baixar o projeto sem as libs
Clique aqui para baixar as bibliotecas necessárias
Clique aqui para baixar o sql do exemplo








