spring中不同类型的的bean注入

admin 2024年9月19日16:07:37评论15 views字数 2509阅读8分21秒阅读模式

概述

spring中不同类型的的bean注入

本文重点介绍 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 注入

spring中不同类型的的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 注入

spring中不同类型的的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()。只需在此处更改类,

// 允许更改注入的类型

    }

}

spring中不同类型的的bean注入
END

公司介绍

四川电科网安科技有限公司成立于2018年7月26日,立足于公共安全行业应用,是一家专业从事网络与信息安全技术研究,以网络攻防技术产品与反新型网络犯罪为核心的服务型公司;公司依托校企合作模式,充分转化高校科研攻坚技术能力,深化网络攻防技术研究,净化网络空间,用我们的智能信息技术让社会更美好,立志成为公共安全行业最佳智能信息解决方案服务商

电科网安(UPSEC)秉承“诚信,创新,专注,合作”的发展宗旨,为客户提供专业化的服务。公司成立至今现已拥有发明专利、实用新型专利共32项,软件著作权45项。荣获成都市新经济大数据领军人才、成都市雏鹰梯度培育企业、高新技术企业等称号。截止目前,与公安部以及全国上百家公安单位建立合作关系。团队成员150+,其中90%均为核心技术研发,均来自国内著名高校,曾任职腾讯,阿里,360,奇安信等安全公司。

公司联合电子科技大学公共安全技术研究中心,建立空明安全实验室,御风安全实验室两大研究机构,致力于网络攻防前沿技术研究与探索,砥砺奋进,创新突破,力争成为全球一流的智能信息技术团队

spring中不同类型的的bean注入

用我们的智能信息技术让社会更美好

spring中不同类型的的bean注入

公众号:电科网安

长按二维码关注

分享收藏点赞在看

原文始发于微信公众号(电科网安):spring中不同类型的的bean注入

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月19日16:07:37
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   spring中不同类型的的bean注入https://cn-sec.com/archives/3170071.html

发表评论

匿名网友 填写信息