Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 弹簧@自动接线不工作(不总是)_Spring_Spring Mvc_Annotations_Autowired - Fatal编程技术网

Spring 弹簧@自动接线不工作(不总是)

Spring 弹簧@自动接线不工作(不总是),spring,spring-mvc,annotations,autowired,Spring,Spring Mvc,Annotations,Autowired,我的一项服务中的autowire批注有一些问题。我花了很多时间寻找解决方案,但我不知道我做错了什么。我的应用程序看起来像这样 这是我的控制器: package control.peso.controller; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereot

我的一项服务中的autowire批注有一些问题。我花了很多时间寻找解决方案,但我不知道我做错了什么。我的应用程序看起来像这样

这是我的控制器:

package control.peso.controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import control.peso.data.ResumenMedicionPeso;
import control.peso.service.HomeService;

@Controller
public class HomeController {

    @Autowired
    private HomeService homeService; //NOPMD

    @RequestMapping(value = "json/resumen_mediciones.action")
    @ResponseBody
    public final ResumenMedicionPeso
            dataJsonPeso(final HttpServletRequest req) {
        final ResumenMedicionPeso peso = homeService.getResumenMediciones();

        return peso;
    }
}
我的服务层:

package control.peso.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import control.peso.dao.PesoDAO;
import control.peso.data.ResumenMedicionPeso;

@Service
@Transactional(readOnly = true)
public class HomeService {

    @Autowired
    private PesoDAO pesoDAO; //NOPMD

    public final ResumenMedicionPeso getResumenMediciones() {
        final ResumenMedicionPeso resumMedicionPeso = new ResumenMedicionPeso();
        resumMedicionPeso.setMaxPeso(pesoDAO.getMaxPeso());
        resumMedicionPeso.setMinPeso(pesoDAO.getMinPeso());
        resumMedicionPeso.setMaxGrasa(pesoDAO.getMaxGrasa());
        resumMedicionPeso.setMinGrasa(pesoDAO.getMinGrasa());
        resumMedicionPeso.setMaxPorcenGrasa(pesoDAO.getMaxPorcenGrasa());
        resumMedicionPeso.setMinPorcenGrasa(pesoDAO.getMinPorcenGrasa());
        resumMedicionPeso.setMaxMusculo(pesoDAO.getMaxMusculo());
        resumMedicionPeso.setMinMusculo(pesoDAO.getMinMusculo());
        resumMedicionPeso.setMaxPorcenMusculo(pesoDAO.getMaxPorcenMusculo());
        resumMedicionPeso.setMinPorcenMusculo(pesoDAO.getMinPorcenMusculo());

        return resumMedicionPeso;
    }
}
我的刀:

package control.peso.dao;

import java.util.List;

import org.hibernate.SessionFactory;

import control.peso.model.MedicionPeso;

public class PesoDAO implements IPesoDAO {

    private SessionFactory sessionFactory;

    public final SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public final void setSessionFactory(
            final SessionFactory pSessionFactory) {
        this.sessionFactory = pSessionFactory;
    }

    @Override
    public final void addPeso(final MedicionPeso peso) {
        getSessionFactory().getCurrentSession().save(peso); //NOPMD
    }

    @Override
    public final void updatePeso(final MedicionPeso peso) {
        getSessionFactory().getCurrentSession().update(peso);  //NOPMD
    }

    @Override
    public final void deletePeso(final Integer idPeso) {
        getSessionFactory().getCurrentSession()
        .delete(new MedicionPeso(idPeso));
    }

    @Override
    public final MedicionPeso getPesoById(final Integer idPeso) {
        @SuppressWarnings("unchecked") //NOPMD
        final List<MedicionPeso> list = getSessionFactory() // NOPMD
                .getCurrentSession()
                        .createQuery("from MedicionPeso where idPeso = ?")
                .setParameter(0, idPeso).list();

        return list.get(0); //NOPMD
    }

    @Override
    public final List<MedicionPeso> getPesos() {
        @SuppressWarnings("unchecked")
        final List<MedicionPeso> list = getSessionFactory() //NOPMD
                .getCurrentSession()
                .createQuery("from MedicionPeso medicionPeso "
                        + "order by medicionPeso.fechaMedicion desc")
                .list();

        return list;
    }

    public final Float getMaxPeso() {
        @SuppressWarnings("unchecked")
        final List<Float> list = getSessionFactory() //NOPMD
                .getCurrentSession()
                .createQuery("select max(peso) from MedicionPeso")
                .list();

        return (Float) list.get(0); //NOPMD
    }

    public final Float getMinPeso() {
        @SuppressWarnings("unchecked")
        final List<Float> list = getSessionFactory() //NOPMD
                .getCurrentSession()
                .createQuery("select min(peso) from MedicionPeso")
                .list();

        return (Float) list.get(0); //NOPMD
    }

    public final Float getMaxGrasa() {
        @SuppressWarnings("unchecked")
        final List<Float> list = getSessionFactory() //NOPMD
                .getCurrentSession()
                .createQuery("select max(pesoGrasa) from MedicionPeso")
                .list();

        return (Float) list.get(0); //NOPMD
    }

    public final Float getMinGrasa() {
        @SuppressWarnings("unchecked")
        final List<Float> list = getSessionFactory() //NOPMD
                .getCurrentSession()
                .createQuery("select min(pesoGrasa) from MedicionPeso")
                .list();

        return (Float) list.get(0); //NOPMD
    }

    public final Float getMaxPorcenGrasa() {
        @SuppressWarnings("unchecked")
        final List<Float> list = getSessionFactory() //NOPMD
                .getCurrentSession()
                .createQuery("select max(pesoGrasa) from MedicionPeso")
                .list();

        return (Float) list.get(0); //NOPMD
    }

    public final Float getMinPorcenGrasa() {
        @SuppressWarnings("unchecked")
        final List<Float> list = getSessionFactory() //NOPMD
                .getCurrentSession()
                .createQuery("select min(porcentajeGrasa) from MedicionPeso")
                .list();

        return (Float) list.get(0); //NOPMD
    }

    /**
     * Recupera la medicion de musculo con valor maximo.
     * @return El valor maximo de las mediciones de musculo.
     */
    public final Float getMaxMusculo() {
        @SuppressWarnings("unchecked")
        final List<Float> list = getSessionFactory() //NOPMD
                .getCurrentSession()
                .createQuery("select max(porcentajeGrasa) from MedicionPeso")
                .list();

        return (Float) list.get(0); //NOPMD
    }

    public final Float getMinMusculo() {
        @SuppressWarnings("unchecked")
        final List<Float> list = getSessionFactory() //NOPMD
                .getCurrentSession()
                .createQuery("select min(pesoMusculo) from MedicionPeso")
                .list();

        return (Float) list.get(0); //NOPMD
    }

    public final Float getMaxPorcenMusculo() {
        @SuppressWarnings("unchecked")
        final List<Float> list = getSessionFactory() //NOPMD
                .getCurrentSession()
                .createQuery("select max(porcentajeMusculo) from MedicionPeso")
                .list();

        return (Float) list.get(0); //NOPMD
    }

    public final Float getMinPorcenMusculo() {
        @SuppressWarnings("unchecked")
        final List<Float> list = getSessionFactory() //NOPMD
                .getCurrentSession()
                .createQuery("select max(porcentajeMusculo) from MedicionPeso")
                .list();

        return (Float) list.get(0); //NOPMD
    }

}
package control.peso.dao;
导入java.util.List;
导入org.hibernate.SessionFactory;
进口管制.peso.model.MedicionPeso;
公共类比索道实现了IPesoDAO{
私人会话工厂会话工厂;
公共最终会话工厂getSessionFactory(){
返回工厂;
}
公共最终工厂(
最终会议工厂(会议工厂){
this.sessionFactory=pssessionfactory;
}
@凌驾
公共最终无效附加比索(最终MedicionPeso){
getSessionFactory().getCurrentSession().save(比索);//NOPMD
}
@凌驾
公共最终作废更新peso(最终MedicionPeso){
getSessionFactory().getCurrentSession().update(比索);//NOPMD
}
@凌驾
公共最终无效删除PESO(最终整数idPeso){
getSessionFactory().getCurrentSession()
.删除(新医疗设备采购订单(idPeso));
}
@凌驾
公共最终MedicionPeso getPesoById(最终整数idPeso){
@SuppressWarnings(“未选中”)//NOPMD
最终列表List=getSessionFactory()//NOPMD
.getCurrentSession()
.createQuery(“来自MedicionPeso,其中idPeso=?”)
.setParameter(0,idPeso).list();
返回列表。get(0);//NOPMD
}
@凌驾
公共最终清单getPesos(){
@抑制警告(“未选中”)
最终列表List=getSessionFactory()//NOPMD
.getCurrentSession()
.createQuery(“来自MedicionPeso MedicionPeso”
+“medicionPeso.fechamedical desc命令”)
.list();
退货清单;
}
公共最终浮动getMaxPeso(){
@抑制警告(“未选中”)
最终列表List=getSessionFactory()//NOPMD
.getCurrentSession()
.createQuery(“从MedicionPeso中选择最大值(比索))
.list();
return(Float)list.get(0);//NOPMD
}
公开最终浮动getMinPeso(){
@抑制警告(“未选中”)
最终列表List=getSessionFactory()//NOPMD
.getCurrentSession()
.createQuery(“从MedicionPeso中选择最小值(比索))
.list();
return(Float)list.get(0);//NOPMD
}
公共最终浮动getMaxGrasa(){
@抑制警告(“未选中”)
最终列表List=getSessionFactory()//NOPMD
.getCurrentSession()
.createQuery(“从MedicionPeso中选择max(pesoGrasa))
.list();
return(Float)list.get(0);//NOPMD
}
公开最终浮动getMinGrasa(){
@抑制警告(“未选中”)
最终列表List=getSessionFactory()//NOPMD
.getCurrentSession()
.createQuery(“从MedicionPeso中选择最小值(pesoGrasa))
.list();
return(Float)list.get(0);//NOPMD
}
公共最终浮动GetMaxPorchengrasa(){
@抑制警告(“未选中”)
最终列表List=getSessionFactory()//NOPMD
.getCurrentSession()
.createQuery(“从MedicionPeso中选择max(pesoGrasa))
.list();
return(Float)list.get(0);//NOPMD
}
公共最终浮动GetMinPorchengrasa(){
@抑制警告(“未选中”)
最终列表List=getSessionFactory()//NOPMD
.getCurrentSession()
.createQuery(“从MedicionPeso中选择min(porcentajeGrasa))
.list();
return(Float)list.get(0);//NOPMD
}
/**
*恢复肌肉的力量。
*@return El valor maximo de las mediciones de musculo。
*/
公开最终浮动getMaxMusculo(){
@抑制警告(“未选中”)
最终列表List=getSessionFactory()//NOPMD
.getCurrentSession()
.createQuery(“从MedicionPeso中选择max(porcentajeGrasa))
.list();
return(Float)list.get(0);//NOPMD
}
公开最终浮动getMinMusculo(){
@抑制警告(“未选中”)
最终列表List=getSessionFactory()//NOPMD
.getCurrentSession()
.createQuery(“从MedicionPeso中选择最小值(pesoMusculo))
.list();
return(Float)list.get(0);//NOPMD
}
公共最终浮动GetMaxPorchenMusculo(){
@抑制警告(“未选中”)
最终列表List=getSessionFactory()//NOPMD
.getCurrentSession()
.createQuery(“从MedicionPeso中选择max(porcentajeMusculo))
.list();
return(Float)list.get(0);//NOPMD
}
公共最终浮动GetMinPorchenMusculo(){
@抑制警告(“未选中”)
最终列表List=getSessionFactory()//NOPMD
.getCurrentSession()
.createQuery(“从MedicionPeso中选择max(porcentajeMusculo))
.list();
return(Float)list.get(0);//NOPMD
}
}
我的dao接口:

package control.peso.dao;

import java.util.List;

import control.peso.model.MedicionPeso;

public interface IPesoDAO {

    void addPeso(MedicionPeso peso);

    void updatePeso(MedicionPeso peso);

    void deletePeso(Integer idPeso);

    MedicionPeso getPesoById(Integer idPeso);

    List<MedicionPeso> getPesos();
}
package control.peso.dao;
导入java.util.List;
进口管制.peso.model.MedicionPeso;
公共接口IPesoDAO{
无效附加比索(MedicionPeso比索);
无效更新peso(MedicionPeso比索);
void deletePeso(整数idPeso);
MedicionPeso getPesoById(整数idPeso);
列出getPesos();
}
这是我的dispatcher-servlet.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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
    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
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

    <!--Routes -->
    <mvc:view-controller path="/" view-name="home"/>
    <mvc:view-controller path="/home" view-name="home"/>
    <mvc:view-controller path="/medicion" view-name="medicion_peso"/>

    <!-- Scans the classpath of this application for @Components to deploy as beans -->
    <context:component-scan base-package="control.peso" />

    <!-- Configures the @Controller programming model -->
    <mvc:annotation-driven />

    <!-- misc -->
    <!--
    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>
    -->
    <!-- Tiles Resolver -->
    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass">
            <value>
                org.springframework.web.servlet.view.tiles2.TilesView
            </value>
        </property>
    </bean>
    <bean id="tilesConfigurer"
        class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
        <property name="definitions">
            <list>
                <value>/WEB-INF/tiles.xml</value>
            </list>
        </property>
    </bean>

    <!-- Application Message Bundle -->
    <bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="classpath:messages" />
        <property name="defaultEncoding" value="UTF-8" />
    </bean>

    <!-- JSON Objets Definition -->
    <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
            </list>
        </property>
    </bean>

    <!-- Beans Declaration -->
    <bean id="MedicionPeso" class="control.peso.model.MedicionPeso" />

    <!-- User DAO Declaration -->
    <bean id="PesoDAO" class="control.peso.dao.PesoDAO">
        <property name="sessionFactory" ref="SessionFactory" />
    </bean>

    <!-- Data Source Declaration -->
    <bean id="DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
        destroy-method="close">
        <property name="driverClass" value="com.mysql.jdbc.Driver" />
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/juan" />
        <property name="user" value="root" />
        <property name="password" value="" />
        <property name="maxPoolSize" value="10" />
        <property name="maxStatements" value="0" />
        <property name="minPoolSize" value="5" />
    </bean>

    <!-- Session Factory Declaration -->
    <bean id="SessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="DataSource" />
        <property name="annotatedClasses">
            <list>
                <value>control.peso.model.MedicionPeso</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
    </bean>

    <!-- Enable the configuration of transactional behavior based on annotations -->
    <tx:annotation-driven transaction-manager="txManager" />

    <!-- Transaction Manager is defined -->
    <bean id="txManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="SessionFactory" />
    </bean>

</beans>

org.springframework.web.servlet.view.tiles2.TilesView
/WEB-INF/tiles.xml
<!-- User DAO Declaration -->
<bean id="PesoDAO" class="control.peso.dao.PesoDAO">
    <property name="sessionFactory" ref="SessionFactory" />
</bean>
@Service
@Transactional(readOnly = true)
public class HomeService {

    @Autowired
    private PesoDAO pesoDAO; //NOPMD

}
@Component("pesoDao")
public class PesoDAO implements IPesoDAO {

    private SessionFactory sessionFactory;
}

@Service("homeService")
@Transactional(readOnly = true)
public class HomeService {

    @Autowired
    @Qualifier("pesoDao")
    private PesoDAO pesoDAO; //NOPMD
}