Spring

9 respostas
P

Estou tentando implementar meu dominio + DAO com Spring e estou com duvida em relação a “injeção”
do DAO.

Eu tenho meu objeto de dominio, meu repositorio é uma interface e esta interface é implementada pelo
DAO.

Criei o bean no ApplicationContext-hibernate.xml

<bean id="CorteDAO" class="xx.xxx.xxxxx.dao.CorteDAO">
        <property name="sessionFactory" ref="sessionFactory"/>
</bean>

Minha duvida é: Como injetar este cara no Objeto de dominio ?

Devo criar um bean instanciando o objeto de dominio ?

<bean id="Corte" class="xx.xxx.xxxxx..domain.Corte" scope="Prototype" >
   <property name="repository" ref="CorteDAO" />
</bean>

e criar um listener no web.xml (“org.springframework.web.context.ContextLoaderListener”) ?

ou eu crio um DAOFactory, com ApplicationContext injetado, inicializando os Beans e atribuindo nos
objetos de dominio ?

Não estrou encontrando um jetio simples (se é que existe) de fazer isso.

Será que é isso : http://www.ibm.com/developerworks/java/library/j-aopwork13.html

9 Respostas

jgbt

sim, não existe magica. se vc quiser que seu Dao seja injetado em uma outra classe(service por exemplo), vc deve declara-la no applicationContext e definir a property e a classe que vai ser injetada.
eu particularmente uso o auto wiew byName, o que reduz o numero de configurações no applicationContext.
de uma lida na documentação que vc vai entender.

[]'s

M

q troço maluco tu fez ali hehe.

a injeção deve ser feita desta forma:

<bean id="Corte" class="xx.xxx.xxxxx..domain.Corte" scope="Prototype" >  
      <property name="repository">
          <ref bean="CorteDAO" />
      </property>
   </bean>

Mas recomendo utilizar autowire by name pq é mto + pratico.

P

Vlw ae !!

To viajando nisso !
Vou parar tudo e estudar mais…

Mas podem ter certeza… + coisas malucas irão aparecer por aqui !! :shock:

M

Kra, procura o livro Spring in Action na internet. Tu vai achar de barbada. Esse livro explica tudo sobre como funciona o Spring. Se tu trabalha direto com Spring é interessante ler todo ele.

Também tem que definir o listener lah no web.xml.

[]'s

fabiofalci

Mauricio, o negócio maluco ali é válido, na verdade essas duas declarações tem o mesmo efeito.

<bean id="Corte" class="xx.xxx.xxxxx..domain.Corte" scope="Prototype" >
   <property name="repository" ref="CorteDAO" />
</bean>


<bean id="Corte" class="xx.xxx.xxxxx..domain.Corte" scope="Prototype" >  
   <property name="repository">
       <ref bean="CorteDAO" />
   </property>
</bean>
P

Pessoal…

Preciso de uma luz antes de me aprofundar no assunto…

bom…minha arquitetura basica é a seguinte

tenho meu dominio
Ex.:
dominio = Corte©+CorteRepository(I)

e minha infra de BD = CorteDAO, este injetado no dominio.

C = Classe
I = Interface

Bom la vai, tomara que eu não complique + …hehehehhe

Como eu instancio meu objeto de dominio (Corte)?

Atraves do geBean do ApplicationContext ? sendo assim eu não poderia dar um new nesse cara, ne ? Porque ae o DAO não seria injetado, certo ?

rodrigo_gomes

Olá,

Onde vc vai usar seu objeto de dominio? vc deve injeta-lo na classe que vc vai usar.
Se for uma action de algum framework web, por exemplo, vc cria a action no spring (se o spring oferecer suporte a tal framework) e injeta seu objeto de dominio na action. Senão for assim, vc vai ter que pegar com o getBean do application context.

[]´s
Rodrigo

rodrigo_corinthians

Se tiver usando Struts 2 tem um plugin que faz injeção automática no estilo autowire byName.

P

Pessoal

Estou usando JSF…

Mas imaginem o seguinte caso

Minha classe Transacao possui uma referencia da classe Corte.

class Transacao 
{
    Corte corte;
}

Nesse caso eu injetaria Corte na Transacao ? Precisaria de uma interface para isso ?

Criado 14 de dezembro de 2007
Ultima resposta 14 de dez. de 2007
Respostas 9
Participantes 6