lsjunior 3 de jul. de 2012
Com Spring 3 vc faz assim:
@Configuration
public class ClassXYZ {
@Bean
public BeanXYZ getBean() {
return new BeanXYZImpl();
}
}
CDI é trocar @Bean por @Produces .
ThiagoInGuj 3 de jul. de 2012
Isjunior, tu é meu brother! Valeu mesmo!!! Obrigado!
ThiagoInGuj 3 de jul. de 2012
Isjunior, só me explica uma coisa, como eu faço para chamar o metodo fabrica passando um argumento?
ThiagoInGuj 3 de jul. de 2012
Pelo que eu pesquisei, não é possível chamar o metodo fabrica passando um argumento. Então mudei a minha abordagem:
Em vez de usar o arquivo de configuracao do spring para injetar os daos, eu usei a minha classe FabricaDeDao:
package dao.controle ;
import net.sf.cglib.proxy.Enhancer ;
import org.springframework.context.annotation.Bean ;
import org.springframework.context.annotation.Configuration ;
import dao.LanceDAO ;
import dao.ProdutoDAO ;
@Configuration
public class FabricaDeDao
{
@Bean
public ProdutoDAO produtoDao () throws Exception
{
return getDao ( "dao.impl.ProdutoDAOImpl" );
}
@Bean
public LanceDAO lanceDao () throws Exception
{
return getDao ( "dao.impl.LanceDAOImpl" );
}
@SuppressWarnings ( "unchecked" )
public static < T > T getDao ( String classeDoDaoComoString )
throws Exception
{
Class <?> classeDoDao = Class . forName ( classeDoDaoComoString );
return ( T ) Enhancer . create ( classeDoDao , new InterceptadorDeDAO ());
}
}
Agora, sempre que eu quiser usar um dao, basta usar o @Autowired ProdutoDAO que o spring vai chamar a minha fábrica
No more xml.
Legal!