怎么动态给java注解参数赋值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么动态给java注解参数赋值?相关的知识,希望对你有一定的参考价值。
@WebService(name="", targetNamespace=",wsdlLocation="")
比如给上面name targetNamespace wsdlLocation赋值
1.在xml文件中使用<context:property-placeholder location="”/>
这种方式可以读取location指定位置对应的文件,引用的话使用$key可以获取对应的数据
和这种写法相同的还有
<bean class=“com.spring….config.PropertyPlaceholderConfigurer”>
<property name=“locations">
<array><value></value></array>
</property>
<bean>
这种是用bean来加载配置文件,看起来更直观
2.通过@Value注解读取配置
这种方法也需要预先在xml文件中设定好配置文件的位置
<bean id=“prop” class=“org.springframework.beans.factory.config.PropertiesFactoryBean”>
<property name=“locations”>
<array>
<value>classpath:.properties</value>
</array>
</property>
</bean>
之后在java代码里面可以用#prop.key来获取对应的数据prop是bean的名字,key是配置文件的键。
3.使用@PropertySource
在springboot中,可以不需要xml文件来设置配置文件,在需要使用配置文件的类名字前加上
@PropertySource(“locations")就可以读取指定位置的配置,在代码中使用@Value注解可以获取这些数据
@Value(value = “$key”)
4.使用@ConfigurationProperties(prefix=“”)
SpringBoot项目有时候会使用application.yml来存储配置信息,一般情况下这些数据的存储格式是
a:
key1:value1
key2:value2
这种嵌套方式,当然可以多层嵌套
在需要使用配置文件的类上面使用@ConfigurationProperties(prefix=“a”)可以获取a标签下一层所有的配置的键值对。 参考技术A 首先,你没有明白java注解的原理,java注解是元数据,在编译前固定的,因此,不能出现动态,如果你要动态,那么必须在程序中。 参考技术B Java运行时会维护一个String Pool(String池, String常量池, 字符串缓冲区)
String池用来存放运行时中产生的各种字符串,并且池中的字符串的内容不重复。
而一般对象不存在这个缓冲池,并且创建的对象仅仅存在于方法的堆栈区
String s = "accp";
创建s之前系统会先在"池子"中查找是否已经存在这个字符串, 如果存在则直接符号该字符串的句柄
如果不存在, 系统会创建一个新"accp"字符串, 并返回句柄, 以后再有"accp"被要求创建, 系统不会创建新的,而是直接返回已经存在的字符串的句柄
String s = new String("accp");
系统不会去"池子"中查找, 直接在内存中新开辟一块空间, 初始化为"accp",并返回句柄 参考技术C Java运行时会维护一个String Pool(String池, String常量池, 字符串缓冲区)
String池用来存放运行时中产生的各种字符串,并且池中的字符串的内容不重复。
而一般对象不存在这个缓冲池,并且创建的对象仅仅存在于方法的堆栈区
String s = "accp";
创建s之前系统会先在"池子"中查找是否已经存在这个字符串, 如果存在则直接符号该字符串的句柄
如果不存在, 系统会创建一个新"accp"字符串, 并返回句柄, 以后再有"accp"被要求创建, 系统不会创建新的,而是直接返回已经存在的字符串的句柄
String s = new String("accp");
系统不会去"池子"中查找, 直接在内存中新开辟一块空间, 初始化为"accp",并返回句柄 参考技术D 把引号换成变量
以上是关于怎么动态给java注解参数赋值?的主要内容,如果未能解决你的问题,请参考以下文章