Spring之推断构造方法
2023-02-21 21:00:31 0 举报
AI智能生成
Spring之推断构造方法
作者其他创作
大纲/内容
如果一个类只存在一个构造方法
使用AnnotationConfigApplicationContext
Spring会根据构造方法的参数信息去寻找bean,然后传给构造方法
使用ClassPathXmlApplicationContext
如果配置了constructor-arg,Spring会根据XML中指定的构造方法的参数值去寻找bean,然后传给构造方法
如果配置了autowire=constructor,Spring会自动去寻找bean做为构造方法参数值。
如果一个类存在多个构造方法
是否指定了想要使用的构造方法,Spring会就用这个构造方法
可以通过什么方式来指定使用哪个构造方法呢?
第一种:xml中的<constructor-arg>标签表示构造方法参数,所以可以根据这个确定想要使用的构造方法的参数个数,从而确定想要使用的构造方法
第二种:通过@Autowired注解,@Autowired注解可以写在构造方法上,所以哪个构造方法上写了@Autowired注解,表示开发者想使用哪个构造方法
第一种和第二种不同点是:通过xml的方式,我们直接指定了构造方法的参数值,而通过@Autowired注解的方式,需要Spring通过byType+byName的方式去找到符合条的bean作为构造方法的参数值
是否让Spring自动去选择构造方法,Spring会自动去寻找bean
可以通过什么方式让spring自动去选择构造方法
第一种:通过配置autowire=constructor,Spring会自动去寻找bean
上边两条都没指定
是否存在一个无参的构造方法,Spring就会用这个无参的构造方法
如果没有无参构造方法,则报错
多个构造方法上写了@Autowired注解
一个类中,只有能一个构造方法标注了@Autowired或@Autowired(required=true),有多个会报错
可以有多个@Autowired(required=false),这种情况下,需要Spring从这些构造方法中去自动选择一个构造方法。
0 条评论
下一页