报错信息如下:
***************************
APPLICATION FAILED TO STARTConsider 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;
}
...
}
注:SpringBoot中的@Bean注解相当于在Spring框架中使用xml文件定义