Eu estou usando dois arquivos xml de configuração, são eles
app-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<context:annotation-config/>
<context:component-scan base-package="br.com.caelum.estoque"/>
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
<tx:advice id="txAdvice" transaction-manager="txnManager">
<tx:attributes>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="metodosProdutosController"
expression="execution(* br.com.caelum.estoque)"/>
</aop:config>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<tx:annotation-driven/>
e bd-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
destroy-method="destroy">
<property name="hibernateProperties">
<props>
<prop key="hibernate.connection.url">jdbc:mysql://localhost:3306/fj27</prop>
<prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>
<prop key="hibernate.connection.username">root</prop>
<prop key="hibernate.connection.password">microsoft</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>br.com.caelum.estoque.model.Produto</value>
</list>
</property>
</bean>
produtoController.java
package br.com.caelum.estoque;
import org.springframework.beans.factory.annotation.Autowired;
@Controller
@RequestMapping(value="/produtos")
public class ProdutoController {
@Autowired
private ProdutoDAO produtoDAO;
@RequestMapping(value="/listar", method=RequestMethod.GET)
public ModelAndView listar(){
ModelAndView modelAndView = new ModelAndView("produtos/lista");
modelAndView.addObject(produtoDAO.listar());
return modelAndView;
}
@RequestMapping(value="/mostrar/{id}", method=RequestMethod.GET)
public ModelAndView mostrar(@PathVariable long id){
ModelAndView modelAndView = new ModelAndView("produtos/mostrar");
modelAndView.addObject(produtoDAO.buscarPorId(id));
return modelAndView;
}
@RequestMapping(value="/form", method=RequestMethod.GET)
public String form(){
return "produtos/form";
}
@RequestMapping(value="/salvar", method=RequestMethod.POST)
public String salvar(Produto produto){
produtoDAO.salvar(produto);
return "redirect:/produtos/listar.html";
}
public ModelAndView mostrar(@PathVariable Long id){
ModelAndView modelAndView = new ModelAndView("produtos/mostrar");
modelAndView.addObject(produtoDAO.buscarPorId(id));
return modelAndView;
}
@RequestMapping(value="/alterar", method=RequestMethod.POST)
public String alterar(Produto produto){
produtoDAO.alterar(produto);
return "redirect:/produtos/listar.html";
}
@RequestMapping(value="/editar", method=RequestMethod.GET)
public ModelAndView editar(Long id){
Produto produto = produtoDAO.buscarPorId(id);
ModelAndView modelAndView = new ModelAndView("produtos/editar");
modelAndView.addObject(produto);
return modelAndView;
}
@RequestMapping(value="/apagar")
public void apagar(){
}
}
ProdutoHibernateDAO.java
package br.com.caelum.estoque.dao;
import java.util.List;
public class ProdutoHibernateDAO implements ProdutoDAO {
private final SessionFactory sessionFactory;
@Autowired
public ProdutoHibernateDAO(SessionFactory factory){
this.sessionFactory = factory;
}
@Override
public void salvar(Produto produto) {
sessionFactory.getCurrentSession().save(produto);
}
@Override
public void alterar(Produto produto) {
sessionFactory.getCurrentSession().update(produto);
}
@SuppressWarnings("unchecked")
@Override
public List<Produto> listar() {
List<Produto> produtos = sessionFactory.getCurrentSession().createQuery("from Produto").list();
return produtos;
}
@Override
public Produto buscarPorId(Long id) {
return (Produto) sessionFactory.getCurrentSession().get(Produto.class, id);
}
}
ProdutoMemoriaDAO.java
package br.com.caelum.estoque.dao;
import java.util.ArrayList;
@Repository
@Transactional
public class ProdutoMemoriaDAO implements ProdutoDAO {
private List<Produto> produtos = new ArrayList<Produto>();
public ProdutoMemoriaDAO(){
Produto produto1 = new Produto();
produto1.setDescricao("Mac Book");
produto1.setQuantidade(1);
produtos.add(produto1);
Produto produto2 = new Produto();
produto2.setDescricao("pen Drive");
produto2.setQuantidade(10);
produtos.add(produto2);
}
@Override
public void alterar(Produto produto) {
}
@Override
public Produto buscarPorId(Long id) {
return produtos.get(id.intValue()-1);
}
@Override
public List<Produto> listar() {
return produtos;
}
@Override
public void salvar(Produto produto) {
produtos.add(produto);
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
estoque
Spring MVC Dispatcher Servlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
/WEB-INF/spring/-config.xml
1
Spring MVC Dispatcher Servlet
.html
index.jsp
Oi eu estou com o seguinte problema reportado
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Servlet.init() for servlet Spring MVC Dispatcher Servlet threw exception
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Unknown Source)
root cause
java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException
java.lang.Class.getDeclaredMethods0(Native Method)
java.lang.Class.privateGetDeclaredMethods(Unknown Source)
java.lang.Class.getDeclaredMethods(Unknown Source)
org.springframework.core.type.StandardAnnotationMetadata.hasAnnotatedMethods(StandardAnnotationMetadata.java:136)
org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.checkConfigurationClassCandidate(ConfigurationClassBeanDefinitionReader.java:320)
org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:157)
org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:132)
org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:584)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:405)
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:443)
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:459)
org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:340)
org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:307)
org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
javax.servlet.GenericServlet.init(GenericServlet.java:212)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Unknown Source)
root cause
java.lang.ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
java.lang.Class.getDeclaredMethods0(Native Method)
java.lang.Class.privateGetDeclaredMethods(Unknown Source)
java.lang.Class.getDeclaredMethods(Unknown Source)
org.springframework.core.type.StandardAnnotationMetadata.hasAnnotatedMethods(StandardAnnotationMetadata.java:136)
org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.checkConfigurationClassCandidate(ConfigurationClassBeanDefinitionReader.java:320)
org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:157)
org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:132)
org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:584)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:405)
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:443)
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:459)
org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:340)
org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:307)
org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
javax.servlet.GenericServlet.init(GenericServlet.java:212)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Unknown Source)