如何在 Spring Boot 中为任何服务创建接口
How to create an interface for any service in Spring Boot
我希望后端中的所有 Service
类 都有 CRUD 方法。
为此,我想到了创建一个界面:
public interface ServiceCRUD {
public Object save(Object object);
...
}
然后在我的服务上实现它:
@Service
public class SampleService implements ServiceCRUD {
@Autowired
private SampleRepository repository;
@Override
public Sample save(Sample sample) {
return repository.save(sample);
}
...
}
好久没碰Java了,如果我没记错的话,每个对象都扩展了Object
,那为什么我不能用对象让服务接受我可能拥有的所有实体?
此致
您可以使用 Generics
实现这样的场景
interface ServiceCRUD {
public < E > void save(E object);
}
class Sample {
private String name = "Joe";
@Override
public String toString() {
return "hello"+name;
}
}
class SampleService implements ServiceCRUD {
@Override
public < Sample > void save(Sample sample) {
System.out.print(sample.toString());
}
}
public class Main {
public static void main(String[] args) {
new SampleService().save(new Sample());
}
}
这只是一个示例,您可以根据您的用例对其进行扩展。
查看工作 here
您的界面声明可以保存 Object
,即。 e.任何对象。但是你的实现声明它只获取 Sample
,这就是你得到编译错误的原因。
您应该使用遗传并让每个实现声明它可以处理哪种对象。我强烈建议查看 spring 数据项目。如果时间
,它会为你节省很多
我希望后端中的所有 Service
类 都有 CRUD 方法。
为此,我想到了创建一个界面:
public interface ServiceCRUD {
public Object save(Object object);
...
}
然后在我的服务上实现它:
@Service
public class SampleService implements ServiceCRUD {
@Autowired
private SampleRepository repository;
@Override
public Sample save(Sample sample) {
return repository.save(sample);
}
...
}
好久没碰Java了,如果我没记错的话,每个对象都扩展了Object
,那为什么我不能用对象让服务接受我可能拥有的所有实体?
此致
您可以使用 Generics
interface ServiceCRUD {
public < E > void save(E object);
}
class Sample {
private String name = "Joe";
@Override
public String toString() {
return "hello"+name;
}
}
class SampleService implements ServiceCRUD {
@Override
public < Sample > void save(Sample sample) {
System.out.print(sample.toString());
}
}
public class Main {
public static void main(String[] args) {
new SampleService().save(new Sample());
}
}
这只是一个示例,您可以根据您的用例对其进行扩展。 查看工作 here
您的界面声明可以保存 Object
,即。 e.任何对象。但是你的实现声明它只获取 Sample
,这就是你得到编译错误的原因。
您应该使用遗传并让每个实现声明它可以处理哪种对象。我强烈建议查看 spring 数据项目。如果时间