zoukankan      html  css  js  c++  java
  • Could not resolve placeholder 'CUST_INDUSTORY' in string value "${CUST_INDUSTORY}"

    问题描述

    项目中的资源文件中写了个properties文件,内容这样的

    CUST_FROM=002
    CUST_INDUSTORY=001
    CUST_LEVEL=006

    在springmvc配置文件中加载设这样的

    <context:property-placeholder location="classpath:resources.properties"/>
    <context:component-scan base-package="com.crm.controller"/>

    在spring中配置了注解扫描是这样

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

    最后在代码中调用

    ackage com.crm.controller;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import com.crm.domain.BaseDict;
    import com.crm.service.BaseDictService;
    
    @Controller
    public class BaseDictController {
    
        @Autowired
        private BaseDictService baseDictService;
    
        **@Value("${CUST_INDUSTORY}")**
        private String CUST_INDUSTORY;
    
        **@Value("${CUST_LEVEL}")**
        private String CUST_LEVEL;
    
        **@Value("${CUST_FROM}")**
        private String CUST_FROM;
    
        @RequestMapping("basedict_list")
        public String basedictList(Model model){
            List<BaseDict> listFrom = baseDictService.queryBasedict(CUST_FROM);
            List<BaseDict> listIndustory = baseDictService.queryBasedict(CUST_INDUSTORY);
            List<BaseDict> listLevel = baseDictService.queryBasedict(CUST_LEVEL);
            model.addAttribute("fromType", listFrom);
            model.addAttribute("industryType", listIndustory);
            model.addAttribute("levelType", listLevel);
    
            return "list";
        }
    
    }

    问题分析和解决方案

    出现这个错误其实说一个spring父子容器的问题 
    我在spring中配置的注解扫描,会将带注解的所有的对象进行依赖注入,并完成实例化,我在spring容器中并没有加载我自定义的properties文件,所以spring在依赖注入时在容器中找不到这些属性值,从而spring容器初始化失败。而我的properties文件是在springmvc的配置文件加载的,在springmvc的容器中会存在这些properties属性值,在springmvc中配置了我的控制器controller的扫描,那么该容器实例化我们的控制器会将属性注入到对象中。

    怎样解决呢,就是在spring配置中不用让它去实例化我们的cotroller,只让springmvc实例化就可以了。 
    所以在springmvc扫描包直接这样

    <context:component-scan base-package="com.crm.controller"/>

    在spring配置文件中不要扫描controller这个包即可。

  • 相关阅读:
    2019 SDN上机第7次作业
    第01组 Beta冲刺(4/5)
    第01组 Beta冲刺(3/5)
    第01组 Beta冲刺(2/5)
    第01组 Beta冲刺(1/5)
    2019 SDN上机第6次作业
    2019 SDN上机第5次作业
    SDN课程阅读作业(2)
    第01组 Alpha事后诸葛亮
    第01组 Alpha冲刺(6/6)
  • 原文地址:https://www.cnblogs.com/liu-wang/p/9107932.html
Copyright © 2011-2022 走看看