SpringBoot中构建带有含参构造函数的Bean,解决报错Parameter 0 of constructor in XXX required a bean ...

报错信息如下:


***************************

APPLICATION FAILED TO START
***************************


Description:
Parameter 0 of constructor in com.deng.service.impl.ImageServiceImpl required a bean of type 'java.lang.String' that could not be found.

Action:

Consider defining a bean of type 'java.lang.String' in your configuration.


报错信息是由于ImageServiceImpl中定义了含参数的构造函数,Spring自动构造和注入时未为该Bean传入参数,引起报错。


解决方案:使用@Bean注解手动创建ImageServiceImpl的实例,具体步骤如下:

1、定义BeanConfig类(或者将Bean的定义直接写在Application启动类中)

package com.deng.config;

import com.deng.service.ImageService;
import com.deng.service.impl.ImageServiceImpl;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Created by deng on 2018/5/21.
 */
@Configuration
public class BeanConfig {
    @Bean
    ImageService imageService(){
        return new ImageServiceImpl("test");
    }
}

2、修改ImageServiceImpl(含有参构造函数的Bean):

package com.deng.service.impl;

import com.deng.bean.Image;
import com.deng.dao.ImageDao;
import com.deng.service.ImageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * Created by deng on 2018/5/18.
 */
//@Service
public class ImageServiceImpl implements ImageService {
    @Autowired
    private ImageDao imageDao;

    private String test;

    public ImageServiceImpl(String s) {
        test = s;
    }

...
}
注意,其中的@Service(或者@Component、@Controller、@Repository、@Configuration这些用来定义Bean的注解)注解一定要注释掉或者删掉,这样才能够让自己手动构建的Bean起作用



注:SpringBoot中的@Bean注解相当于在Spring框架中使用xml文件定义<bean>...</bean>











  • 13
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值