![一步一步学Spring Boot:微服务项目实战(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/111/29977111/b_29977111.jpg)
3.2.3 服务层类实现
我们在spring-boot-book-v2项目下继续开发服务层接口类和实现类:AyUserService和AyUserServiceImpl类,它们分别存放在目录/src/main/java/com.example.demo.service和/src/main/java/com.example.demo.service.impl下。具体代码如下:
![](https://epubservercos.yuewen.com/AC53AA/16499866405996906/epubprivate/OEBPS/Images/Figure-P51_907.jpg?sign=1738889740-kExNlmgffQTDYU0CkZND5UKMqkjRbI23-0-679f507c7d23609265a9e4f385b8059a)
接口类AyUserService定义了4个接口,findById和findAll用来查询单个和所有数据,Delete用来删除数据,Save同时具备保存和更新数据的功能。接口实现类AyUserServiceImpl代码如下:
![](https://epubservercos.yuewen.com/AC53AA/16499866405996906/epubprivate/OEBPS/Images/Figure-P51_5835.jpg?sign=1738889740-iFkUIo6y8enm4g13v8NRXuZexDtsx0Py-0-863b450b82f3bb0108a04d8d0d93c9c8)
• @Service:Spring Boot会自动扫描到@Component注解的类,并把这些类纳入进Spring容器中管理。也可以用@Component注解,只是@Service注解更能表明该类是服务层类。
• @Component:泛指组件,当组件不好归类的时候,可以使用这个注解进行标注。
• @Repository:持久层组件,用于标注数据访问组件,即DAO组件。
• @Resource:这个注解属于J2EE的,默认按照名称进行装配,名称可以通过name属性进行指定。如果没有指定name属性,当注解写在字段上时,默认取字段名进行查找。如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。具体代码如下:
![](https://epubservercos.yuewen.com/AC53AA/16499866405996906/epubprivate/OEBPS/Images/Figure-P52_920.jpg?sign=1738889740-F8ktUDlyYuF8NVvU9g7RKze13A52zUgn-0-3e5ff2d66f20234897081bc92b889bf6)
• @Autowired:这个注解是属于Spring的,默认按类型装配。默认情况下要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false),如果想使用名称装配可以结合@Qualifier注解进行使用。具体代码如下:
![](https://epubservercos.yuewen.com/AC53AA/16499866405996906/epubprivate/OEBPS/Images/Figure-P52_922.jpg?sign=1738889740-BHfiYkbLDbMzRm5isk56IHLgBHmjJngW-0-c2e7d0692e9b1a143aae0ff83e4e9073)