有没有办法@Component
在给定的字符串和子包中给每个带注释的bean 加上给定的字符串?
说,我们有这个bean,例如:
package com.example.foo;
@Component
class MyBean {}
我希望所有的bean foo
都带有前缀foo
,以便自动(通过组件扫描)生成的bean id是fooMyBean
(首选,大写的’M’)或foo- myBean
(而不是默认的myBean
)。(前缀是在某处定义的字符串,不是从包名称自动派生的。)
另外,我可以通过使用自定义注释(例如)来实现此目的@FooComponent
吗?(怎么样? ;-) )
Spring使用BeanNameGenerator策略来生成Bean名称。特别是,AnnotationBeanNameGenerator是@Component
使用
首字母小写 策略为类生成类的名称的类。
您可以BeanNameGenerator
通过检查传递的来实现自己的策略并应用自定义策略BeanDefinition
。
如果您使用的是Spring
Boot,则可以在SpringApplicationBuilder中完成。
@SpringBootApplication
public class DemoApplication {
public static class CustomGenerator extends AnnotationBeanNameGenerator {
@Override
public String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) {
/**
* access bean annotations or package ...
*/
return super.generateBeanName(definition, registry);
}
}
public static void main(String[] args) {
new SpringApplicationBuilder(DemoApplication.class)
.beanNameGenerator(new CustomGenerator())
.run(args);
}
}
当我使用之类的东西时,它仍然会触发,就像连字符无效一样。我尝试了和
问题内容: 我正在研究一个项目,一个要求是,如果main方法的第二个参数以“ ” 开头(对于Linux),则应将其视为绝对路径(不是问题),但如果它不是以“”开头”,则它应获取该类的 当前工作路径 ,并将其附加给定的参数。 我可以通过几种方式获取类名:,和,等等。 问题是,这只会给我提供存储包的目录-即,如果我有一个存储在“ ”中的类,它将只给我“ ”,而忽略了实际存在的包名称。 有什么建议? 编
问题内容: Java中的String数据类型使我们可以通过codePointCount知道一个字符串中有多少个Unicode字符。以及如何通过codePointAt获取第n个unicode char。我很想知道是否有一个API来获取包含Java中前N个unicode字符的子字符串。 谢谢, 问题答案: 没有一个方法可以一次调用,但可以帮助您完成此操作。
问题内容: 当我使用某种方式时,它仍然会触发,好像连字符无效。我试着和 问题答案: 转义使用应该没问题,但是您也可以尝试将其放在字符类的开头或结尾。这应该为您工作:
使用我发现研究如何在字符串的字符之间插入空格的代码(这里),我修改了结果,但这并没有在“你好”和“世界”之间的空格周围插入额外的空格——你能让我知道我错过了什么吗?还有,L%2是做什么的?谢谢!将结果输出到浏览器是很重要的。
问题内容: Golang的新手,并提出了一个看似简单的问题。如果我在项目根目录的main包中有一个logger(并在中定义),那么该如何在子包(即my )中引用该logger ? 我的目录结构是: main.go logger.go routes \ routes.go … 我认为如果Logger是公共的,它已经可以用于路由了,但是我在中得到了“ undefined:Logger” 。而且,如果我