概述
本文重点介绍 Spring 中的 bean 注入类型。从广义上和历史上看,它支持两种类型的 bean 注入:
1.基于构造函数的 Bean 注入
2.基于 Setter 的 Bean 注入
Spring 提供了各种方法来定义 bean 和配置依赖注入,使用:
XML 配置文件
@Autowired注解
Java 代码(即配置类,只有注解)
在基于 XML 的配置中,这是最古老的方式,我们必须定义和配置所有的 bean。然后 Spring 的容器 Bean Factory 加载这个 XML 并应用配置。Java 注释提供与 XML 文件配置相同的功能。但改用注解,例如@ Autowired、@ Service 、 @ Component等,也更简单。基于 Java 代码的配置类似于 XML 配置。但是使用注解、配置类和方法来配置 Java 代码中的所有内容。
本文将仅关注 Spring 中基于 Java 代码的 bean 注入以进行概念化。我们在下面的代码示例中对此进行了描述。
基于构造函数的Bean 注入
一个类指定一个依赖属性,即另一个类实例,并使用接受参数的构造函数实例化它。
公共 类 HourlyNews {
私人WeatherUpdate 天气更新;
公共 HourlyNews(天气更新更新) {
天气更新 = 更新;
}
// 新闻的其他方法
}
HourlyNews类还提供天气新闻更新。它通过指定对WeatherUpdate接口的依赖来实现良好的、松散耦合的长期合同。
公共 接口 WeatherUpdate {
公共字符串getUpdate () ;
}
LocalWeatherUpdate类实现WeatherUpdate接口并提供本地天气更新:
publicclass LocalWeatherUpdate 实现 WeatherUpdate {
@Override
public String getUpdate () {
return"凉爽多云,22 摄氏度" ;
}
}
在上面的依赖规范之后,我们必须定义我们的 bean 并使用 Java 配置文件AppConfig.java配置 Spring 以进行注入:
@Configurationpublicclass AppConfig {
@Bean
public HourlyNews hourlyNews () {
HourlyNews hourlyNews = new HourlyNews(weatherUpdate());
返回每小时新闻;
}
@Bean
public WeatherUpdate weatherUpdate () {
returnnew LocalWeatherUpdate();
// 或 RestWeatherUpdate()。只需在此处更改类,
// 允许更改注入的类型
}
}
@Configuration注解将其表示为 Spring 的配置类。可以有一个或多个配置类。然后,我们使用@Bean注解为LocalWeatherUpdate和HourlyNews类定义了两个 bean 。请注意 - 在HourlyNews类定义中,我们将依赖项指定为接口WeatherUpdate。但是我们只在配置 bean 时才具体化——在方法中作为LocalWeatherUpdate。
基于Setter 的 Bean 注入
这种技术与构造函数 bean 注入非常相似。除了不使用类构造函数,我们使用 setter 方法进行 bean 注入。所以我们上面的示例代码将大部分保持不变。但是需要做两处改动:一处是在HourlyNews类中,即我们将移除构造函数方法并添加一个默认构造函数和一个 setter 方法。另一个在配置类中。
公共 类 HourlyNews {
私人WeatherUpdate 天气更新;
公共 每小时新闻() {}
公共 无效 setWeatherUpdate ( WeatherUpdate weatherUpdate ) {
this .weatherUpdate = weatherUpdate;
}
// 新闻的其他方法
}
AppConfig.java文件更改:
@Configurationpublicclass AppConfig {
@Bean
public HourlyNews hourlyNews () {
每小时新闻 hourlyNews = new HourlyNews();
hourlyNews.setWeatherUpdate(weatherUpdate());
返回每小时新闻;
}
@Bean
public WeatherUpdate weatherUpdate () {
returnnew LocalWeatherUpdate();
// 或 RestWeatherUpdate()。只需在此处更改类,
// 允许更改注入的类型
}
}
四川电科网安科技有限公司成立于2018年7月26日,立足于公共安全行业应用,是一家专业从事网络与信息安全技术研究,以网络攻防技术产品与反新型网络犯罪为核心的服务型公司;公司依托校企合作模式,充分转化高校科研攻坚技术能力,深化网络攻防技术研究,净化网络空间,用我们的智能信息技术让社会更美好,立志成为公共安全行业最佳智能信息解决方案服务商。
电科网安(UPSEC)秉承“诚信,创新,专注,合作”的发展宗旨,为客户提供专业化的服务。公司成立至今现已拥有发明专利、实用新型专利共32项,软件著作权45项。荣获成都市新经济大数据领军人才、成都市雏鹰梯度培育企业、高新技术企业等称号。截止目前,与公安部以及全国上百家公安单位建立合作关系。团队成员150+,其中90%均为核心技术研发,均来自国内著名高校,曾任职腾讯,阿里,360,奇安信等安全公司。
公司联合电子科技大学公共安全技术研究中心,建立空明安全实验室,御风安全实验室两大研究机构,致力于网络攻防前沿技术研究与探索,砥砺奋进,创新突破,力争成为全球一流的智能信息技术团队。
用我们的智能信息技术让社会更美好
公众号:电科网安
长按二维码关注
原文始发于微信公众号(电科网安):spring中不同类型的的bean注入
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论