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。
推薦閱讀:
- @Autowired註解註入的xxxMapper報錯問題及解決
- 一文搞懂Spring中@Autowired和@Resource的區別
- @MapperScan和@ComponentScan一塊使用導致沖突的解決
- Spring五大類註解讀取存儲Bean對象的方法
- spring boot寫java web和接口