【SpringBoot】【1】解决不同包结构下,同样的类名冲突的问题

前言:

问题来源:参考博客的博主的情况是合并项目导致的冲突,我是不同的人写代码,命名重复了,改名又不好改(采取的改名方案是一方的代码加个前缀单词,看着挺累赘的)

报错原因:spring提供两种beanName生成策略,基于注解的sprong-boot默认使用的是AnnotationBeanNameGenerator,它生成beanName的策略就是,取当前类名(不是全限定类名)作为beanName。由此,如果出现不同包结构下同样的类名称,肯定会出现冲突。

正文:

1,自己写一个类实现 org.springframework.beans.factory.support.BeanNameGeneraot接口,实现全限定类名

public class UniqueNameGenerator extends AnnotationBeanNameGenerator {

    @Override
    public String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) {
        //全限定类名
        String beanName = definition.getBeanClassName();
        return beanName;
    }
}

2. 在启动类上加注解@ComponentScan(nameGenerator = UniqueNameGenerator.class)使刚才我们自定义的BeanName生成策略生效。

@SpringBootApplication
@ComponentScan(nameGenerator = UniqueNameGenerator.class)
public class BeanNameConflictApplication {

    public static void main(String[] args) {
        SpringApplication.run(BeanNameConflictApplication.class, args);
    }
}

参考博客:

谈谈spring-boot导致服务启动失败解决方案 - 流水无双 - 博客园
https://www.cnblogs.com/bedlimate/p/8660839.html

原文地址:https://www.cnblogs.com/huashengweilong/p/10947238.html

时间: 2024-10-16 15:56:52

【SpringBoot】【1】解决不同包结构下,同样的类名冲突的问题的相关文章

Node.js入门:包结构

JavaScript缺少包结构.CommonJS致力于改变这种现状,于是定义了包的结构规范(http://wiki.commonjs.org/wiki/Packages/1.0 ).而NPM的出现则是为了在CommonJS规范的基础上,实现解决包的安装卸载,依赖管理,版本管理等问题.require的查找机制明了之后,我们来看一下包的细节. 一个符合CommonJS规范的包应该是如下这种结构: 一个package.json文件应该存在于包顶级目录下 二进制文件应该包含在bin目录下. JavaSc

10.python网络编程(解决粘包问题 part 2)

一.什么时候会产生粘包现象. 只有在使用tcp协议的情况下才会产生粘包现象!udp协议永远不会! 发送端可以1k1k的把数据发送出去,接收端,可以2k2k的的去接收数据,一次可能会接收3k,也有可能1次接收6k. TCP协议是面向流的协议,这也是容易出现粘包问题的原因.而UDP是面向消息的协议,每个UDP段都是一条消息,应用程序必须以消息为单位提取数据,不能一次提取任意字节的数据,这一点和TCP是很不同的.怎样定义消息呢?可以认为对方一次性write/send的数据为一个消息,需要明白的是当对方

Http 调用netty 服务,服务调用客户端,伪同步响应.ProtoBuf 解决粘包,半包问题.

实际情况是: 公司需要开发一个接口给新产品使用,需求如下 1.有一款硬件设备,客户用usb接上电脑就可以,但是此设备功能比较单一,所以开发一个服务器程序,辅助此设备业务功能 2.解决方案,使用Socket调用此设备 3.增强此设备功能,增加Socket客户端连接到Socket服务端 4.Http请求,同步响应 测试注意: 1.nettyServer 在ubuntu下编码,使用Epoll 2.Http请求的测试最好运行再Linux 下进行,因为Windows 可能会因为并发高的时候占满端口限制,H

springboot项目打jar包

首先用eclips打包未遂, 第一次,export-java-JAR file,好像是打的包太大了,把所有的Lib都打进去了,而且还报错,找不到主方法. 第二次,也是同样的方式,只是把除了src的内容,都去掉了,打成的包与目标大小相近,但是依然找不到主方法. 具体的形容词忘记了,差不多是这么个表述. 之后用IDEA打包, 别人告诉我要用插件,我发现没有那个插件,于是我打开pom看了一下 <!--解决springboot项目打jar包运行时找不到main方法方案--> <plugin>

TCP/IP数据包结构具体解释

[关键词] TCP IP 数据包 结构 具体解释 网络 协议 一般来说,网络编程我们仅仅须要调用一些封装好的函数或者组件就能完毕大部分的工作,可是一些特殊的情况下,就须要深入的理解 网络数据包的结构,以及协议分析.如:网络监控,故障排查等-- IP包是不安全的,可是它是互联网的基础,在各方面都有广泛的应用.由IP协议衍生的协议族有10数种(据我所知),以后还会出现 很多其它的基于IP的协议- 先从实际出发吧! 一般我们在谈上网速度的时候,专业上用带宽来描写叙述,事实上不管说网速或者带宽都是不准确

用readn与written实现解决粘包问题

总结一些我们在平时使用vim编辑器的一些实用功能,后续会一直更新. 1.  visual插件 visual插件其实相当于一个书签作用,比如我们在一篇很长的源代码文件中,我们可以标记一行,然后后来我们再想回到这一行时,只需要一个快捷键就能迅速定位到这一行,非常方便,不用不停地往上或往下翻. 1.1  常用命令 1.  mm标记一个标签: 2.  F2回到被标记的那一行: 3.  连续按两次mm就可以取消标签: 4.  shift+F2可以在几个标签来回切换: 2.  emmet.vim插件 emm

Maven 解决JAR包冲突

在JAR 冲突的情况下, 利用Eclipse方式解决JAR包冲突时比较方便简洁的,步骤如下 1. 在Eclipse 中打开pom.xml , 选择  “Dependency  Hierarchy” 2, 在Filter 输入框中,输入冲突的jar,  比如: slf4j 3. 右边会显示所有依赖此包的JAR包 4.  如果你需要排除 冲突, 可以右键单击: 选择  exclude Maven artifact... 进行以上操作后, MAVEN 的依赖关系如下(举列如下:) 排除前: <depe

sbt发布assembly解决jar包冲突问题 deduplicate: different file contents found in the following

一.问题定义 最近在用sbt打assembly包时出现问题,在package的时候,发生jar包冲突/文件冲突问题,两个相同的class来自不同的jar包在classpath内引起冲突. 具体是:我有一个self4j的jar, 还有一个hadoop-common-hdfs的jar包,其中hadoop-common-hdfs.jar内包含了self4j这个jar包,导致冲突. 此类异常一般是由于打包不规范和打包疏忽引起的. (个人认为正确的打包策略是:只打包自己核心功能,不将依赖打包在一起,但是有

YbSoftwareFactory 代码生成插件【十八】:树形结构下的查询排序的数据库设计

树形结构的排序在中国特色下十分普遍也非常重要,例如常说的五大班子,党委>人大>政府>政协>纪委,每个班子下还有部门,岗位,人员,最终排列的顺序通常需要按权力大小.重要性等进行排列,顺序排列不好可是重大的罪过,领导很生气,后果很严重.这种排序方式本质上就是典型的树形结构深度排序,但在数据库中很难直接通过SQL语句简单高效地进行处理,更不用说还要支持不同类型数据库了. 当前解决此类问题,主要有两种方法. 1. 排序码方式 原理:在每个树形节点上均设置一个排序码,排序码通常是一个字符串并