怎么动态给java注解参数赋值?

怎么动态给java注解参数赋值?,第1张

动态赋值指的是在配置文件配置好然后在项目中动态读取?如果是这样的话:

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标签下一层所有的配置的键值对。

java中自定义注解的使用方法:

首先声明一个接口,并未它添加注解内容!

package testAnnotation

import java.lang.annotation.Documented

import java.lang.annotation.Retention

import java.lang.annotation.RetentionPolicy

@Documented

@Retention(RetentionPolicy.RUNTIME)

public @interface Person{

String name()

int age()

}

2、然后利用反射机制查看类的注解内容

package testAnnotation

@Person(name="xingoo",age=25)

public class test3 {

public static void print(Class c){

System.out.println(c.getName())

//java.lang.Class的getAnnotation方法,如果有注解,则返回注解。否则返回null

Person person = (Person)c.getAnnotation(Person.class)

if(person != null){

System.out.println("name:"+person.name()+" age:"+person.age())

}else{

System.out.println("person unknown!")

}

}

public static void main(String[] args){

test3.print(test3.class)

}

}

运行结果,读取到了注解的内容

testAnnotation.test3

name:xingoo age:25


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11682936.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存