Spring injeção de depêndencia

3 respostas
F

Olá gujeiros,

Estou utilizando o Spring para fazer injeçao de dependencias, como tinha estudado em tutoriais, a gente utiliza um método main aonde pega o contexto e seta o id do bean com o método getBean para acessar a classe no applicationContext.xml … blz, como no meu trabalho que estou fazendo não teremos que criar o método main, então acabei criando os listeners no arquivo web.xml e carreguei o arquivo applicationContext.xml também dentro do web.xml… agora é que vem a pergunta, como faço para criar o contexto ou esse contexto já é criado, como eu acesso o id do bean que antés era pelo método getBean()?!

abraço,

3 Respostas

J

Cara, você não usa/gosta de annotations? Você está fazendo tudo pelo arquivo xml, correto?

Eu não peguei essa fase do Spring, já peguei com as annotations.
Olha, é assim que costumo fazer:

web.xml - sobe o contexto do Spring e chama o arquivo mvc-dispatcher-servlet.xml
<display-name>Spring MVC Application</display-name>

	<!-- Spring MVC -->
	<servlet>
		<servlet-name>mvc-dispatcher</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>mvc-dispatcher</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			/WEB-INF/mvc-dispatcher-servlet.xml,
			/WEB-INF/spring-security.xml
		</param-value>
	</context-param>
mvc-dispatcher-servlet.xml
<!-- Ativa várias anottations serem detectadas em classes -->
	<context:annotation-config />

	<!-- Configura o projeto para as anottations de mvc do Spring
	Note that, with Spring 3.0, this tag works in Servlet MVC only!  -->
	<mvc:annotation-driven /> 
	
	<!-- Procura no classpath componentes anotados para serem registrados como Spring Beans
	 For example @Controller and @Service. Make sure to set the correct base-package -->
	<context:component-scan base-package="br.com.meuprojeto" />

	<!-- diretorio estatico do javascript -->
 <mvc:resources mapping="/javascript/**" location="/resources/javascript/*" />

 <!-- Sem isso definido, o spring nao encontra os conteudos estaticos 
 http://stackoverflow.com/questions/7939602/spring-mvc-http-get-requests-for-static-resources-are-handled-by-custom-servle -->
 <mvc:default-servlet-handler />
Pronto, acho que com isso já dá pra ter uma ideia. Agora, pode-se usar: @Controller - para os controllers @Service - camada de serviço (a que chama o DAO) @Repository - Dao @Component - Para injeção básica, é só anotar e chamar ela na outra classe E para chamar a classe anotada:
@Autowired
	private UserDAO userDAO;

	@Autowired
	private MyTools myTools;

	@Autowired
	private MailService mailService;

	@Override
	public List<User> findAllUsers() {
		return userDAO.findAllUsers();
	}
Vê se isso te ajuda
F

A versão do Spring é a: 2.0.8 não tem annotations :frowning: … eu não teria que usar o WebXmlApplicationContext?!

J

freak, eu acho que o seu WebXmlApplicationContext é o meu mvc-dispatcher-servlet.xml

Eu poderia colocar qualquer nome nele, pra falar a verdade o padrão do nome desse arquivo é applicationContext ou springAlgumaCoisa, o importante é referenciar ele no web.xml

Qualquer coisa me manda mensagem privada que te passo um projetinho bala aqui que sobe em dois minutos no Eclipse (Maven required)

Criado 20 de julho de 2013
Ultima resposta 23 de jul. de 2013
Respostas 3
Participantes 2