Blog do Urubatan
msgbartop
Desenvolvedor, Arquiteto, Palestrante, Coordenador do RSJUG, Patinador e Blogger
msgbarbottom

29 Nov 06 Acabou de ser liberada a versão 1.0.2 do Spring-Annotation

Algumas novidades desta versão::
* Suporte a configuração baseada em XML Schema, agora basta adicionar a tag <sa:annotation-autoload> em qualquer arquivo de configuração do spring para habilitar o modulo de anotações.
* não é mais necessária a criação do arquivo to.properties se todas as suas classes estão em um diretório, Este arquivo agora eó é utilizado para marcar quais Jars devem ser escaneados.
* nova anotação @Alias que habilita a configuração de diversos nomes (ou apelidos) para um bean
* Suporte a filtros no scanner de classes, agora é possivel ter beans diferentes em contextos diferentes,para habilitar isto basta adicionar as tags: includePackage ou excludePackage dentro da tag <sa:annotation-autoload>, ambas usam expressões regulares para filtrar quais arquivos serão incluidos ou não.
* O modulo de JSF não obriga mais a utilização do loadtimeweaving do AspectJ, estamos trabalhando em uma solução para suportar as duas opções …
* Agora o modulo de leitura de anotações suporta a configuração da bean factory com qualquer anotação, mas esta feature ainda não esta documentada, esperem novidades sobre isto para a proxima versão
* Adicionado suporte para as anotações da JSR 250, agora as anotações @PostCreate e @PreDestroy podem ser utilizadas para especificar os metodos de init e destroy de qualquer bean, e com o modulo de segurança (apenas iniciando o desenvolvimento) as anotações @DenyAll, @PermitAll e @RolesAllowed para contigurar a segurança do projeto
* Iniciado o backport de algumas das novas features do modulo JSF, como os novos escopos (flash e conversation) para o modulo básico de web
* não é mais necessário adicionar explicitamente o RequestContextListener no seu web.xml ele agora é adicionado automaticamente pelo dummy.tld
* Foram escritos alguns testes unitários a mais, mas ainda faltam muitos (se alguem se habilitar a ajudar eu agradeço :D )
* A pouca documentação existente esta um pouco melhorada e ja existe um pouco mais de javadoc escrito

em resumo é possivel fazer o seguinte:

crie um arquivo de nome appContext.xml com este conteúdo:



    
    

Agora crie uma classe java de nome Main com este código:

@Bean(name="main")
public class Main {
    private TestObject test;

    /**
     * this method should be called from spring to set the variable to the other bean in the context which has the name set to test
     * @param test
     */
    public void setTestBean(TestObject test) {
        this.test = test;
    }

    public static void main(String[] args){
        ClassPathXmlApplicationContext appctx = new ClassPathXmlApplicationContext("/appContext.xml");
        Main m = (Main) appctx.getBean("main");
        m.test.printName();
    }

}

e outra de nome TestObject con este código:

@Bean(name = "testBean")
public class TestObject {
    public void printName() {
        System.out.println("No Name, just an example");
    }
}

Tudo prontinho, você ja tem a rimeira aplicação rodando.

Se você quiser uma aplicação WEB, comece mais ou menos assim:
uma classe java de nome ExampleController:

@Bean
@UrlMapping("/test")
public class ExampleController implements Controller {
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        return new ModelAndView("example","message","This page is the /WEB-INF/jsp/example.jsp and it was openned from the Example Controller using the Spring View Resolver");
    }
}

um applicationContext.xml dentro do diretório WEB-INF:



    
    
    



    

e a configuração do seu web.xml:


    Spring-Annotation Example App

org.springframework.web.context.ContextLoaderListener
    
    
        dispatcher
        org.springframework.web.servlet.DispatcherServlet
        
contextClass
net.java.dev.springannotation.utils.FakeWebApplicationContext
        
        1
    
    
        dispatcher
        /web/*
    

como você pode ver, o web.xml é apenas um arquivo web.xml padrão para o Spring MVC (a classe FakeWebApplicationContext é apenas para que o dispatcher servlet nã nos obrigue a criar o arquivo dispatcher-servlet.xml, se você criar este arquivo pode remover o parametro)

existem mais alguns exemplos no site do rojeto, e a versão em ingles deste post aqui.
Se você gostou da ideia e quer mais exemplos deixe algum comentário, ou se você qiser contribuir com o projeto com alguma documentação ou exemplos eu vou agradecer bastante :D

Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!

Tags: , ,

Reader's Comments

  1. |

    Estava testando a versão 1.0.2 do Spring-Annotation com o exemplo q vc passou, mas deu um erro ao iniciar: java.lang.NoClassDefFoundError: javax/annotation/PreDestroy
    Ao q parece está presente na vesão 6 do JDK, então a pergunta:
    O Spring-Annotation prescisa do Java 6?? Ou posso baixar em um jar separado? Estou utilizando o JDK 1.5.0_07

    Reply to this comment
  2. |

    não precisa do JDK 6 não, estas são as anotações da JSR 250.
    pode baixar o jar daqui
    usando o maven ele deveria baixar o jar sozinho …
    vou cuidar para que na proxima versão este jar não seja obrigatorio.
    mas adicionando o jar do link a cima no classpath deve resolver o problema :D

    Reply to this comment
  3. |

    Funcionou! Obrigado.
    Aproveitando… vc pretentede voltar com o suporte a WebServices com xfire?

    Reply to this comment
  4. |

    o suporte não foi removido, só não esta nos exemplos …
    é o suporte do XFire ao SpringFramework que estava sendo utilizado …
    qualquer coisa que rode no Spring Framework roda com o Spring-Annotation também, ja que este usa toda a infra do primeiro :D
    é só usar exatamente o mesmo código :D

    Reply to this comment
  5. |

    reply to your comment on: http://younghoe.info/327

    Hi, Ronardinho’s friend!

    I don’t read your posts on blog. There’s some characters such as ‘manutenção’ or ‘aplicações’. I think you felt like me some minutes ago. :)
    Thank you for your kindness and a long comment with some codes. Some days ago, I found your project: http://younghoe.info/262

    Though we use a different language, Rod and Spring make us meet on the fly. Thanks… Spring and Winter. :)

    Reply to this comment
  6. |

    Olá

    Onde consigo baixar a documentação para ler off line?

    []s
    Luca

    Reply to this comment
  7. |

    não existe um download disponivel para isto nesta versão, mas você pode baixar os fontes e exeutar mvn site, que a documentação sera gerada :D

    Reply to this comment
  8. |

    Estou afim de lhe ajudar nos testes unitários.

    Reply to this comment
  9. |

    valeus mesmo :D é só baixar o tunk do SVN e começar …

    Reply to this comment
  10. |

    Você sabe se criaram alguma coisa para utilização de roles do oracle?

    Reply to this comment
  11. |

    Tiago, pronto não tem, mas basta implementar um authenticator para isto.

    Reply to this comment
  12. |

    Falo de setar role no banco. Ex: set role R_MINHA_ROLE identyfied “SENHA”.
    Não role de acesso a partes do sistema.

    Seria um authenticator mesmo?

    Reply to this comment

Leave a Comment