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

给网站做排名优化学什么好网站设计中遇到的问题

给网站做排名优化学什么好,网站设计中遇到的问题,企业文化 设计 咨询,wordpress表格制作最近在项目中遇到两种情况#xff0c;准备写个博客记录一下。 情况说明#xff1a;Service层一个接口是否可以存在多个具体实现#xff0c;此时应该如何调用Service#xff08;的具体实现#xff09;#xff1f; 其实之前的项目中也遇到过这种情况#xff0c;只不过我采…最近在项目中遇到两种情况准备写个博客记录一下。 情况说明Service层一个接口是否可以存在多个具体实现此时应该如何调用Service的具体实现 其实之前的项目中也遇到过这种情况只不过我采用的方式是新建了一个Service接口然后拆分两个实现类让两个实现类分别实现两个不同的接口然后在Controller中分别注入两个Service。最近项目中又遇到了这种情况于是简单研究了一下一个Service确实是可以有多个实现的以下介绍4种区分实现类的方式。 以下代码本人均已测试并对一些情况做了补充欢迎继续补充。 文章目录 实现方式1 直接使用实现类类名来区分方式2Qualifier注解方式3设置主实现类方式4使用Resource注解 总结致谢 实现 方式1 直接使用实现类类名来区分 我在以下代码中直接创建一个接口AaaService然后让BbbServiceImpl和CccServiceImpl分别来实现AaaService且BbbServiceImpl和CccServiceImpl注册为Service。 public interface AaaService {String say(); }Service public class BbbServiceImpl implements AaaService {Overridepublic String say() {System.out.println(我是BBB);return 我是BBB;} }Service public class CccServiceImpl implements AaaService {Overridepublic String say() {System.out.println(我是CCC);return 我是CCC;} }以上代码AAA就有了两个Service实现类尽管我没有遵循一些明明规则但是BBB与CCC确实是AAA的实现类且它们三个都是Service层的组件接下来我在Controller中注入这两个组件。 RestController RequestMapping(/test) public class TestController {Autowiredprivate AaaService bbbServiceImpl;Autowiredprivate AaaService cccServiceImpl;GetMapping(/b)public String BBB(){return bbbServiceImpl.say();}GetMapping(/c)public String CCC(){return cccServiceImpl.say();}}这时候我们启动项目通过浏览器分别访问/test/b与/test/c地址情况如下 /test/b我是BBB且后端控制台也输出我是BBB/test/c我是CCC且后端控制台也输出我是CCC 因此我们确实在Controller层同时注入了一个Service的两个实现类。 方式2Qualifier注解 通常情况下如果注入的B与C的变量名没有遵循与实现类同名小驼峰的命名方式的话项目会启动失败并且报错如下 Action:Consider marking one of the beans as Primary, updating the consumer to accept multiple beans, or using Qualifier to identify the bean that should be consumed表现如下 这是在提示我们使用Qualifier注解来区分两个实现类使用方式一也是可以的。在一些情况下我们虽然一个Service有多个实现类但是我们依旧想用最传统的方式也就是接口名小驼峰的方式来作为它的实现类来使用但是很明显像是下面这段代码在该情况下是不能生效的因为我们并没有一个叫AaaService的实现类。 RestController public class TestController {Autowiredprivate AaaService aaaService; }上面这段代码运行起来之后就会报我们上面说到的报错该如何解决呢只需要在Autowired上面加上一个注解就可以写法如下 RestController public class TestController {Qualifier(bbbServiceImpl)Autowiredprivate AaaService aaaService; }注意注解中写的内容必须是该Service接口的某个实现类的小驼峰名称。 这样一来我们就在该Controller中注入了BbbServiceImpl只不过它的名称是aaaService在后续使用中我们调用的也是BbbServiceImpl种的方法。 方式3设置主实现类 通过以上两种方式我们已经可以实现自由的选择我们具体要注入的是哪一个实现类但是如果业务中有这样的一个场景我默认下只使用A实现类BC实现类是我在特殊情况下才去使用的。在这种情况下我希望能有一种“默认”机制的出现该如何实现呢请看以下代码: public interface AaaService {// ... }Service Primary // 注意这一个注解 public interface BbbServiceImpl implements AaaService {// Aaa的实现 ... }Service public interface CccServiceImpl implements AaaService {// Aaa的实现 ... }在以上代码中由于B实现上面有一个Primary注解因此该实现类会被当做是A接口的主要实现类这时候我若是未指明具体使用的是哪一个实现类就不会报错啦就会默认用的是B实现类。 这时候又出现了一个小问题如果这时候我想用C该怎么办呢换种方式问一下命名这个东西是随便写的如果我们恰巧如方式1中所说的我变量名命名成了cccServiceImpl它注入的是B还是C呢答案揭晓是B。在此种情况下用命名来区分实现类的方式已经失效了要是想使用其他的实现类只能使用方式二中的Qualifier注解来区分。 方式4使用Resource注解 正如方式3中所说我们设置了Primary之后已经无法通过Autowired注解去控制注入哪个实现类了但是有没有一种方法还是可以用名称去选择呢当然可以那就是Resource注解。 因为Resource注解默认使用名称进行依赖注入所以情况3中的代码不变我们对Controller做如下修改 RestController public class TestController {ResourceAaaService cccServiceImpl;GetMapping(/test)public String test() {return cccServiceImpl.say();}}在以上代码中虽然我们已经对AaaService设置了默认实现类BbbServiceImpl但是使用Resource注解注入了名称为cccServiceImpl的实现这时候访问/test得到的字符串依旧是我是CCC。 总结 结论一个Service可以有多个实现且我们可以手动选择具体使用的哪个实现使用Autowired且没有做过多操作如设置默认实现的情况下我们可以使用注入的变量名称一定是小驼峰的方式选择变量名也可以在Autowired上面添加Qualifier(实现类的小驼峰)的方式来选择具体实现类。我们可以在接口实现类上写上Primary注解来认证该实现类为主实现类在该情况下如果不特意指定是哪个实现类则一律认为是默认实现类。当指定了默认实现类之后使用Autowired小驼峰名称的注入方式已经无法指定特定实现类只能使用Qualifier(“实现类的小驼峰”)Autowired或Resource 小驼峰命名的方式进行区分。 致谢 感谢 [CSDN | springboot中一个service接口多个实现类如何注入] 感谢 [稀土掘金 | spring接口多实现类选择性注入的4种解决方案]
http://www.zqtcl.cn/news/45347/

相关文章:

  • 58做二手车网站应该怎么推广做阿里国际网站要收费吗
  • 网站手机端排名软件物流如何做网站
  • 深圳网站建设公司 交通网页制作网站开发流程
  • 网站建设 实训网站成功案例怎么做
  • c 怎么做网站天津网站建设方案
  • go做后端的网站logo在线设计生成
  • 做视频开头的网站wordpress hook机制
  • 网站开发证协会秘书处工作建设 网站
  • 河北省住房和城乡建设局网站html网站开发语言
  • 网站开发得多少钱邢台网站关键词优化
  • 建立网站的链接结构有哪几种形式?简述其各自的优缺点公众号排版怎么做
  • 免费网站中文源码下载百度app下载最新版
  • google网站提交入口少儿编程机构
  • 网站建设报价选兴田德润wordpress评论显示ua
  • 二级学院网站建设自评报告做静态网站怎样让图片自己切换
  • 济南网站优化培训成都网站制作scgckj
  • 北京团建网站个人信息管理系统
  • 怎么给网站做超链接网站建设验收报告范本
  • 把excel做数据库分享成网站王野虓
  • 网站规划建设案例百度爱采购网站
  • 高端网站教建设装修平台网站
  • 佛山网站建设锐艺传播做网站买好域名怎么办
  • 如何进入设计公司网站桂林旅游网页设计
  • 简单电子商务网站建设wordpress路由
  • 五大门户网站分别是lamp网站建设
  • 本地佛山企业网站建设电子商务网站建设认识
  • 有投标功能的网站怎么做类似美团的网站建设
  • wordpress能大网站主题如何在网站后台备份数据库表
  • 建一个个人网站多少钱创造与魔法官网站_一起做喜欢的事
  • 网站建设公司 - 百度牡丹江建设银行网站