抽象类 autowired
时间: 2023-08-17 07:12:39 浏览: 48
在使用抽象类时,可以使用@Autowired注解来实现依赖注入。然而,抽象类本身无法被实例化,因此无法被Spring容器托管。为了解决这个问题,可以在抽象类的子类中使用@Autowired注解来注入实例对象。子类可以被实例化并由Spring容器托管,这样抽象类中注入的实例对象就能正常注入了。可以通过子类注入的方式来实现抽象超类中的实例注入。另外,也可以在抽象类的设置方法上使用@Autowired注解来实现注入。[1][2][3]
相关问题
抽象类autowired
@Autowired 是 Spring 框架中的一个注解,作用是自动装配(自动注入)依赖对象。在使用 @Autowired 注解时,Spring 会自动扫描容器中所有的 Bean ,并把符合类型的 Bean 注入到被注解的变量中。
抽象类是一个不能被实例化的类,它只能被继承。在 Spring 中,可以通过抽象类来定义一些公共的方法和属性,让其子类来继承。当我们使用 @Autowired 注解时,如果要注入的依赖对象是一个抽象类,Spring 会找到该抽象类的所有子类,并根据其类名进行匹配,找到对应的子类进行注入。
需要注意的是,如果一个抽象类有多个子类,而这些子类都符合被注入的类型,那么 Spring 会抛出 NoUniqueBeanDefinitionException 异常,提示我们需要使用 @Qualifier 注解来指定具体的 Bean。
抽象类@Autowired, @PostConstruct 为null
抽象类是不能被实例化的,因此不能被自动装配。如果试图将一个抽象类标记为@Autowired,则会出现NullPointException异常。同样的道理,如果在抽象类中使用@PostConstruct注解方法,也会导致NullPointerException异常。
如果您需要使用@Autowired和@PostConstruct注解,请将其应用于具体的子类,而不是抽象类。在子类中实现抽象方法,并在子类中使用@Autowired和@PostConstruct注解方法,这样就可以正确地注入依赖项并执行初始化方法了。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)