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

四川智能网站建设制作网站建设教程asp

四川智能网站建设制作,网站建设教程asp,农产品网站建设方案,小勐拉网站建设前言#xff1a; 我们在进行web开发时#xff0c;基本上一个接口对应一个实现类#xff0c;比如IOrderService接口对应一个OrderServiceImpl实现类#xff0c;给OrderServiceImpl标注Service注解后#xff0c;Spring在启动时就会将其注册成bean进行统一管理。在Co…前言         我们在进行web开发时基本上一个接口对应一个实现类比如IOrderService接口对应一个OrderServiceImpl实现类给OrderServiceImpl标注Service注解后Spring在启动时就会将其注册成bean进行统一管理。在Controller层需要使用到Service层的服务组件时就通过Autowired或Resource等注解标注接口Spring会自动为我们注入接口的实现类。 OrderController RestController RequestMapping(/order) public class OrderController{AutowiredIOrderService orderService;GetMapping({id})public Order getOrder(PathVariable(id) Integer id){return orderService.getOrderById(id);}} OrderServiceImpl Service public class OrderServiceImpl implements IOrderServiceImpl{AutowiredOrderDao orderDao;Overridepublic Order getOrderById(Integer id){if(id ! null)orderDao.getById(id);}} 在IOrderService接口只有一个实现类OrderServiceImpl时这么写当然没有问题。如果我们编写了多个IOrderService接口的实现类在不同场景需要使用不同实现类这么写还能行吗肯定不能 原因Autowired注解注入的方式是by type按类型注入一个接口如果存在多个实现类Spring将不知道应该注入哪个实现类在启动阶段就会报错。 Autowired ​ Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE}) Retention(RetentionPolicy.RUNTIME) Documented public interface Autowired {boolean required() default true; }​ 其中还有一个required属性默认为true表示强制要求Bean实例的注入如果IOC容器不存在对应类型的BeanSpring启动时就会报错。 解决方案 1在使用Service注解配置实现类时声明bean的名称并使用Qualifier注解注入对应的实现类。 OrderServiceImpl1 //指定名称 Service(orderServiceImpl1) public class OrderServiceImpl implements OrderService {Overridepublic String sayHello() {return 实现类1 say Hello;}} OrderServiceImpl2 //指定名称 Service(orderServiceImpl2) public class OrderServiceImpl2 implements OrderService {Overridepublic String sayHello() {return 实现类2 say Hello;} } OrderController RestController RequestMapping(/order) public class OrderController {AutowiredQualifier(orderServiceImpl1)//使用指定名称的bean示例作为实现类OrderService orderService;GetMapping(/test)public String test(){return orderService.sayHello();}} 启动Spring并使用Postman测试接口测试结果 修改Qualifier注解为Qualifier(orderServiceImpl2)重启Spring再次测试接口测试结果 可以看到Spring容器为OrderService接口注入了不同的实现类。 2使用Resource注解。 OrderController RestController RequestMapping(/order) public class OrderController {Resource(name orderServiceImpl2) //指定使用哪一个bean作为实现类OrderService orderService;GetMapping(/test)public String test(){return orderService.sayHello();}} 测试结果 原理Resource注解默认的注入方式是by name按名称注入如果你只是单纯使用Resource注解而不指定其属性那么它默认会匹配字段名。如下 RestController RequestMapping(/order) public class OrderController {//默认匹配bean名称为orderService的bean示例ResourceOrderService orderService;/*默认匹配bean名称为service的bean示例ResourceOrderService service;*/GetMapping(/test)public String test(){return orderService.sayHello();}} 补充如果by name注入失败那么它会通过by type继续尝试注入。当然如果此时存在多个实现类Spring会在启动阶段报错。 报错No qualifying bean of type com.hammajang.springbootdemo.service.OrderService available: expected single matching bean but found 2: orderServiceImpl,orderServiceImpl2 这里意指通过by name没有匹配到bean实例尝试通过by type时匹配到了两个bean实例Spring不知道注入哪个bean实例。 以上就是本文的全部内容如果你有所收获不妨点个赞
http://www.hkea.cn/news/14438585/

相关文章:

  • 网站建设是怎么收费的网站建设选哪个
  • 新站整站排名优化火速公司做ppt素材网站哪个好
  • 怎么做网站外链沁阳网站建设
  • 建设网站需要哪个语言编译器单招网是哪个网站制作公司做的
  • c2c网站建设费用采购销售管理软件
  • 分析公司网站的开发策略免费打广告的平台app
  • 视频网站cms系统app制作公司排行榜
  • 花生壳盒子可以做网站服务器八八网络科技有限公司
  • 阿里巴巴国际网站首页视频怎么做济南优化联系电话
  • 广州网站运营专业乐云seo网页制作怎么把图片放进去
  • 网站设计的主题医院网站建设 中企动力
  • 收费小说网站怎么做wordpress占内存
  • 网站建设与维护试卷 一flow创意博客wordpress主题
  • 天津企业网站开发南宁整合推广公司
  • 做pc端网站服务windows搭建网站
  • 网站设计模板免费下载商业网站开发教程
  • 免费网站如何注册网页制作教程入门讲解
  • 简洁个人博客网站模板泉州网站建设服务
  • 架设网站开发环境提供网站建设公司
  • 淄博网站建设-中国互联中山免备案网站建设
  • 怎么制作网站后台空间 两个网站
  • 网站建设公司平台咨询电话乐山网站制作公司
  • 用vue做多页面网站知页转wordpress
  • 网站注册信息wordpress添加文章列表
  • linux 做网站开封景区网站建设项目方案
  • 个人微网站怎么做htm5网站
  • 松岗做网站价格设计招聘网站
  • ui设计师mike个人网站服务器和域名如何做网站
  • 响应式网站开发原理东莞专业网站推广方式
  • 企业运营管理狼雨seo网站排名查询