实现 mybatisLog 存储到mysql @Autowired 注入mybatis plus报错
时间: 2024-04-10 16:27:32 浏览: 92
如果你在 MyBatis Plus 的日志实现类中使用了 `@Autowired` 注解进行依赖注入,可能会导致报错。因为 MyBatis Plus 的日志实现类是由 MyBatis Plus 内部创建和管理的,并不是由 Spring 容器管理的 Bean。
要解决这个问题,可以尝试以下两种方法:
1. 使用构造函数注入:在 MyBatis Plus 的日志实现类中添加一个带有需要注入的依赖的构造函数,并在构造函数中进行赋值操作。例如:
```java
public class MyBatisPlusMySQLLogImpl extends AbstractSqlInjector implements Log {
private YourDependency yourDependency;
public MyBatisPlusMySQLLogImpl(YourDependency yourDependency) {
this.yourDependency = yourDependency;
}
// 其他方法...
}
```
然后,在你创建 MyBatis Plus 的 SqlSessionFactory 或者 Configuration 对象时,手动传入需要注入的依赖,如:
```java
YourDependency yourDependency = new YourDependency();
Log mybatisPlusLog = new MyBatisPlusMySQLLogImpl(yourDependency);
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setSqlInjector(mybatisPlusLog);
MybatisConfiguration configuration = new MybatisConfiguration();
configuration.setGlobalConfig(globalConfig);
SqlSessionFactory sqlSessionFactory = new MybatisSqlSessionFactoryBuilder().build(configuration);
```
2. 使用静态字段或者单例模式:如果你的依赖对象是一个单例对象或者是一个静态字段,你可以在 MyBatis Plus 的日志实现类中直接引用该对象,无需进行依赖注入。
请根据你的具体需求选择适合的方法来解决此问题。记得在使用构造函数注入时,需要自行创建 MyBatis Plus 的 SqlSessionFactory 或者 Configuration 对象,并手动传入依赖。
阅读全文