Spring-22-注解开发依赖注入
1. @Autowired 注解
可以注解在成员变量上,也可以注解在 setter 函数上
默认根据类型装填
@Component
class xxx {
@Autowired
Object obj;
}
@Component
class xxx {
Object obj;
@Autowired
public void setObj(Object obj) {this.obj = obj;}
}
[注意]
- 自动装填通过暴力反射对私有成员初始化数据,所有无需 setter
- 需要无参构造器
2. @Qualifier 注解
用于指定成员的装填类型(bean 的 id),必须配合 @Autowired 一起使用,无法单独使用
@Component
class xxx {
@Autowired
@Qualifier("id")
Object obj;
}
[补充]
- 当未使用 @Qualifier 注解时,且有两个同类型的 bean,自动装填会将成员变量名作为 id 查找对应的 bean
3. @Value 注解
对简单类型 (值类型) 的成员做初始化操作,无需添加 @Autowired 注解
class xxx {
@Value("Bob")
private String name;
}
4. @PropertySource 注解
@PropertySource 注解用于加载 properties 文件,值类型初始值可从加载过的 properties 文件中得到
@Configuration
@ComponentScan("com.xxx")
@PropertySource("classpath:xxxx.properties")
public class SpringConfig {
}
class xxx {
@Value("${mysql.username}")
private String name;
}
[注意]
- 多文件加载可以用数组形式指定路径,无法使用通配符
- 注意 ${x} 可能会取到系统变量,建议在 properties 中用 xxx.yyy 的形式命名数据