pessoal estou começando a estuda spring 3, e deparei em varios artigos usando o @Inject e o @Named mais essas 2 anotações para injetar não faz parte do pacote do spring, usando essas 2 anotações estou usando o CDI do JEE 6 ?
As anotações @Inject e o @Named são referentes a JSR330 que é prevista para padronizar as anotações de injeção de dependências.
Vc pode usar elas ou usar as anotações do próprio pacote do spring @Autowired ou @Repository e @Service.
[quote=romarcio]As anotações @Inject e o @Named são referentes a JSR330 que é prevista para padronizar as anotações de injeção de dependências.
Vc pode usar elas ou usar as anotações do próprio pacote do spring @Autowired ou @Repository e @Service.
[/quote]
Entendi,
Então as classes POJO ou Beans posso anotalas com o @Service?
Tipo @Autowired seria a mesma coisa que o @Inject
O @Repository e @Service funcionam como o @Named
Porém se usar o @Repository ele deve ser usado nas classes do tipo Dao e o @Service nas classes do tipo service.
[quote=romarcio]Tipo @Autowired seria a mesma coisa que o @Inject
O @Repository e @Service funcionam como o @Named
Porém se usar o @Repository ele deve ser usado nas classes do tipo Dao e o @Service nas classes do tipo service.[/quote]
Entendi, mais meus beans como eu anotaria de forma correta sem usar o @Named com anotaçoes do srping
Não sei qual tutorial você está seguindo, mas onde ele usa @Inject você usa o @Autowired, onde ele usa @Named e for classe dao(que trabalha com bd) você usa o @Repository e onde for classe de serviço, regra de negocio, a classe que vc quer fazer a injeção de dependencia, ao invés de @Named usa o @Service
O dao, a classe com métodos de banco, nunca serão injetadas, pq cada dao é especifico a seu tipo(UserDao, ContatoDao, PessoaDao). Então você deve injetar as classes de servico, tipo:
[code]@Service
class ContatoService {
//vamos injetar o UserService
@Autowired
private UserService userService;
//vamos injetar o PessoaService
@Autowired
private PessoaService pessoaService;
}[/code]
Estou utilizando JSF2 + Spring 3 + Weld (implentação de referencia da JSR-330)
No meu caso tenho em minha DAO a seguinte situação:
[code]@Repository
public class CursoDAOImplementacao extends GenericoDAOImplementacao implements
CursoDAO {
@Autowired
public CursoDAOImplementacao(
@Qualifier("sessionFactory") SessionFactory factory,
@Qualifier("hibernateTemplate") HibernateTemplate hibernateTemplate) {
setHibernateTemplate(hibernateTemplate);
setSessionFactory(factory);
}
}[/code]
Tenho esse construtor dessa forma pois é uma maneira que eu encontrei para injetar sessionFactory’s diferentes de forma dinamica, para conectar em mais de um BD (Algo particular da minha aplicação).
O @Repository passa a ser @Named, o @Autowired => @Inject, e como poderia fazer com os meus @Qualifier’s? Até tem uma anotação igual da JSR330 mas não comporta igual e se eu apenas substituir fica dando erro de compilação. Alguem tem alguma ideia?