2013-05-08 75 views
0

我想自動裝配在這個項目咖啡豆,但一直得到錯誤彈簧自動裝配誤差預計將有至少1個Bean上有資格作爲自動裝配候選人,這種依賴性

預計將有至少1 Bean上有資格作爲自動裝配候選人,這依賴。依賴註解:{@ org.springframework.beans.factory.annotation.Autowired(必需=真)」

的Java:

@Controller 
@RequestMapping(value="/Home") 
public class HomeController { 

@Autowired 
private Personrepo personRepo; 

@RequestMapping(method=RequestMethod.GET) 
public String showForm(ModelMap model){ 
    List<Person> persons = personRepo.getAll(); 
    model.addAttribute("persons", persons); 
    Person person = new Person(); 
    model.addAttribute("person", person); 
    return "home"; 
} 


@RequestMapping(value="/add", method=RequestMethod.POST) 
public ModelAndView add(@ModelAttribute(value="person") Person person,BindingResult result){ 

    ModelAndView mv = new ModelAndView("home"); 
    if(!result.hasErrors()){ 
     personRepo.add(person); 
     person = new Person(); 
     mv.addObject("person", person); 
    } 
    mv.addObject("persons", personRepo.getAll()); 
    return mv; 
} 


@RequestMapping(value="/edit", method=RequestMethod.POST) 
public ModelAndView edit(@ModelAttribute(value="person") Person person,BindingResult result){ 

    ModelAndView mv = new ModelAndView("home"); 
    if(!result.hasErrors()){ 
     personRepo.edit(person); 
     person = new Person(); 

     mv.addObject("person", person); 
    } 
    mv.addObject("persons", personRepo.getAll()); 
    return mv; 
} 
@RequestMapping(value="/delete", method=RequestMethod.POST) 
public ModelAndView update(@ModelAttribute(value="person") Person person,BindingResult result){ 
    ModelAndView mv = new ModelAndView("home"); 
    if(!result.hasErrors()){ 
    personRepo.delete(person.getId()); 

     //personRepo.delete(person); 
     person = new Person(); 

     mv.addObject("person", person); 
    } 
    mv.addObject("persons", personRepo.getAll()); 
    return mv; 
} 


} 

package com.app.domain; 

import java.io.Serializable; 

/** 
* A simple POJO representing a Person 
*/ 
public class Person implements Serializable { 

private static final long serialVersionUID = -5527566248002296042L; 

private String id; 
private String firstName; 
private String lastName; 
private Double money; 

public String getId() { 
    return id; 
} 

public void setId(String id) { 
    this.id = id; 
} 

public String getFirstName() { 
    return firstName; 
} 

public void setFirstName(String firstName) { 
    this.firstName = firstName; 
} 

public String getLastName() { 
    return lastName; 
} 

public void setLastName(String lastName) { 
    this.lastName = lastName; 
} 

public Double getMoney() { 
    return money; 
} 

public void setMoney(Double money) { 
    this.money = money; 
} 

} 

PersonRepo

package com.app.r; 

import java.util.List; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Service; 

import com.app.service.PersonService; 
import com.app.domain.Person; 


public interface Personrepo { 

public void add(Person person); 
public void edit(Person person); 
public void delete(String id); 
public List<Person> getAll(); 
} 

PersonService

package com.app.service; 

import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

import javax.annotation.Resource; 
import javax.sql.DataSource; 

import org.apache.log4j.Logger; 
import com.app.domain.Person; 


import org.springframework.jdbc.core.RowMapper; 
import org.springframework.jdbc.core.JdbcTemplate; 
import org.springframework.stereotype.Component; 
import org.springframework.stereotype.Service; 
import org.springframework.transaction.annotation.Transactional; 



@Component 
@Transactional 
public class PersonService { 

protected static Logger logger = Logger.getLogger("service"); 

private JdbcTemplate jdbcTemplate; 

@Resource(name="dataSource") 
public void setDataSource(DataSource dataSource) { 
    this.jdbcTemplate = new JdbcTemplate(dataSource); 
} 

/** 
* Retrieves all persons 
* 
* @return a list of persons 
*/ 
public List<Person> getAll() { 
    logger.debug("Retrieving all persons"); 

    // Prepare our SQL statement 
    String sql = "select id, first_name, last_name, money from person"; 

    // Maps a SQL result to a Java object 
    RowMapper<Person> mapper = new RowMapper<Person>() { 
     public Person mapRow(ResultSet rs, int rowNum) throws SQLException { 
      Person person = new Person(); 
      person.setId(rs.getString("id")); 
      person.setFirstName(rs.getString("first_name")); 
      person.setLastName(rs.getString("last_name")); 
      person.setMoney(rs.getDouble("money")); 
      return person; 
     } 
    }; 

    // Retrieve all 
    return jdbcTemplate.query(sql, mapper); 
} 

/** 
* Adds a new person 
* 
* @param firstName the first name of the person 
* @param lastName the last name of the person 
* @param money the money of the person 
*/ 
public void add(String firstName, String lastName, Double money) { 
    logger.debug("Adding new person"); 

    // Prepare our SQL statement using Named Parameters style 
    String sql = "insert into person(first_name, last_name, money) values " + 
      "(:firstName, :lastName, :money)"; 

    // Assign values to parameters 
    Map<String, Object> parameters = new HashMap<String, Object>(); 
    parameters.put("firstName", firstName); 
    parameters.put("lastName", lastName); 
    parameters.put("money", money); 

    // Save 
    jdbcTemplate.update(sql, parameters); 
} 





/** 
* Deletes an existing person 
* @param id the id of the existing person 
*/ 
public void delete(String id) { 
    logger.debug("Deleting existing person"); 

    // Prepare our SQL statement using Unnamed Parameters style 
    String sql = "delete from person where id = ?"; 

    // Assign values to parameters 
    Object[] parameters = new Object[] {id}; 

    // Delete 
    jdbcTemplate.update(sql, parameters); 
} 

/** 
* Edits an existing person 
* @param id the id of the existing person 
* @param firstName the first name of the existing person 
* @param lastName the last name of the existing person 
* @param money the money of the existing person 
*/ 
public void edit(String id, String firstName, String lastName, Double money) { 
    logger.debug("Editing existing person"); 

    // Prepare our SQL statement 
    String sql = "update person set first_name = :firstName, " + 
      "last_name = :lastName, money = :money where id = :id"; 

    // Assign values to parameters 
    Map<String, Object> parameters = new HashMap<String, Object>(); 
    parameters.put("id", id); 
    parameters.put("firstName", firstName); 
    parameters.put("lastName", lastName); 
    parameters.put("money", money); 

    // Edit 
    jdbcTemplate.update(sql, parameters); 

} 
} 

Servlet的context.xml中

   <?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/mvc" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:beans="http://www.springframework.org/schema/beans" 
xmlns:context="http://www.springframework.org/schema/context" 
xsi:schemaLocation="http://www.springframework.org/schema/mvc  http://www.springframework.org/schema/mvc/spring-mvc.xsd 
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 




<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --> 





<!-- Enables the Spring MVC @Controller programming model --> 
<annotation-driven /> 


<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-  INF/views directory --> 
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <beans:property name="prefix" value="/WEB-INF/views/" /> 
    <beans:property name="suffix" value=".jsp" /> 
</beans:bean> 

<!-- Activates various annotations to be detected in bean classes --> 
<context:annotation-config /> 




<!-- Scans the classpath for annotated components that will be auto-registered as Spring beans. 
For example @Controller and @Service. Make sure to set the correct base-package--> 





</beans:beans> 

Web.xml中

    <?xml version="1.0" encoding="UTF-8"?> 
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web- app_2_5.xsd"> 



<!-- Creates the Spring Container shared by all Servlets and Filters --> 


<!-- Processes application requests --> 
<servlet> 
    <servlet-name>servlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/servlet-context.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

org.springframework.web.context.ContextLoaderListener

<servlet-mapping> 
    <servlet-name>servlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

錯誤控制檯

INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'servlet': initialization started 
INFO : org.springframework.web.context.support.XmlWebApplicationContext - Refreshing WebApplicationContext for namespace 'servlet-servlet': startup date [Wed May 08 15:59:09 BST 2013]; root of context hierarchy 
INFO : org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/servlet-context.xml] 
INFO : org.springframework.context.annotation.ClassPathBeanDefinitionScanner - JSR-330 'javax.inject.Named' annotation found and supported for component scanning 
INFO : org.springframework.context.annotation.ClassPathBeanDefinitionScanner - JSR-330 'javax.inject.Named' annotation found and supported for component scanning 
INFO : org.springframework.context.annotation.ClassPathBeanDefinitionScanner - JSR-330 'javax.inject.Named' annotation found and supported for component scanning 
INFO : org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring 
INFO : org.springframework.beans.factory.support.DefaultListableBeanFactory - Pre-instantiating singletons in org.s[email protected]426b51d8: defining beans [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0,org.springframework.format.support.FormattingConversionServiceFactoryBean#0,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#0,org.springframework.web.servlet.handler.MappedInterceptor#0,org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver#0,org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver#0,org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver#0,org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,org.springframework.web.servlet.view.InternalResourceViewResolver#0,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,homeController,personService,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchy 
INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/Home/add],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.ModelAndView com.app.a.HomeController.add(com.app.domain.Person,org.springframework.validation.BindingResult) 
INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/Home/delete],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.ModelAndView com.app.a.HomeController.update(com.app.domain.Person,org.springframework.validation.BindingResult) 
INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/Home],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.app.a.HomeController.showForm(org.springframework.ui.ModelMap) 
INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/Home/edit],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.ModelAndView com.app.a.HomeController.edit(com.app.domain.Person,org.springframework.validation.BindingResult) 
INFO : org.springframework.beans.factory.support.DefaultListableBeanFactory - Destroying singletons in org.s[email protected]426b51d8: defining beans [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0,org.springframework.format.support.FormattingConversionServiceFactoryBean#0,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#0,org.springframework.web.servlet.handler.MappedInterceptor#0,org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver#0,org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver#0,org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver#0,org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,org.springframework.web.servlet.view.InternalResourceViewResolver#0,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,homeController,personService,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchy 
ERROR: org.springframework.web.servlet.DispatcherServlet - Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'homeController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.app.r.Personrepo com.app.a.HomeController.personRepo; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.app.r.Personrepo] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:287) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588) 
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645) 
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508) 
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449) 
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133) 
    at javax.servlet.GenericServlet.init(GenericServlet.java:160) 
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5027) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.app.r.Personrepo com.app.a.HomeController.personRepo; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.app.r.Personrepo] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:506) 
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:284) 
    ... 30 more 
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.app.r.Personrepo] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:924) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:793) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:707) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:478) 
    ... 32 more 
May 8, 2013 3:59:10 PM org.apache.catalina.core.ApplicationContext log 
SEVERE: StandardWrapper.Throwable 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'homeController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.app.r.Personrepo com.app.a.HomeController.personRepo; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.app.r.Personrepo] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 

PersonService類具有執行更新

package com.app.service; 

@Component 
public class PersonService implements Personrepo { 

protected static Logger logger = Logger.getLogger("service"); 

private JdbcTemplate jdbcTemplate; 

@Resource(name="dataSource") 
public void setDataSource(DataSource dataSource) { 
    this.jdbcTemplate = new JdbcTemplate(dataSource); 
} 

/** 
* Retrieves all persons 
* 
* @return a list of persons 
*/ 
public List<Person> getAll() { 
    logger.debug("Retrieving all persons"); 



    // Prepare our SQL statement 
    String sql = "select id, first_name, last_name, money from person"; 



    // Maps a SQL result to a Java object 
    RowMapper<Person> mapper = new RowMapper<Person>() { 
     public Person mapRow(ResultSet rs, int rowNum) throws SQLException { 
      Person person = new Person(); 
      person.setId(rs.getString("id")); 
      person.setFirstName(rs.getString("first_name")); 
      person.setLastName(rs.getString("last_name")); 
      person.setMoney(rs.getDouble("money")); 
      return person; 
     } 
    }; 

    // Retrieve all 
    return jdbcTemplate.query(sql, mapper); 
} 

/** 
* Adds a new person 
* 
* @param firstName the first name of the person 
* @param lastName the last name of the person 
* @param money the money of the person 
*/ 
public void add(String firstName, String lastName, Double money) { 
    logger.debug("Adding new person"); 

    // Prepare our SQL statement using Named Parameters style 
    String sql = "insert into person(first_name, last_name, money) values " + 
      "(:firstName, :lastName, :money)"; 

    // Assign values to parameters 
    Map<String, Object> parameters = new HashMap<String, Object>(); 
    parameters.put("firstName", firstName); 
    parameters.put("lastName", lastName); 
    parameters.put("money", money); 

    // Save 
    jdbcTemplate.update(sql, parameters); 
} 





/** 
* Deletes an existing person 
* @param id the id of the existing person 
*/ 
public void delete(String id) { 
    logger.debug("Deleting existing person"); 

    // Prepare our SQL statement using Unnamed Parameters style 
    String sql = "delete from person where id = ?"; 

    // Assign values to parameters 
    Object[] parameters = new Object[] {id}; 

    // Delete 
    jdbcTemplate.update(sql, parameters); 
} 

/** 
* Edits an existing person 
* @param id the id of the existing person 
* @param firstName the first name of the existing person 
* @param lastName the last name of the existing person 
* @param money the money of the existing person 
*/ 
public void edit(String id, String firstName, String lastName, Double money) { 
    logger.debug("Editing existing person"); 

    // Prepare our SQL statement 
    String sql = "update person set first_name = :firstName, " + 
      "last_name = :lastName, money = :money where id = :id"; 

    // Assign values to parameters 
    Map<String, Object> parameters = new HashMap<String, Object>(); 
    parameters.put("id", id); 
    parameters.put("firstName", firstName); 
    parameters.put("lastName", lastName); 
    parameters.put("money", money); 

    // Edit 
    jdbcTemplate.update(sql, parameters); 

} 



@Override 
public void add(Person person) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void edit(Person person) { 
    // TODO Auto-generated method stub 

} 




} 

我加入這個

Appilcation context.xml 




      <?xml version="1.0" encoding="UTF-8"?> 
    <beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:mvc="http://www.springframework.org/schema/mvc" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.0.xsd 
     http://www.springframework.org/schema/mvc 
     http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 

<!-- Activates various annotations to be detected in bean classes --> 
<context:annotation-config /> 

<!-- Scans the classpath for annotated components that will be auto-registered as Spring beans. 
For example @Controller and @Service. Make sure to set the correct base-package--> 


<context:component-scan base-package="com.app.a" /> 



<!-- Configures the annotation-driven Spring MVC Controller programming model. 
Note that, with Spring 3.0, this tag works in Servlet MVC only! --> 
<mvc:annotation-driven /> 

<import resource="jdbc-context.xml" /> 

現在我沒有得到數據源豆錯誤,但只錯誤或者找不到autowire bean。 當我試圖添加 com.app.service.PersonService com.app.r.Personrepo。在應用程序的context.xml

它給我的HTTP錯誤未找到URI

+2

你沒有'Personrepo'實施。 – 2013-05-08 15:30:43

+0

我試過了,但仍然收到相同的錯誤。 – amzi 2013-05-08 16:16:17

+1

試過了什麼?您沒有向我們展示實現'@Repository'註釋的'Personrepo'的類。 – 2013-05-08 16:19:03

回答

1

花了很多的時間在這!我的錯!後來發現我宣佈註解ServiceComponent的類是抽象類型的。在Springframework上啓用了調試日誌,但沒有收到任何提示。請檢查類是否爲抽象類型。如果應用了基本規則,則不能實例化抽象類。

0

我有同樣的問題。我在以下代碼中正確命名軟件包名稱後解決了這個問題<context:component-scan base-package="com.mysweethome"></context:component-scan>

0

如果您嘗試了所有建議但仍然無效,那麼這裏最後一種方法是刪除服務器中的項目文件例如我正在使用tomcat,然後進入webapps dir和work dir,刪除相應的項目文件。刪除時要謹慎。

我這個解決同樣的問題,所以我正在考慮由項目緩存的原因,即使清除了IDE.Wish的projectserver它可以幫助:)

相關問題