关于springboot中注解的问题

为什么有的时候需要使用@autowired注入,有的时候直接就能直接使用呢

这里注入了userMapper

img

这里没有注入MD5Util和UUidUtil也可以直接使用是为什么呢

img

我的解答思路和尝试过的方法
我想要达到的结果

你提到的:1.为什么有的时候需要使用@autowired注入,有的时候直接就能直接使用呢
答:你使用@Autowired注入,那么相关的类肯定带有@Bean、@Service等注解,这样才能成功注入。注入到bean是为了让spring的IOC容器去统一管理,直接帮创建了对象,无需你多次创建对象,就可以用注入后的变量去调用到实例方法。ps:当然你也可以直接new也是可以的。
你提到的:2.这里没有注入MD5Util和UUidUtil也可以直接使用是为什么呢
答:因为你这里是使用的静态方法,只能采用类名来调用。当然你使用new或是@Autowired注入也是不可能调用到静态方法的.
请你不要陷入误区,区分好实例方法(普通方法、对象方法)和类方法(静态方法)的区别。

MD5UtilUUidUtil 是类,不属于 Spring 管理的 bean 对象,项目中只是调用工具类的静态方法而已,静态方法不需要实例化就可以调用,因此不必使用 Spring 管理。

因为mapper是MyBatis的接口,面向接口编程,直接注入,然后回自动去调用方法,

Util为什么不用注入是因为本身就是个普通类,再加上是个静态方法,直接写类名.方法名就可以调用的

MD5Util 和 UUidUtil 是类,可以直接使用该类的方法,并且这两个类没有被spring容器去管理,再有MD5Util 和 UUidUtil 这两个类调用的方法都是静态方法,可以通过类名直接调用的,而TUserMapper类上边是存在了spring管理的注解,当项目启动时,就会将该对象的实例注入spring容器,你在使用通过@autowired或者@resource等注解直接从容器去获取就可以使用了