java實現在普通類中註入service或mapper

普通類中註入service或mapper

1、類加@Component註解

2、註入需要引入的service

  @Autowired
  private UserService userService;

3、建靜態文件

   private static UserService users;

4、初始化方法

  @PostConstruct
  public void init() {
      users= userService;
  }

5、調用

 users.selectUser(user);

mapper為null的情況

今天開發接口的時候,因為一時馬虎,導致被一個小bug拖拉瞭很久,在這裡記錄一下

今天服務器掛瞭,數據庫鏈接不瞭。隻能靠著理論寫接口,之後發現方法調用後查詢為空,並且拋出瞭異常。在Debug環境下,打瞭斷點後發現step隻走到瞭Xxxmapper.xx();就停止瞭。查看mapper對象發現為空。

——開始調查:

@SpringBootApplication
@EnableSwagger2
@EnableSwaggerBootstrapUI
@EnableFeignClients(basePackages = {"XXXX.XXXX.api"})
@ComponentScan(value = {"XXXXX.XXXX.api.config", "com.XXXX.gateway.XXX", "com.XXXXX.XXXX.auth"})
@MapperScan("com.XXXX.XXXX.XXX.mapper")
@EnableScheduling
public class IotGateWayParkServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(IotGateWayParkServiceApplication.class);
    }
}

MapperScan可以導致這個問題。但是我有,所以排除。

——二查

public class impl{
 @Autowired
 private XxxMapper mapper;
}

@Autowired 也有,有時候idea還會因為這個報紅,這個可以通過加上@Resource來解決這個強迫癥,但是@Autowired裡面本身包含@Resource,加不加都無所謂。給強迫癥用的。但是這裡我沒犯錯誤,所以排除。

@Mapper
@Respository
public interfaceXxxMapper{
 
}

@Mapper 和 @Respository 我都有。所以排除。

——馬虎是啥:

    @Autowired
    private IotGatewayParkInfoService service;

一般在controller層都是這麼使用的。但是 我偏偏手賤用瞭new IotGatewayParkInfoService();所以下場你們也知道瞭

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: