![一步一步学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=1738896662-wRAZjHOFruzbTNFn3wKkX6mixBh5sgSh-0-57059cd64a8f2c6bff0164e43f78d0f5)
接口类AyUserService定义了4个接口,findById和findAll用来查询单个和所有数据,Delete用来删除数据,Save同时具备保存和更新数据的功能。接口实现类AyUserServiceImpl代码如下:
![](https://epubservercos.yuewen.com/AC53AA/16499866405996906/epubprivate/OEBPS/Images/Figure-P51_5835.jpg?sign=1738896662-4dGmrmgv2eRMvfmruymPCQCDcUU6rtKX-0-4625878cf6260ec66d1409d511f80421)
• @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=1738896662-SUU93UJ1oDjiU8eSrf10UeoJ4y3F8gmB-0-a8fb8556a0db4f43f8499b6fd0b26408)
• @Autowired:这个注解是属于Spring的,默认按类型装配。默认情况下要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false),如果想使用名称装配可以结合@Qualifier注解进行使用。具体代码如下:
![](https://epubservercos.yuewen.com/AC53AA/16499866405996906/epubprivate/OEBPS/Images/Figure-P52_922.jpg?sign=1738896662-0yAPRY6iPQmTaCtVL4oWZ5C9yAth5ewY-0-21ad15d6aeb9f134955e6ac40b8ab999)