将构造函数,字段,setter方法或配置方法标记为自动装配 通过Spring的依赖注入设施。只有一个构造函数(at 任何给定bean类的max)都可以带有这个注释,表示 构造函数在用作Spring bean时自动装配。这样的构造函数 不必公开。字段是在之后注入的 在调用任何配置方法之前构造bean。这样的 配置字段不必是公共的。配置方法可能有一个 任意名称和任意数量的参数;每个论点 将在Spring容器中使用匹配的bean自动装配。
Bean属性设置器方法实际上只是这种的特例 一般配置方法。这种配置方法不必是公开的。 在多参数方法的情况下,需要'参数是 适用于所有论点。如果是收藏或地图 依赖类型,容器将自动装配所有与之匹配的bean 声明的值类型。如果是Map,则必须将键声明为 键入String并将解析为相应的bean名称。注意 实际注入是通过BeanPostProcessor执行的 反过来意味着你不能使用@Autowired注入引用 BeanPostProcessor或BeanFactoryPostProcessor类型。请咨询 AutowiredAnnotationBeanPostProcessor类的javadoc(其中, 默认情况下,检查是否存在此批注。)
我的问题是:
配置方法是什么意思?
而且,让我们说我有@Autowired
的setter方法和@Autowired
的一些任意方法。我假设在bean实例化之后,spring会自动调用setter方法,而随机命名的@Autowired
方法不会被调用,我是对的吗?
Spring如何理解在实例化(setter)之后应该调用哪个@Autowired
方法,而其他人不应该这样做?这与javadoc的声明如何相关,并说:
Bean属性setter方法实际上只是一个特例 这样的一般配置方法
最后一个问题:我可以在哪里阅读它?因为Spring文档没有关于它的任何信息,我无法找到春天使用的确切逻辑在它的javadoc。
答案 0 :(得分:5)
// create a transparent base image that we will merge the cropped images into.
$img = new Img();
$img->create(400, 400, true);
// first image; crop and merge with base.
$img2 = new Img('./crop_1.png');
$img2->circleCrop();
$img->merge($img2, 50, 50);
// second image; crop and merge with base.
$img3 = new Img('./crop_2.png');
$img3->circleCrop();
$img->merge($img3, 25, 200);
$img->render();
注释可以与构造函数,setter方法或任何其他方法一起使用。
每当Spring找到@Autowired
注释时,它将尝试查找与方法参数匹配的bean,并将调用该方法。如果多个方法(setter或non-setter)具有@Autowired
注释,那么在bean实例化之后Spring将调用所有方法。
答案 1 :(得分:0)
配置方法是一种类似工厂的方法,在这种情况下会自动连接参数:
Arch | Layers | Score | Time
A | 1 | 0.3 | 10
A | 1 | 0.6 | 20
A | 1 | 0.7 | 30
B | 2 | 0.7 | 10
B | 2 | 0.8 | 20
B | 2 | 0.8 | 30
@Autowired仅确保Spring将(尝试)提供所需的参数。
答案 2 :(得分:0)
此上下文中的Config-method指的是您在init-method
或@PostConstruct
下指定的方法
您已经知道的Setter就像setXXX
所以很明显找到哪个是没有困难的。 同时注意弹簧不能根据参数名称自动装配。