spring解决static修饰方法中无法注入mapper的问题

 

开发过程中偶尔遇到一个问题,静态方法调用mybatis的mapper接口时,会出现@Autowired无法注入的问题,即使添加了这个注解,spring容器加载完成声明的参数也是空值,如下所示:

    @Autowired
	private PubDictItemMapper pubDictItemMapper;

参数调用时pubDictItemMapper是空的,报空指针异常,查资料发现用static修饰的方法如果要调用mapper层时,可以用如下方式实现,首先,在实体类上加上注解@Component,用于注解方便spring容器进行加载,然后定义如下:

private static CommonUtil commonUtil;

CommonUtil当前类,再加入如下方法,调用时使用commonUtil.pubDictItemMapper就可以成功了。

    @PostConstruct
	public void init() {
		commonUtil = this;
		commonUtil.pubDictItemMapper = this.pubDictItemMapper;
	}

具体上面的spring容器加载逻辑还需要后续再研究!

Spring,我们可以使用依赖注入(dependency injection)来注入Mapper对象。首先,确保你已经配置了MyBatis或者其他ORM框架,并且已经创建了Mapper接口和对应的Mapper实现类。 接下来,你可以在Spring的配置文件(如applicationContext.xml)使用`<bean>`标签来定义Mapper对象的注入。例如,假设我们有一个名为`UserMapper`的Mapper接口,可以按照以下方式进行注入: ```xml <!-- 配置Mapper接口 --> <bean id="userMapper" class="com.example.UserMapper"/> <!-- 配置Service层 --> <bean id="userService" class="com.example.UserService"> <!-- 注入Mapper对象 --> <property name="userMapper" ref="userMapper"/> </bean> ``` 在上述示例,我们先定义了一个名为`userMapper`的Bean,并指定了对应的实现类`com.example.UserMapper`。然后,我们在Service层的Bean定义使用`<property>`标签注入了`userMapper`对象。 接下来,在你的Service类,你可以使用`@Autowired`注解将Mapper对象自动注入到成员变量。例如: ```java @Service public class UserService { @Autowired private UserMapper userMapper; // ... } ``` 现在,你就可以在Service类使用`userMapper`对象了。Spring会自动为你创建并注入`userMapper`实例。 需要注意的是,为了使依赖注入正常工作,确保你已经正确配置了Spring和MyBatis(或其他ORM框架),并且在Spring配置文件正确地定义了Mapper对象和其他相关的Bean。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值