1. 字段(属性)注入
- spring framerwork 4.0 后不推荐使用
- 可用注解 @Resource, @Autowired, @Inject
1.1 @Resource 注解
package javax.annotation;
@Target({TYPE, FIELD, METHOD})
@Retention(RUNTIME)
public @interface Resource {
}
示例:
@Component
public class UserConfigManager {
@Resource
private UserConfig userConfig;
}
1.2 @Autowired 注解
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Autowired {
boolean required() default true;
}
示例:
@Component
public class UserConfigManager {
@Autowired
private UserConfig userConfig;
}
注:@Autowired 处有一个黄色的波浪线提示 “Field injection is not recommended”(不推荐使用字段注入)
补充:
@Autowired 是按类型装配的,可通过 @Qualifier(“beanName”) 指定 bean 名称
@Component
public class UserConfigManager {
@Autowired
@Qualifier("userConfig")
private UserConfig userConfig;
}
2. Setter 方法注入
- 优点:可以按需注入
2.1 注解方式
@Component
public class UserConfigManager {
private UserConfig userConfig;
@Resource
public void setUserConfig(UserConfig userConfig) {
this.userConfig = userConfig;
}
2.2 XML 配置方式
3. 构造器注入(推荐)
- 使用构造函数给成员变量赋值
3.1 注解注入
方式一:通过有参构造注入
@Component
public class UserConfigManager {
private UserConfig userConfig;
public UserConfigManager(UserConfig userConfig) {
this.userConfig = userConfig;
}
}
方式二:有参构造注解注入
@Component
@AllArgsConstructor
public class UserConfigManager {
private UserConfig userConfig;
}
3.2 XML 配置方式
无参构造
有参构造
有参构造 – 指定方法
【信息由网络或者个人提供,如有涉及版权请联系COOY资源网邮箱处理】
© 版权声明
部分内容为互联网分享,若有侵权请联系站长删除。
THE END
暂无评论内容