• 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这个包即可。

  • 相关阅读:
    windows下多个python版本共存,删掉一个
    解决ModuleNotFoundError: No module named 'pip'问题
    Palindrome Linked List 综合了反转链表和快慢指针的解法
    30-Day Leetcoding Challenge Day9
    Longest Common Prefix 五种解法(JAVA)
    30-Day Leetcoding Challenge Day8
    30-Day Leetcoding Challenge Day7
    30-Day Leetcoding Challenge Day6
    30-Day Leetcoding Challenge Day2
    leetcode162 Find Peak Element
  • 原文地址:https://www.cnblogs.com/liu-wang/p/9107932.html
Copyright © 2020-2023  润新知