Spring Boot如何根据某个值,得到接口的实现类

实际的开发过程中,可能有这种情况,前台传递过来一个值,不同的值对应不同的接口的实现类,普通的方法实现如下

1.   public interface Person{

    void eat(String name);

}

public class Student implements Person{

    void eat(String name){

    System.out.println("Student eat");

}

public class Teacher implements Person{

    void eat(String name){

    System.out.println("Teacher eat");

}


public class Demo{

    public static void main(String[] args){

    Person p=getPerson("teacher");//即可得到Teacher对象

    Person p=getPerson("student");//即可得到Student对象

    public Person getPerson(String type){

    if(type.equals("student")){

    return new Student();

}else if(type.equals("teacher")){

    return new Teacher();

}

}

}


2.spring boot实现方式

public interface Person{

    void eat(String name);

}

@Service("student")

public class Student implements Person{

    void eat(String name){

    System.out.println("Student eat");

}


@Service("teacher")

public class Teacher implements Person{

    void eat(String name){

    System.out.println("Teacher eat");

}


@Service

public class Demo{

    @Autowired

    public Map(String, Person) personMap;

    Person p=personMap("teacher");//即可得到Teacher对象

    Person p=personMap("student");//即可得到Student对象

}






猜你喜欢

转载自blog.csdn.net/xing930408/article/details/79891673