好久好久没有使用springboot,spring的一些注解都不清楚该怎么使用了,因此出现现在的这个问题
使用Springbooot创建线程池,并使用线程池,创建了一个util类,发现其他方法无法直接使用new的方法,后面发现我是将这个util类使用了@Component,不能直接使用new一个方法(如 xxxUtils p = new xxxUtils()),而应该要在使用该工具类的方法里面使用@Autowired这个去注入bean
类上使用了@Component注解,想要使用这个类中的方法,便不能直接new,而应该使用# @Autowired进行注入,否则会报错(如空指针异常等)
@Component
是一个元注解,可以注解其他类注解
,功能是用来告诉spring当前类是一个Bean对象
,然后让spring对该类进行自动创建并管理
- 指定bean的名称,默认为类名首字母小写:@Component
- 指定bean的名称,@Component(“university1”)
@Autowired
表示一个属性是否需要进行依赖注入
,可以使用在属性、普通方法上、构造方法上。注解中的required属性默认是true,如果没有对象可以注入到属性,则会报出异常;
加在某个属性上
,spring会从ioc容器中找到bean对象注入到属性上,如果找到多个该类型的Bean对象,则再根据属性的名字从多个Bean对象中确认一个;写在set()方法上
,在spring会根据方法的参数类型从ioc容器中找到该类型的Bean对象注入到方法的行参中,并且自动反射调用该方法(被@Autowired修饰的方法一定会执行),所以一般使用在set方法中、普通方法不用;使用在构造方法中
:根据构造方法的形参、形参名,从ioc容器中找到该类型的Bean对象,注入到构造方法的形参中,并且执行该方法;