Spring 3

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?