当前位置: 首页 > wzjs >正文

建设网站需要哪些费用管理咨询公司起名字

建设网站需要哪些费用,管理咨询公司起名字,多城市分站站群cms,vue登录页面模板在 Spring 框架中,Primary 注解用于解决 依赖注入 时的歧义问题。当 Spring 容器中有多个相同类型的 Bean 时,Spring 无法确定应该注入哪一个 Bean。此时,可以通过 Primary 注解来指定优先选择的 Bean。 一、使用场景 多个相同类型的 Bean 如…

在 Spring 框架中,@Primary 注解用于解决 依赖注入 时的歧义问题。当 Spring 容器中有多个相同类型的 Bean 时,Spring 无法确定应该注入哪一个 Bean。此时,可以通过 @Primary 注解来指定优先选择的 Bean。


一、使用场景

  1. 多个相同类型的 Bean
    如果一个接口有多个实现类,并且这些实现类都被注册为 Spring 容器中的 Bean,那么在注入时可能会出现冲突。例如:

    public interface MyService {void execute();
    }@Component
    public class MyServiceImplA implements MyService {@Overridepublic void execute() {System.out.println("Executing A");}
    }@Component
    public class MyServiceImplB implements MyService {@Overridepublic void execute() {System.out.println("Executing B");}
    }
    

    当你尝试注入 MyService 时,Spring 会抛出异常,因为它不知道应该注入 MyServiceImplA 还是 MyServiceImplB

  2. 需要默认选择的 Bean
    在某些情况下,虽然存在多个 Bean,但你希望其中一个作为默认选项。这时可以使用 @Primary 来标记首选的 Bean。


二、如何使用 @Primary

通过在某个 Bean 上添加 @Primary 注解,Spring 会在注入时优先选择这个 Bean。

示例代码

@Component
@Primary
public class MyServiceImplA implements MyService {@Overridepublic void execute() {System.out.println("Executing A (Primary)");}
}@Component
public class MyServiceImplB implements MyService {@Overridepublic void execute() {System.out.println("Executing B");}
}

然后在需要注入的地方:

@Service
public class MyController {private final MyService myService;@Autowiredpublic MyController(MyService myService) {this.myService = myService;}public void performAction() {myService.execute(); // 输出: Executing A (Primary)}
}

在这个例子中,尽管有两个 MyService 的实现类,但由于 MyServiceImplA 被标记为 @Primary,Spring 会优先注入它。


三、@Primary 的作用范围

  • 自动装配(Autowiring)@Primary 主要影响基于类型(byType)的自动装配。
  • 不影响显式指定的 Bean:如果你在注入时明确指定了某个 Bean(例如通过 @Qualifier),那么 @Primary 不会影响注入的结果。

四、和 @Qualifier 的区别

  • @Primary:用于定义默认的首选 Bean,适用于全局范围。
  • @Qualifier:用于明确指定注入的某个特定 Bean,适用于局部范围。

示例对比

@Component
@Primary
public class MyServiceImplA implements MyService {}@Component
public class MyServiceImplB implements MyService {}
  • 使用 @Primary

    @Autowired
    private MyService myService; // 默认注入 MyServiceImplA
    
  • 使用 @Qualifier

    @Autowired
    @Qualifier("myServiceImplB")
    private MyService myService; // 明确注入 MyServiceImplB
    

五、总结

@Primary 是 Spring 中用于解决依赖注入歧义问题的一个注解,主要用于指定默认的首选 Bean。它的主要特点包括:

  1. 解决多个相同类型 Bean 的注入冲突。
  2. 适用于全局范围,默认优先选择被标记为 @Primary 的 Bean。
  3. 可以与 @Qualifier 配合使用,满足更复杂的注入需求。

在实际开发中,合理使用 @Primary@Qualifier 可以让代码更加清晰和灵活。

http://www.dtcms.com/wzjs/554302.html

相关文章:

  • 网站推广公司哪长春网站建设找源晟
  • 跨境电商 网站开发googleseo服务公司
  • 学生作业 制作一个网站网站开发的开题报告引言
  • 无锡网站搜索优化谷歌上怎样做网站
  • 那里有网站建设免费crm网络版
  • 自己做网站怎么修改语言制作图片教程
  • 郑州的建设网站有哪些手续一起做玩具网站
  • 网站改版与优化协议书昆明网站建设案例
  • dw建设网站的代码模板下载网站怎么制作视频
  • 广宗网站建设直播视频网站建设
  • 网页入口网站推广网站结构是体现的
  • 建网站的公司广州排名中国十大软件上市公司排名
  • app展示网站模板建设银行开通网银网站
  • 网站别人做的上面有方正字体网站建设方案 下载
  • 六 网站建设方案.企业官网推广
  • 阿里做网站电商平台怎么推广比较好
  • 未来做哪个网站能致富百度云分享tp响应式网站开发
  • 手机网站开发环境搭建东莞百域网站建设公司
  • 河南睢县筑宇建设网站物流企业网站建设策划书6
  • 途牛旅行网站建设策划书网站一般用什么语言写
  • 香河住房和建设局网站百度seo技术
  • 公司网站开发网页生成应用
  • 槐荫区网站建设九江网站建设求职简历
  • 网站添加 备案wordpress屏蔽ip访问
  • 网站只能用ip访问网站免费企业静态网站模板
  • 黄岛区城市建设局网站wordpress页面地图
  • 做网站的设计尺寸wordpress 采集功能
  • vs2008做html5网站在线文字图片生成器
  • 茂名网站建设wordpress邮箱验证配置
  • 欧美在路边给了钱就可以做网站专做特价手机的网站