Arquitetura utilizando Spring 2.5

Utilizando spring tenho algumas dúvidas em relação ao que devo fazer ou não.

*Devo declarar todas minhas classes de service como @Transactional?
*Se eu preciso de um serviço de outro bean, devo declarar esse bean como atributo e gerenciar isso pelo application context?
Por exemplo, eu tenho uma associação taxonomia x conceito, onde para salvar um conceito eu devo salvar todos cursos referentes aquele conceito, mas tenho que fazer algumas validações antes de salvar os conceitos.
Eu fiz da seguinte forma.

<bean id="taxonomiaService" parent="txProxyTemplate">
		<property name="target">
			<bean
				class="br.ucsal.projeto.domain.services.impl.TaxonomiaServiceImpl">
				<property name="taxonomiaDAO">
					<ref bean="taxonomiaDAO" />
				</property>
				<property name="conceitoService">
					<ref bean="conceitoService" />
				</property>
			</bean>
		</property>
	</bean>

E então o método da classe de serviço

[code]public void save(List conceitos) {

	TaxonomiaModel dominio = ConceitosUtil.getDominio(conceitos);
		
	Long id = taxonomiaDAO.save(dominio);
	dominio.setId(id);
	
	conceitoService.saveAll(conceitos, dominio);
	
}[/code]
  • Devo instanciar beans na mão grande?

Essas são algumas duvidas…

  1. Na minha humilde opinião deve-se colocar @Transactional nos métodos que necessitam e não na classe, afinal um método get não precisa de transação, certo?

  2. Eu não faria isso(service dentro de outro), criaria um PojoBo que teria esses 2 services, exemplo…

[code]@Transactional
class PojoBo {
@AutoWired
private TaxonomiaService taxonomiaService;
@AutoWired
private ConceitoService conceitoService;

//get’s and set’s
}[/code]3) Sim afinal o bean não precisa ser controlado pelo Spring, certo?

Outra coisa usa a configuração via Annotation porque facilita e muito, adeus xml. rs

Adicionar uma classe para encapsular os dois services não seria “uma camada a mais”???
E outra coisa, por que instanciar na mão grande se temos IOC?
Para você colocar @transational nos métodos é necessário alguma configuração na classe?

Eu não vejo como outra camada e sim como uma melhor forma de separação e reaproveitamento de negócio.

Para que usar ioc se o bean nunca terá um comportamento diferente? Ou seja uma PessoaBean sempre será um Object Mapping Orm/ou espelho da tabela, certo? E outra teoricamente esse Bean deverá vir instanciado com as devidas informações do user…

Não, apenas coloque a annotation no método.