@Repository 和@config
时间: 2023-11-09 14:49:14 浏览: 63
@Repository和@Configuration是Spring框架中的两个常用注解。
@Repository注解用于将一个类标记为数据访问层(DAO)的组件。它的作用是将数据库操作异常转化为Spring的持久化层异常。@Repository注解通常与持久化技术(如Hibernate)一起使用,用于标识数据访问组件,包括数据库操作、查询和事务管理。
@Configuration注解用于将一个类标记为配置类,以告诉Spring容器该类包含一个或多个bean的定义。配置类中通常包含了@Bean注解的方法,每个方法都返回一个bean的实例。这些bean会被Spring容器管理,可以注入到其他组件中使用。
相关问题
单独使用@Repository,需要配合使用MapperScannerConfigurer或者@MapperScan注解。
当你在Spring Boot项目中使用`@Repository`注解来标记Repository接口时,通常与JPA或MyBatis这样的ORM框架一起工作。如果仅仅使用`@Repository`,而不配置扫描器(如`MapperScannerConfigurer`或`@MapperScan`),Spring会默认查找并自动注册基于接口名称的bean。然而,如果你想要利用MyBatis的自动扫描功能,特别是当你的Mapper类分布在多个包下时,你需要配合使用`@MapperScan`注解。
例如,在Spring Boot中配置MyBatis的扫描:
```java
@Configuration
public class MybatisConfig {
@MapperScan("com.example.mapper") // 替换为你实际的Mapper包名
public void configureMyBatis(MyBatisConfigurer configurer) {
// 其他MyBatis配置...
}
}
```
在这个配置中,`@MapperScan`告诉Spring从指定包及其子包中扫描`Mapper`接口。这样,当有新的Mapper接口添加时,Spring能够自动识别并注入到Repository中。
如果不使用这种方式,你可以选择手动创建`JpaRepository`实现,或者通过配置`DataSourceTransactionManager`来管理事务。不过这会涉及到更多的代码编写和手动关联。
@Repository public class FileDao { @Autowired private SqlSession sqlSession; public void save(FileInfo fileInfo) { sqlSession.insert("fileInfo.save", fileInfo); } }改成用@Mapper
好的,将该类改为使用@Mapper注解的方式,可以按照以下步骤进行:
1. 首先,在pom.xml文件中添加如下依赖:
```xml
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
```
2. 在Spring Boot的配置类中加入@MapperScan注解,指定Mapper类所在的包路径,例如:
```java
@Configuration
@MapperScan("com.example.mapper")
public class MybatisConfig {
//其他配置
}
```
3. 修改FileDao类,使用@Mapper注解替换@Repository注解,例如:
```java
@Mapper
public interface FileMapper {
void save(FileInfo fileInfo);
}
```
4. 在需要使用FileMapper的地方,使用@Autowired注解注入即可,例如:
```java
@Service
public class FileService {
@Autowired
private FileMapper fileMapper;
//其他代码
}
```
这样就完成了将FileDao类改为使用@Mapper注解的方式。
阅读全文