SpringBoot给类进行赋初值的四种方式
更新时间:2024年08月08日 09:56:55 作者:岳轩子
这篇文章主要介绍了springboot给类进行赋初值的四种方式,并通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
1. 使用@Value和@ConfigurationProperties
这里不加赘述了,前面我也发过,这里就放个链接吧
@Value获取值和@ConfigurationProperties获取值用法及比较(springboot)
2. 使用@PropertySource
创建Person.java
package com.example.springbootdaily2.model; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; import java.util.List; import java.util.Map; @Component @PropertySource(value = "classpath:person.properties") // 这个是前缀的意思 @ConfigurationProperties(prefix = "person2") public class PersonX { private String name; private Character sex; @DateTimeFormat(pattern = "YYYY-MM-SS") private Date birthday; private Integer age; private String address; private Map<String, Integer> maps; private List<String> lists; private Dog dog; public String getName() { return name; } public void setName(String name) { this.name = name; } public Character getSex() { return sex; } public void setSex(Character sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog = dog; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Map<String, Integer> getMaps() { return maps; } public void setMaps(Map<String, Integer> maps) { this.maps = maps; } public List<String> getLists() { return lists; } public void setLists(List<String> lists) { this.lists = lists; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", sex=" + sex + ", birthday=" + birthday + ", age=" + age + ", address='" + address + '\'' + ", maps=" + maps + ", lists=" + lists + ", dog=" + dog + '}'; } }
创建person.properties
person2.name="李四" person2.sex=男 person2.birthday=2022-02-07 person2.age=18 person2.maps.keys1=16 person2.maps.keys2=16 person2.lists=[12,24,57] person2.address="保定廉耻" person2.dog.name=${random.value}
写一个测试类
package com.example.springbootdaily; import com.example.springbootdaily.model.Dog; import com.example.springbootdaily.model.Person; import com.example.springbootdaily.model.Person2; import com.example.springbootdaily.model.PersonX; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest public class SpringTest { @Autowired PersonX personX; @Test public void print4(){ System.out.println(personX); } }
输出结果:
Person{name='"岳轩子"', sex=M, birthday=Sun Dec 26 00:00:00 CST 2021, age=18, address='"保定武汉"', maps={keys2=16, keys1=16}, lists=[[12, 24, 57]], dog=Dog{name='cdab390f55c9f8a6bbb420cd15607add'}}
注:如果显示乱码,设置文件编码为utf-8
3. 使用@ImportResource
Student类
package com.example.springbootdaily.model; public class Student { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
创建beans.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="student" class="com.example.springbootdaily.model.Student"> <property name="name" value="李四"/> <property name="age" value="18"/> </bean> </beans>
在主类中引入
package com.example.springbootdaily; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ImportResource; @SpringBootApplication @ImportResource(locations = "classpath:beans.xml") public class SpringbootDailyApplication { public static void main(String[] args) { SpringApplication.run(SpringbootDailyApplication.class, args); } }
测试
package com.example.springbootdaily; import com.example.springbootdaily.model.*; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest public class SpringTest { @Autowired Student student; @Test public void print5(){ System.out.println(student); } }
运行结果:
Student{name='李四', age=18}
其他
我们可以导入配置文件处理器,以后编写配置就有提示了
<!‐‐导入配置文件处理器,配置文件进行绑定就会有提示‐‐>
依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐configuration‐processor</artifactId> <optional>true</optional> </dependency>
以上就是SpringBoot给类进行赋初值的四种方式的详细内容,更多关于SpringBoot给类进行赋初值的资料请关注脚本之家其它相关文章!
相关文章
解决SpringBoot 测试类无法自动注入@Autowired的问题
这篇文章主要介绍了解决SpringBoot 测试类无法自动注入@Autowired的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-03-03Java中的logback标记日志过滤器MarkerFilter详解
这篇文章主要介绍了Java中的logback标记日志过滤器MarkerFilter详解,在logback-classic中存在一个全局过滤器TurboFilter,TurboFilter是与LoggerContext绑定,会在会在其它过滤器之前执行,需要的朋友可以参考下2023-11-11
最新评论