springboot 项目普通类中调用mapper或service接口

本文介绍了一种使用Spring框架实现Bean初始化的方法。具体步骤包括:利用@Component注解定义组件;通过@PostConstruct注解标记初始化方法;创建静态字段保存当前类实例;通过注入Mapper或Service接口完成业务逻辑操作。

1、该类使用@Component注解

2、添加一个本类类型的静态字段

3、创建一个初始化方法,贴上@PostConstruct 标签,用于注入bean

4、创建方法调用mapper或service接口

5、最后直接在普通类中调用即可

例如:

    


在Spring Boot应用中,`@Service`和`@Mapper`是两个具有特定用途的注解,它们都属于Spring框架提供的组件扫描机制的一部分,用于简化配置并提高代码的可维护性。 ### `@Service` 注解的作用 `@Service`是一个专用于业务逻辑层(Service Layer)的注解,它是`@Component`的一个特化版本。当一个被标记为`@Service`时,它表明该包含了业务逻辑,并且应该由Spring容器来管理其生命周期。这个注解使得中的方法可以被其他组件通过依赖注入(Dependency Injection, DI)的方式所使用。此外,`@Service`注解的非常适合放置那些需要事务管理的方法,因为可以很容易地结合`@Transactional`注解来实现对数据库操作的事务控制[^3]。 例如,在一个典型的三层架构中,`@Service`通常会应用于服务层的实现上,这些负责处理来自控制层(Controller)的请求,并调用数据访问层(DAO Mapper)进行数据操作。 ### `@Mapper` 注解的作用 `@Mapper`则专门用于MyBatis框架中,用来标注接口。MyBatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。当接口被`@Mapper`注解修饰时,Spring Boot会自动创建该接口的代理对象,并将其注册到Spring容器中,这样就可以在服务层直接注入这个Mapper接口,而无需手动创建实现[^1]。这种方式极大地简化了MyBatis与Spring Boot集成时的数据访问层开发工作。 为了确保所有带有`@Mapper`注解的接口都能被正确识别并注册为Spring Bean,通常还需要在主启动配置上添加`@MapperScan`注解,指定要扫描的包路径,以便Spring能够找到并处理这些Mapper接口[^4]。 ### 使用场景对比 - **`@Service`** 主要用于封装业务逻辑,适用于服务层组件。它不仅让Spring知道这是一个需要被管理的服务组件,还允许通过DI机制在其他组件中使用此服务。特别是在涉及到数据库事务管理时,`@Service`配合`@Transactional`非常有用。 - **`@Mapper`** 则专注于数据访问层,它是MyBatis与Spring Boot整合时的关键注解,用于定义DAO接口。借助`@Mapper`,开发者无需编写具体的实现,而是依靠MyBatis自动生成代理对象来完成实际的数据访问功能。 综上所述,`@Service`和`@Mapper`各自服务于不同的目的:前者侧重于业务逻辑的封装与管理,后者则专注于数据访问层的接口定义及自动化实现。两者共同协作,可以帮助构建清晰分层、易于维护的企业级应用程序。 ```java // 示例代码 - UserService 使用 @Service 注解 @Service public class UserService { @Autowired private UserMapper userMapper; public User getUserById(Long id) { return userMapper.selectById(id); } } ``` ```java // 示例代码 - UserMapper 使用 @Mapper 注解 @Mapper public interface UserMapper { User selectById(Long id); } ``` ###
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值