Java 获取错误“;org.springframework.beans.factory.BeanCreationException:创建名为';家庭控制器'&引用;

Java 获取错误“;org.springframework.beans.factory.BeanCreationException:创建名为';家庭控制器'&引用;,java,spring-mvc,Java,Spring Mvc,我正在spring工具套件中创建spring mvc项目,同时使用hibernate,详细信息如下: HomeController.java package com.FruitStore.fruit; import java.util.Locale; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; impo

我正在spring工具套件中创建spring mvc项目,同时使用hibernate,详细信息如下:

HomeController.java
package com.FruitStore.fruit;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.Fruit.Service.ServiceUser;
import com.FruitStore.Vo.VoUser;

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {

    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
    @Autowired
    ServiceUser serviceUser;

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {
        logger.info("Welcome home! The client locale is {}.", locale);
        return "body";
    }
    @RequestMapping(value = "/signup", method = RequestMethod.GET)
    public String signup(Model model) {

        VoUser voUser=new VoUser();
        model.addAttribute("user", voUser);
        return "signup";
    }

    @RequestMapping(value = "/save", method = RequestMethod.POST)
    public String save(@ModelAttribute("user")VoUser voUser) {
        System.out.println(serviceUser);
        serviceUser.save(voUser);
        return "new";
    }
}
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-3.1.xsd">

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

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

    <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
    <resources mapping="/resources/**" location="/resources/" />

    <!-- 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>

    <context:component-scan base-package="com.FruitStore" />
    <context:annotation-config />


</beans:beans>
    <?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:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">


    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName"  value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/TEST"></property>
        <property name="username" value="root"></property>
        <property name="password" value=""></property>
    </bean>

    <bean id="mysessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource"><ref bean="dataSource" /></property>

        <property name="mappingResources">
        <list>
        <value>user.hbm.xml</value>
        </list>
        </property>

        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.hbm2ddl.auto">create</prop>
                <prop key="hibernate.show_sql">true</prop>

            </props>
        </property>
    </bean>

    <bean id="d" class="com.FruitStore.hibernate.DaoUserImpl">
    <property name="sessionFactory" ref="mysessionFactory"></property>
    </bean> 


    </beans>
ServiceUserImpl.java

package com.Fruit.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.FruitStore.Vo.VoUser;
import com.FruitStore.hibernate.DaoUser;
import com.FruitStore.hibernate.User;


@Service
public class ServiceUserImpl implements ServiceUser{

    @Autowired
    private DaoUser daoUser;

    @Override
    public void save(User user) {
        daoUser.save(user);
    }

    @Override
    public void update(User user) {
        daoUser.update(user);
    }

    @Override
    public void delete(User user) {
        daoUser.delete(user);
    }

    @Override
    public void save(VoUser user) {
        daoUser.save(user);

    }

}
package com.FruitStore.hibernate;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Repository;

import com.FruitStore.Vo.VoUser;

@Repository("DaoUser")
public class DaoUserImpl implements DaoUser {

    HibernateTemplate template;
    public void setSessionFactory(SessionFactory session)
    {
        template=new HibernateTemplate(session);
    }
    @Override
    public void save(User user) {
            template.save(user);
    }

    @Override
    public void update(User user) {
        template.update(user);      
    }

    @Override
    public void delete(User user) {
        template.delete(user);      
    }

    @Override
    public void save(VoUser vouser)
    {
       User user=new User();
       user.setUsername(vouser.getUsername());
       user.setEmail(vouser.getAddress());
       user.setPassword(vouser.getPassword());
       user.setAddress(vouser.getAddress()+vouser.getCountry());
       this.save(user);

    }
}
DaoUser.java

package com.FruitStore.hibernate;
import com.FruitStore.Vo.VoUser;

public interface DaoUser {
    void save(User user);
    void update(User user);
    void delete(User user);
    void save(VoUser user);

}
DaoUserImpl.java

package com.Fruit.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.FruitStore.Vo.VoUser;
import com.FruitStore.hibernate.DaoUser;
import com.FruitStore.hibernate.User;


@Service
public class ServiceUserImpl implements ServiceUser{

    @Autowired
    private DaoUser daoUser;

    @Override
    public void save(User user) {
        daoUser.save(user);
    }

    @Override
    public void update(User user) {
        daoUser.update(user);
    }

    @Override
    public void delete(User user) {
        daoUser.delete(user);
    }

    @Override
    public void save(VoUser user) {
        daoUser.save(user);

    }

}
package com.FruitStore.hibernate;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Repository;

import com.FruitStore.Vo.VoUser;

@Repository("DaoUser")
public class DaoUserImpl implements DaoUser {

    HibernateTemplate template;
    public void setSessionFactory(SessionFactory session)
    {
        template=new HibernateTemplate(session);
    }
    @Override
    public void save(User user) {
            template.save(user);
    }

    @Override
    public void update(User user) {
        template.update(user);      
    }

    @Override
    public void delete(User user) {
        template.delete(user);      
    }

    @Override
    public void save(VoUser vouser)
    {
       User user=new User();
       user.setUsername(vouser.getUsername());
       user.setEmail(vouser.getAddress());
       user.setPassword(vouser.getPassword());
       user.setAddress(vouser.getAddress()+vouser.getCountry());
       this.save(user);

    }
}
pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.FruitStore</groupId>
    <artifactId>fruit</artifactId>
    <name>FruitStore</name>
    <packaging>war</packaging>
    <version>1.0.0-BUILD-SNAPSHOT</version>
    <properties>
        <java-version>1.6</java-version>
        <org.springframework-version>3.1.1.RELEASE</org.springframework-version>
        <org.aspectj-version>1.6.10</org.aspectj-version>
        <org.slf4j-version>1.6.6</org.slf4j-version>
    </properties>
    <dependencies>
        <!-- Spring -->
        <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>3.2.5.RELEASE</version>
</dependency>            
        <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>3.2.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>3.2.5.RELEASE</version>
</dependency>

        <!-- AspectJ -->
        <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>3.2.5.RELEASE</version>
</dependency>


        <!-- Logging -->
        <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-jdk14</artifactId>
    <version>1.7.5</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>3.2.5.RELEASE</version>
</dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>${org.slf4j-version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.5</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.9</version>
       </dependency>
       <!-- Hibernate framework -->
    <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>4.2.7.Final</version>
</dependency>



    <dependency>
        <groupId>dom4j</groupId>
        <artifactId>dom4j</artifactId>
        <version>1.6.1</version>
    </dependency>
    <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.2.1</version>
    </dependency>

    <dependency>
        <groupId>antlr</groupId>
        <artifactId>antlr</artifactId>
        <version>2.7.7</version>
    </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.15</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.mail</groupId>
                    <artifactId>mail</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.jms</groupId>
                    <artifactId>jms</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.sun.jdmk</groupId>
                    <artifactId>jmxtools</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.sun.jmx</groupId>
                    <artifactId>jmxri</artifactId>
                </exclusion>
            </exclusions>
            <scope>runtime</scope>
        </dependency>

        <!-- @Inject -->
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>

        <!-- Servlet -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <!-- Test -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.7</version>
            <scope>test</scope>
        </dependency>        
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-eclipse-plugin</artifactId>
                <version>2.9</version>
                <configuration>
                    <additionalProjectnatures>
                        <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
                    </additionalProjectnatures>
                    <additionalBuildcommands>
                        <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
                    </additionalBuildcommands>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>true</downloadJavadocs>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <compilerArgument>-Xlint:all</compilerArgument>
                    <showWarnings>true</showWarnings>
                    <showDeprecation>true</showDeprecation>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <mainClass>org.test.int1.Main</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

4.0.0
水果店
水果
水果店
战争
1.0.0-BUILD-SNAPSHOT
1.6
3.1.1.1发布
1.6.10
1.6.6
org.springframework
spring上下文
3.2.5.1发布
org.springframework
SpringWebMVC
3.2.5.1发布
org.springframework
春豆
3.2.5.1发布
org.springframework
SpringWebMVC
3.2.5.1发布
org.slf4j
slf4j-jdk14
1.7.5
org.springframework
春季甲虫
3.2.5.1发布
org.slf4j
jcl-over-slf4j
${org.slf4j版本}
运行时
org.slf4j
slf4j-log4j12
1.7.5
运行时
mysql
mysql连接器java
5.1.9
org.hibernate
冬眠核心
4.2.7.最终版本
dom4j
dom4j
1.6.1
公地收藏
公地收藏
3.2.1
antlr
antlr
2.7.7
log4j
log4j
1.2.15
javax.mail
邮件
javax.jms
jms
com.sun.jdmk
jmxtools
com.sun.jmx
jmxri
运行时
javax.inject
javax.inject
1.
javax.servlet
servlet api
2.5
假如
javax.servlet.jsp
jsp api
2.1
假如
javax.servlet
jstl
1.2
朱尼特
朱尼特
4.7
测试
maven eclipse插件
2.9
org.springframework.ide.eclipse.core.springnature
org.springframework.ide.eclipse.core.springbuilder
真的
真的
org.apache.maven.plugins
maven编译器插件
2.5.1
1.6
1.6
-Xlint:全部
真的
真的
org.codehaus.mojo
execmaven插件
1.2.1
org.test.int1.Main
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">

    <!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/root-context.xml</param-value>
    </context-param>

    <!-- Creates the Spring Container shared by all Servlets and Filters -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

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

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

</web-app>

上下文配置位置
/WEB-INF/spring/root-context.xml
org.springframework.web.context.ContextLoaderListener
appServlet
org.springframework.web.servlet.DispatcherServlet
上下文配置位置
/WEB-INF/spring/appServlet/servlet-context.xml
1.
appServlet
/

但是,当我尝试运行该项目时,我得到了错误“org.springframework.beans.factory.BeanCreationException:创建名为“homeController”的bean时出错”,但是如果我没有在homeController.java中使用@Autowired注释,那么我得到的daoUser值为Null。你能帮我解决这个问题吗。

在你的
根上下文.xml
/
applicationContext.xml
中,你需要一个
来扫描除了控制器以外的所有东西。您有一个,但其中不包括您在其中定义服务的包

添加以下内容

<context:component-scan base-package="com.FruitStore,com.fruit">
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
<context:component-scan>
同时删除已由
暗示的


关于您的
DaoUserImpl
的最后一个注意事项是,请不要使用自hibernate 3.0.1(大约在2006年)发布以来就应该被视为不推荐使用的
HibernateTemplate
。直接使用
SessionFactory
并使用
getCurrentSession()
方法。有关更多信息,请参见

root context.xml
/
applicationContext.xml
中,您需要一个
来扫描除了控制器之外的所有内容。您有一个,但其中不包括您在其中定义服务的包

添加以下内容

<context:component-scan base-package="com.FruitStore,com.fruit">
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
<context:component-scan>
同时删除已由
暗示的


关于您的
DaoUserImpl
的最后一个注意事项是,请不要使用自hibernate 3.0.1(大约在2006年)发布以来就应该被视为不推荐使用的
HibernateTemplate
。直接使用
SessionFactory
并使用
getCurrentSession()
方法。有关更多信息,请参见

删除整个.m2(maven目录)并重新安装所有依赖项

删除整个.m2(maven目录)并重新安装所有依赖项

更一致的堆栈跟踪会有帮助更一致的堆栈跟踪会有帮助我按照您的建议更改代码,但我收到以下错误Dec 06,2013年3:13:17 PM org.springframework.web.servlet.DispatcherServlet noHandlerFound警告:在名为“appServlet”的DispatcherServlet中找不到URI为[/fruit/]的HTTP请求的映射更新您的任务