学spring的时候出了问题,说是找不到bean

我这应该也没有把变量you设成autowired吧,为啥提示这么个东西,我把构造器删除了就没事了,加上就报错,咋回事的

img

package service.impl;

import dao.Dao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import service.Service;
@org.springframework.stereotype.Service("service")
public class ServiceImpl implements Service {
    @Autowired
    private Dao dao;
    @Value("${name}")
    private String name;
    private String you;

    public ServiceImpl(String you) {
        this.you = you;
    }

    @Override
    public void f() {
        System.out.println("这是"+name);
        dao.say();
    }
    public void k(){
        System.out.println("like"+you);
    }
}

统一回复下,感谢各位的解答

spring 要实例化一个ServiceImpl对象放到bean容器里,如果你只有一个有参构造器 那么spring 就实例化不了这个类了,因为它不知道参数要传什么。有两种解决办法,一种是使用无参构造器,另一种是往Spring的bean容器里放一个String对象,代码如下

import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

@Component
public class StringConf {
    @Bean
    public String string(){
        return "test";
    }
}

spring容器里面 没有 String类型的bean,这个构造器不是给你用的,是给spring调用的,他找不到合适的参数传进来就报错

一定要保留有参的构造方法,那就加一个无参的构造方法,让spring调用
public ServiceImpl() {
}

这玩意不是一般都用MVC开发模式吗?都要先建test实例化之类的,然后建testimpl连起来,java web去学一下基本的开发模式与框架吧。