在service層注入mapper時報空指針的解決
在service層注入mapper時報空指針
今天又遇到一個極其刁鉆的問題,廢話不多說先上代碼,測試單元
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringBoot_Run.class)
@ContextConfiguration(locations = { "classpath:mybatis/mappers/RevMapper.xml" })
public class TestTransaction {
@Autowired
RevMapper remapper;
@Test
public void testInsert() {
ReData data = new ReData();
data.setReTime(new Date()).setSeID("fdewfcdsfdssdfdsf").setSendDate(new Date());
remapper.insertObject(data);
}
然后是service代碼
public class ReService {
@Autowired
private RevMapper reMapper;
private Socket socket=null;
private BufferedReader br=null;
private PrintWriter pw=null;
public void recevice() {
try {
//創(chuàng)建服務(wù)器,并開放3081端口
ServerSocket serv
RevMapper 類在測試的時候注入的好好地,為毛在service中就是空,一直空,空空空?。?!
網(wǎng)上說的@mapperScan還有@mapper的注解我都加了一遍,這是為毛?。。。?!
在博覽全部大神的CSDN中,我發(fā)現(xiàn)大家都是抄過來抄過去,小弟佩服??!
解決!?。?/h3>
因為我在啟動類是這樣寫的
@SpringBootApplication(exclude=DataSourceAutoConfiguration.class)
@MapperScan(“cn.yungtay.mapper”)
public class SpringBoot_Run {
public static void main(String[] args) {
SpringApplication.run(SpringBoot_Run.class, args);
ReMapper re=new ReMapper();
re.receive;
}
}
厲害的歐巴們不要噴,我第一反應(yīng)是這樣的?。?/p>
問題出來了,當(dāng)一個對象是new出來的時候,他是不交給spring管理的,所以對象根本注入不進(jìn)去,null是理所當(dāng)然的
第二個問題,你想一個方法隨著主啟動類而啟動,你可以這么干
@Service
public class ReService implements ApplicationRunner{
@Autowired
private RevMapper reMapper;
private Socket socket=null;
。。。。。。。。。。。。。
@Override
public void run(ApplicationArguments args) throws Exception {
// TODO Auto-generated method stub
你所需要啟動的方法XXXXXXXX
}
感覺自己又智慧了一點(diǎn)!
springmvc普通類(非control,service)注入mapper為null
在給項目寫一個定時器的時候,需要用到注入mapper進(jìn)行數(shù)據(jù)庫操作,用像serviceimpl里的注入
@Autowired UserMapper usermapper;
無效,debug后發(fā)現(xiàn)usemapper為null,說明沒有注入成功
后看到其他文章知道了new出來的thread不在spring的容器中,所以無法注入成功,獲得bean
但是按照他的方法依舊為null,他的想法是主動注入bean,應(yīng)該是對的。
不過我這個可能有點(diǎn)特殊,于是最后只能使用終極大法
ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
usermapper = (UserMapper) ac.getBean("UserMapper");
usermapper.deleteAllCookies();
不要忘了給mapper個名字,例
@Repository(value="UserMapper")
public interface UserMapper {
public List<User> selectByExample(@Param("username1")String username,@Param("password")String password);
public int insertToken(@Param("username1")String username,@Param("token")String token);
public String checkToken(String token);
public int logout(@Param("username1")String username,@Param("token")String token);
public int deleteAllCookies();
}
這個方法主觀上感覺不是很好,先這樣吧!
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
clickhouse?批量插入數(shù)據(jù)及ClickHouse常用命令詳解
這篇文章主要介紹了clickhouse?批量插入數(shù)據(jù)及ClickHouse常用命令,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03
Spring兩種任務(wù)調(diào)度Scheduled和Async的區(qū)別和應(yīng)用場景詳解
在現(xiàn)代應(yīng)用程序中,任務(wù)調(diào)度是一個非常普遍的需求,Spring框架提供了兩種主要的方式來實現(xiàn)任務(wù)調(diào)度:??Scheduled?? 和 ??Async??,在這篇文章中,我們將詳細(xì)介紹這兩種方式的區(qū)別和應(yīng)用場景,需要的朋友可以參考下2024-12-12
如何通過Java實現(xiàn)PDF轉(zhuǎn)高質(zhì)量圖片
在Java中,將PDF文件轉(zhuǎn)換為高質(zhì)量的圖片可以使用不同的庫,其中最常用的庫之一是?Apache?PDFBox,下面我們就來看看這個庫的具體使用吧2024-10-10
Mybatis一級緩存和結(jié)合Spring Framework后失效的源碼探究
這篇文章主要介紹了Mybatis一級緩存和結(jié)合Spring Framework后失效的源碼探究,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
使用resty Quartz執(zhí)行定時任務(wù)的配置方法
這篇文章主要為大家介紹了使用resty?Quartz來執(zhí)行定時任務(wù)的配置方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03
Java中的==和equals()區(qū)別小結(jié)
在Java編程中,理解==操作符和equals()方法的區(qū)別是至關(guān)重要的,本文主要介紹了Java中的==和equals()區(qū)別,具有一定的參考價值,感興趣的可以了解一下2023-08-08

