欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring中Service注入多個(gè)實(shí)現(xiàn)類的方法詳解

 更新時(shí)間:2023年07月19日 08:51:30   作者:Blue92120  
這篇文章主要介紹了Spring中Service注入多個(gè)實(shí)現(xiàn)類的方法詳解,Spring是一個(gè)開源的Java框架,用于構(gòu)建企業(yè)級(jí)應(yīng)用程序,它提供了許多功能,如依賴注入、面向切面編程、數(shù)據(jù)訪問、Web開發(fā)等,需要的朋友可以參考下

實(shí)現(xiàn)方法:

方法一:

Controller中注入service的時(shí)候使用@Autowired自動(dòng)注入,@Qualifier("beanId")注解來指定注入哪一個(gè)。

方法二:

Controller中注入service的時(shí)候使用@Resource(type = 類名.class)來指定注入哪一個(gè)。

方法三:

每個(gè)service的impl都可以指定名稱(使用@Service(“名稱”)

Controller中注入service的時(shí)候使用名稱來指定注入哪一個(gè)(使用@Resource(name="名稱"))。

@Service注解

其實(shí)做了兩件事情:

1、聲明TeacherServiceImpl.java是一個(gè)bean。因?yàn)門eacherServiceImpl .java是一個(gè)bean,其他的類才可以使用@Autowired將TeacherServiceImpl 作為一個(gè)成員變量自動(dòng)注入。

2、TeacherServiceImpl.java在bean中的id是"teacherServiceImpl ",即類名且首字母小寫。

注意:不能有同名的,不然要報(bào)錯(cuò)。

@Autowired注解

意思就是:

當(dāng)Spring發(fā)現(xiàn)@Autowired注解時(shí),將自動(dòng)在代碼上下文中找到和其匹配(默認(rèn)是類型匹配)的Bean,并自動(dòng)注入到相應(yīng)的地方去。

@Resource的作用相當(dāng)于@Autowired。

@Autowired和@Resource兩個(gè)注解的區(qū)別:

1.@Autowired是Spring的注解,@Resource是J2EE的注解,這個(gè)看一下導(dǎo)入注解的時(shí)候這兩個(gè)注解的包名就一清二楚了。

2.@Autowired默認(rèn)按照byType方式進(jìn)行bean匹配,@Resource默認(rèn)按照byName方式進(jìn)行bean匹配。

3.@Autowired默認(rèn)情況下必須要求依賴對(duì)象必須存在,如果要允許null值,可以設(shè)置它的required屬性為false,如:@Autowired(required=false)

方法一代碼如下:

接口

public interface HumanService {
    public String name();
}

接口實(shí)現(xiàn)類

@Servicepublic class TeacherServiceImpl implements HumanService {
    @Override
    public String name() {
        System.out.println("teacher");
        return "teacher";
    }
}
@Servicepublic class DoctorServiceImpl implements HumanService {
    @Override
    public String name() {
        System.out.println("doctor");
        return "doctor";
    }
}

控制器

@RestController
public class HumanController {
    //    @Resource(type = DoctorServiceImpl.class) //方法二
    @Autowired
    @Qualifier("teacherServiceImpl")
    private HumanService humanService;
    @RequestMapping("/name")
    public String name(){
        return humanService.name();
    }
}

方法三代碼如下:

接口

public interface HumanService {
    public String name();
}

接口實(shí)現(xiàn)類

@Service("teacherService")
public class TeacherServiceImpl implements HumanService {
    @Override
    public String name() {
        System.out.println("teacher");
        return "teacher";
    }
}
@Service("doctorService")
public class DoctorServiceImpl implements HumanService {
    @Override
    public String name() {
        System.out.println("doctor");
        return "doctor";
    }
}

控制器

@RestController
public class HumanController {
    @Resource(name="doctorService")
    private HumanService humanService;
    @RequestMapping("/name")
    public String name(){
        return humanService.name();
    }
}

到此這篇關(guān)于Spring中Service注入多個(gè)實(shí)現(xiàn)類的方法詳解的文章就介紹到這了,更多相關(guān)Spring中Service注入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論