我这应该也没有把变量you设成autowired吧,为啥提示这么个东西,我把构造器删除了就没事了,加上就报错,咋回事的
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去学一下基本的开发模式与框架吧。