:: Google Guice, Google DI Framework  XML
Índice dos Fóruns » Notícias
Autor Mensagem
fabio.patricio
Forum Spammer

Membro desde: 04/01/2004 02:51:33
Mensagens: 1512
Localização: Porto Alegre - RS
Offline

Hal Jordan wrote:Mas a comparação com o String é meio dificil, deixo isso como tarefa pra evangelistas!!!


O P e o T ficam muito proximos.

Fabio Patricio
http://blog.wansoft.com.br

[WWW] [MSN] [ICQ]
saoj
Forum Spammer
[Avatar]

Membro desde: 09/03/2004 23:34:46
Mensagens: 2292
Localização: Los Angeles, EUA
Offline

Hal Jordan wrote:
saoj wrote:

Alguém ai poderia colocar comparativos com Pico e String também.



Spring tá aqui : http://code.google.com/p/google-guice/wiki/SpringComparison

Mas a comparação com o String é meio dificil, deixo isso como tarefa pra evangelistas!!!


Acho que eles foram bastante políticos na comparação com Spring. O que pareceu é que eles estão falando entrelinhas que "O Guice é mais simples que o Spring".

Mencionam tb o fato do Spring ter muito XML. Não acredito que nessa altura do campeonato o Spring ainda não tenha uma configuração programática como o Guice e como o Mentawai. Alguns vão dizer que preferem XML. Ok! Gosto não se discute, mas foi bom ver que os caras do Google também gostam de configuração programática.

Outra observação interessante é que eles defendem o uso de annotations. Eu ainda estou me definindo sobre isso, mas acredito que annotation é intrusivo. Se vc tem um modelo de dados que recebe um DAO, vc pode colocar uma annotation no campo do DAO para dizer que ele vai receber a implementação vai IOC. Mas vc não estaria atrelando o seu modelo a annotation do container de IOC ???

O que o Mentawai faz é usar o nome da propriedade para definir a dependencia, ou seja, quando eu defini o IOC eu associei um nome a ele, no caso "myService":



Logo não precisa de annotation pois o InjectionFilter vai ver que o nome da propriedade da action é "myService" e vai procurar por uma implementação de Service com o nome "myService".

A única desvantagem pequena disso é que se vc tem duas classes com duas propriedades com nomes diferentes, vc vai precisar definir o IOC duas vezes:



Usando as boas práticas de organização, o seu serviço pode e deve ter o mesmo nome em todos os lugares que ele aparece na sua aplicação. Caso contrário, ter que definir duas vezes como foi feito acima tb não me parece nada demais...

Participe dos meus novos blogs:
O Poder Primário - Você no controle da sua felicidade
Sedução Tecnológica - Tutoriais, dicas e histórias de um engenheiro

[Email] [WWW]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

Sérgio, a parte ruim de definir IoC da forma como o Mentawai e o Spring fazem, que é usando uma tonelada de strings para definir os injection points, é que acopla demais a lógica de wiring com detalhes do modelo. Se trocar o nome do atributo, tanto Spring e Mentaway vão fazer a coisa errada, usando annotations você evita isso.

Também concordo com você que é um problema usar annotations no modelo, pois ele passa a depender do framework. Tudo é uma questão de tradeoff. Qual você está pronto para aceitar.

Pessoalmente acho que Annotations são menos problemáticas, já que as classes injetadas possuem uma dependencia implicita no container de DI, pois não funcionam sem alguém exercendo esse papel. Então, com annotations diminui a quantidade de configuração e conhecimento que teu container tem sobre as classes injetadas, o que me parece sadio.


http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
fabio.patricio
Forum Spammer

Membro desde: 04/01/2004 02:51:33
Mensagens: 1512
Localização: Porto Alegre - RS
Offline

louds wrote:Se trocar o nome do atributo, tanto Spring e Mentaway vão fazer a coisa errada, usando annotations você evita isso.


No caso do Spring tem a opcao de escolher o tipo de wiring que será usado. Esse problema so ocorre quando wiring "byName" é usado o que não é aconcelhado pelo pessoal do Spring. Claro se nao usar ele a quantidade de configuracao cresce muito.

]['s

Fabio Patricio
http://blog.wansoft.com.br

[WWW] [MSN] [ICQ]
saoj
Forum Spammer
[Avatar]

Membro desde: 09/03/2004 23:34:46
Mensagens: 2292
Localização: Los Angeles, EUA
Offline

Eu diria que vc raramente vai trocar o nome do atributo, mas concordo que é um trade off, da mesma maneira que é um trade off atrelar o modelo ao framework usando annotation.

Como vc falou é uma questão de escolher qual trade off vc prefere.

Eu pessoalmente acho que nome de variável raramente muda:



Mas se por exemplo se vc fizer um typo no nome da variável, ou seja:



Não vai funcionar e vc vai ter que debugar isso... Mas typo é typo né?



Participe dos meus novos blogs:
O Poder Primário - Você no controle da sua felicidade
Sedução Tecnológica - Tutoriais, dicas e histórias de um engenheiro

[Email] [WWW]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

fabgp2001 wrote: No caso do Spring tem a opcao de escolher o tipo de wiring que será usado. Esse problema so ocorre quando wiring "byName" é usado o que não é aconcelhado pelo pessoal do Spring. Claro se nao usar ele a quantidade de configuracao cresce muito.
]['s


Cara, na real todo mundo usa wiring "byName" e dificilmente auto-wire, eu nunca vi um projeto Spring que não fosse todo com wiring-by-name.

Minha maior birra com Spring era o tamanho monstruoso do xml, mas agora com o 2.0 isso mudou muito.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
fabio.patricio
Forum Spammer

Membro desde: 04/01/2004 02:51:33
Mensagens: 1512
Localização: Porto Alegre - RS
Offline

louds wrote:
fabgp2001 wrote: No caso do Spring tem a opcao de escolher o tipo de wiring que será usado. Esse problema so ocorre quando wiring "byName" é usado o que não é aconcelhado pelo pessoal do Spring. Claro se nao usar ele a quantidade de configuracao cresce muito.
]['s


Cara, na real todo mundo usa wiring "byName" e dificilmente auto-wire, eu nunca vi um projeto Spring que não fosse todo com wiring-by-name.


Pois é, eu ja vi e é um saco de trabalhar. O ponto que eu quiz tocar nem foi se usam ou nao, mas sim que há a opcao. Claro que a facilidade do "byName" nao tem comparacao.

]['s

Fabio Patricio
http://blog.wansoft.com.br

[WWW] [MSN] [ICQ]
Kenobi
Forum Spammer
[Avatar]

Membro desde: 14/11/2003 13:06:37
Mensagens: 1452
Localização: Brasil
Offline

Acho que a parte boa de utilizar Spring, é que você pode tirar proveito de outros módulos, como mvc, aop, hibernate entre outros.

Aí você começa a sentir que o projeto tem um ganho legal, apesar dos XMLs de configuração.

Estou começando a estudar o SEAM e como a integração com o Spring poderia beneficiar meu projeto.

------------------------------------------------------------------
"Massakatsu Agatsu Katsuhaiabi" - "A verdadeira vitória é aquela sobre nós mesmos". / acesse :soaexpert.com.br
[WWW] [MSN] [ICQ]
Leozin
Forum Spammer
[Avatar]

Membro desde: 18/06/2005 21:01:26
Mensagens: 1907
Localização: São Paulo/SP
Offline

Kenobi wrote:apesar dos XMLs de configuração.


Poxa cara eu não vejo isso como algo ruim, pelo contrário, acredito que XML veio muito mais pra facilitar do que pra "piorar a vida" do desenvolvedor. Eu prefiro mil vezes fazer gerenciamento/configurações de transações e aop pelo Spring (declarativo) do que ter que fazer na mão ou annotations todos os códigos. Sim, há lugares que as anotações caem muito bem (vide hibernate3/ejb3) até mesmo as transações declarativas @Transaction, mas pra mim XML é muito necessário em várias casos

http://www.leozin.com.br/blog
[ICQ]
David
JavaEvangelist
[Avatar]

Membro desde: 18/03/2005 13:10:33
Mensagens: 450
Localização: Natal/RN
Offline


E que tal configurar o Spring programaticamente?

http://blog.interface21.com/main/2006/11/28/a-java-configuration-option-for-spring/

David Pereira
Engenheiro de Computação - UFRN
Mestre em Engenharia Elétrica
Doutorando em Engenharia Elétrica
[WWW]
velo
Virtual Machine Man
[Avatar]

Membro desde: 19/02/2004 18:23:55
Mensagens: 797
Localização: Jaraguá do Sul - SC
Offline

Leozin wrote:
Poxa cara eu não vejo isso como algo ruim, pelo contrário, acredito que XML veio muito mais pra facilitar do que pra "piorar a vida" do desenvolvedor.


Kra, sei lah, XML normalmente dá mais problema do que solução.

Quando c escreve algo errado no XML, normalmente vai dar um erro em Runtime que não tem nada a ver com o problema.

Eu ainda axo q a cada dia mais e mais projetos estão fugindo do XML.

Pode ser viagem minha, mas eu fujo do XML o tanto quanto possível!


VELO

Use o melhor:

Linux para servidores
Macintosh para gráficos
Palm para mobilidade
Windows para jogar paciência

SCJP 5
[Email] [MSN] [ICQ]
pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5169
Localização: Sydney - Australia
Offline

class MeuXyz extends AbsctractXyz??!?


É sério que as pessoas ainda constroem frameworks onde os módulos não são POJOs?

Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
saoj
Forum Spammer
[Avatar]

Membro desde: 09/03/2004 23:34:46
Mensagens: 2292
Localização: Los Angeles, EUA
Offline

pcalcado wrote:class MeuXyz extends AbsctractXyz??!?


É sério que as pessoas ainda constroem frameworks onde os módulos não são POJOs?


Mas ai daonde viriam os metodos para configurar as coisas?

Soh se fosse assim:



A unica vantagem seria que o modulo nao extenderia ninguem, mas do mesmo jeito ele ficaria dependente do framework...

Vale a pena isso?

Participe dos meus novos blogs:
O Poder Primário - Você no controle da sua felicidade
Sedução Tecnológica - Tutoriais, dicas e histórias de um engenheiro

[Email] [WWW]
pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5169
Localização: Sydney - Australia
Offline

Opções...

1 - Como o Spring faz
2 - Convention over configuration no nome dos métodos, exceção tratada com uma anotação, acho que é o que o VRaptor faz

Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
saoj
Forum Spammer
[Avatar]

Membro desde: 09/03/2004 23:34:46
Mensagens: 2292
Localização: Los Angeles, EUA
Offline

pcalcado wrote:
1 - Como o Spring faz


Nao tenho ideia...

pcalcado wrote:
2 - Convention over configuration no nome dos métodos, exceção tratada com uma anotação, acho que é o que o VRaptor faz


Para o metodo configure() sem problemas. Mas dentro desse metodo vc vai ter que chamar outros metodos para configurar a coisa, e esses metodos tem que vir de algum lugar. CoC nao resolve aqui...

Acho que soh tem duas opcoes:

1 - Estende uma classe abstrata.

2 - Passa um Configurator como parametro de configure().

Participe dos meus novos blogs:
O Poder Primário - Você no controle da sua felicidade
Sedução Tecnológica - Tutoriais, dicas e histórias de um engenheiro

[Email] [WWW]
 
Índice dos Fóruns » Notícias
Ir para:   
Powered by JForum 2.1.8 © JForum Team