-
@Bean方法带有引用类型参数的情况,如下:
类Pencil无任何注解,就是一个普通的类
//@Component
class Pencil {
private int x;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
将类Pencil作为 @Bean方法的一个参数类型
@Bean
public Cup cupBean(Pencil pencil) {
Assert.isTrue(pencil.getX() > 0, "++++++++++++the x of pencil must be greater than 0++++++++++++");
return new Cup();
}
如上代码,pencil对象必须要是spring容器管理的实例,否则cupBean方法会报错:
给Pencil类加上@Component注解后,Spring会将其实例化并加入到容器中
package com.xl.test.logtest.utils;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
@Configuration
public class MyConfig {
@Bean
public Cup cupBean(Pencil pencil) {
Assert.isInstanceOf(Pencil.class, pencil, "++++++++++++ pencil 实例/bean不存在 ++++++++++++");
return new Cup();
}
}
@Component
class Pencil {
private int x;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
启动项目,验证!