Spring5如何使用JSR 330标准注解
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,小编给大家分享一下Spring5如何使用JSR 330标准注解,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!之前的文章我们
千家信息网最后更新 2025年01月17日Spring5如何使用JSR 330标准注解
@Inject 和 @Named
@Named 和 @ManagedBean
小编给大家分享一下Spring5如何使用JSR 330标准注解,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
之前的文章我们有讲过,从Spring3.0之后,除了Spring自带的注解,我们也可以使用JSR330的标准注解。不过需要加入maven依赖如下:
javax.inject javax.inject 1
下面是标准注解和Spring注解的区别:
Spring | javax.inject.* | javax.inject限制/描述 |
---|---|---|
@Autowired | @Inject | @Inject没有required属性,可以使用Java8的Optional代替 |
@Component | @Named / @ManagedBean | JSR-330没有提供组合模式,只有一种方式来标记命名组件 |
@Scope("singleton") | @Singleton | JSR-330默认范围类似Spring的prototype,但是为了和Spring的默认值保持一致,在Spring中定义的JSR-330 bean默认是singleton。如果要使用其他的作用范围,那么需要使用Spring的@Scope注解。javax.inject也提供了一个@Scope注解。但是这个注解仅用来创建你自己的注解。 |
@Qualifier | @Qualifier / @Named | javax.inject.Qualifier只是一个用来构建自定义Qualifier的元注解。具体的字符串限定符(如带value的Spring的@Qualifier)可以通过javax.inject.Named关联。 |
@Value | - | 没有相同功能 |
@Required | - | 没有相同功能 |
@Lazy | - | 没有相同功能 |
ObjectFactory | Provider | javax.inject.Provider是Spring的ObjectFactory的直接替代品,它只使用了较短的get()方法名。它还可以与Spring的@Autowired结合使用,或者与无注解的构造函数和setter方法结合使用。 |
下面我们分别来介绍。
@Inject 和 @Named
@Inject可以用来替换@Autowired:
public class SimpleMovieLister { private MovieFinder movieFinder; @Inject public void setMovieFinder(MovieFinder movieFinder) { this.movieFinder = movieFinder; } public void listMovies() { this.movieFinder.findMovies(); }}
与@Autowired一样,你可以在字段级、方法级和构造函数参数级使用@Inject。此外,可以将注入点声明为Provider,允许通过Provider.get() 调用按需访问较短作用域的bean或延迟访问其他bean。下面是Provider的例子:
public class SimpleMovieProviderLister { private ProvidermovieFinder; @Inject public void setMovieFinder(Provider movieFinder) { this.movieFinder = movieFinder; } public void listMovies() { this.movieFinder.get().findMovies(); }}
可以使用@Named注解来为注入的参数限定名字:
@Inject public void setMovieFinderNamed(@Named("main") MovieFinder movieFinder) { this.movieFinder = movieFinder; }
与@Autowired一样,@Inject也可以与java.util.Optional或@Nullable一起使用。下面是例子:
@Inject public void setMovieFinder(OptionalmovieFinder) { } @Inject public void setMovieFinder(@Nullable MovieFinder movieFinder) { }
@Named 和 @ManagedBean
除了使用@Component,你也可以使用@javax.inject.Named 或者 javax.annotation.ManagedBean,如下:
@Named("movieListener") // @ManagedBean("movieListener") could be used as wellpublic class SimpleMovieNamedLister { private MovieFinder movieFinder; @Inject public void setMovieFinder(MovieFinder movieFinder) { this.movieFinder = movieFinder; }}
以上是"Spring5如何使用JSR 330标准注解"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
注解
标准
相同
功能
方法
篇文章
作用
例子
内容
函数
参数
范围
一致
不怎么
只是
只有
可以通过
名字
大部分
字段
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
幻塔除了九游还有什么服务器
公司网络安全工程师属于哪个部门
守望先锋第四赛季服务器在哪里
哪里服务器租用
云主机就是云服务器吗
无网络安全模式杀毒
服务器外包行业
i5 8400做软件开发
嵌入式底层软件开发实训报告
东营软件开发培训班
软件开发有什么要求吗
小海网络安全工程师
上传文件到ftp服务器
惠普服务器
宝山区数据软件开发代理品牌
不常见的网络安全问题
网络安全运维电子书
天府新区国际网络安全
南京app软件开发服务费
数据库分享讲座
网络安全工作考核制度
网络科技创新与互联网发展
金蝶k3数据库实体后缀
数据库技术与
华中科技大学网络安全专家
和平精英换服务器要多久
web服务器默认的工作方式是
阜阳润泽软件开发有限公司
怎样共享服务器
计算机网络技术第二版安淑芝