本文共 1347 字,大约阅读时间需要 4 分钟。
Spring专题
Spring Java配置要点
Spring的核心配置是 @Configuration类,这是我们放置所有Spring上下文属性的地方。通常的元注解如下:
@Component
普通组件类型
@Repository
持久层
@Service
服务层
@Component
表现层
组件的扫描
在对我们的类进行元注解以后,我们现在需要将它们加入到Spring上下文,这是使用 @Configuration class by @ComponentScan
@Configuration
@ComponentScan("my.package.containing.beans")
public class SpringConfig {
}
使用字符串文字代表的包名 - 很容易犯错误是很难找到。这是必须注意的,好在可以使用basePackageClasses 参数来替代,如下:
@Configuration
@ComponentScan(basePackageClasses = BeansPackageMarker.class,
includeFilters = @ComponentScan.Filter(ConventionSucks.class))
public class SpringConfig {
}
这里@ComponentScan 拓展了使用我们自己定制的元注解@ConventionSucks
ANNOTATION
以给定的元注解标注
ASSIGNABLE_TYPE
分配给给定的类型
ASPECTJ
AspectJ 类型
REGEX
Wiring beans
现在我们已经配置Spring如何能够识别我们的bean, 下面是如何实现依赖注入,分两种情况:
1. 由我们创建的bean
2.外部的bean
第一种情况使用@Autowired , 能够在构造器 字段 方法等使用。
@Component
public class UserBeanB {
private final UserBeanA userBeanA;
@Autowired
public UserBeanB(UserBeanA userBeanA) {
this.userBeanA = userBeanA;
}
}
当然我们也可以使用@Inject 替代@Autowired
对于外部bean,我们无法控制的类,比如在外部的框架或库包内:
@Configuration
public class SpringConfig {
@Bean
public ExternalObjectA externalObjectA() {
return new ExternalObjectA();
}
@Bean
public ExternalObjectB externalObjectB1() {
return new ExternalObjectB(externalObjectA());
}
@Bean
public ExternalObjectB externalObjectB2() {
return new ExternalObjectB(externalObjectA());
}
}
转载地址:https://blog.csdn.net/weixin_32473663/article/details/114480487 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!