之所以选择编写这个博文呢,其实主要是因为今天没事问到了这个问题,嗯……然后我突然就只记得一种了,嗯…比较依赖idea v_v,还是得记记才行。
一、 @Value注入 application.properties
application.properties
username=zhangsan flag=true
示例代码
@Component
public class AppConfig {
@Value("${username}")
private String username;
@Value("${flag}")
private boolean flag;
public void doInvoke(){
System.out.println("username,"+username+",flag"+flag);
}
}
测试代码
@SpringBootTest
class SpringBootResourceApplicationTests {
@Autowired
private AppConfig appConfig;
@Test
void contextLoads() {
appConfig.doInvoke();
}
}
运行截图
在自定义的配置文件中使用@Value这个注解
示例代码
@Data
@PropertySource("classpath:app-config.properties")
@Component
public class AppProperties {
@Value("${age}")
private Integer age;
@Value("${flag}")
private boolean flag;
public void doInvoke(){
System.out.println("age="+age+", flag="+true);
}
}
测试代码
@Autowired
private AppProperties appProperties;
@Test
void testValueWithAppProperties(){
appProperties.doInvoke();
}
运行结果
app.pay.id=10000 app.pay.name=zhangsan app.exchange.total=20000 app.exchange.money=1000
示例代码
@PropertySource("classpath:app-config.properties")
@ConfigurationProperties(prefix = "app")
@Component
@Data
public class AppPropertiesWithClass {
private Pay pay=new Pay();
private Exchange exchange=new Exchange();
@Getter
@Setter
public static class Pay{
private Integer id;
private String name;
}
@Getter
@Setter
public static class Exchange{
private Integer total;
private String money;
}
}
测试代码
@SpringBootTest
class SpringBootResourceApplicationTestsWithClass {
@Autowired
private AppPropertiesWithClass appPropertiesWithClass;
@Test
void testInjectWithClass(){
System.out.println("exchange.total===>"+appPropertiesWithClass.getExchange().getTotal());
System.out.println("exchange.money===>"+appPropertiesWithClass.getExchange().getMoney());
System.out.println("pay.id===>"+appPropertiesWithClass.getPay().getId());
System.out.println("pay.name===>"+appPropertiesWithClass.getPay().getName());
}
}
截图总结:
以上两种是公司常用的从配置文件中读取数据并注入数据的形式,
当需要注入的东西比较少的时候可以采用第一种,当需要注入的东西比较有规律有结构可以采取第二种。
关于面试我想说
其实第一次面试总的来说还是挺失败的,问的东西也比较基础但是基本上都没答好,而且自己会的东西也没有能够很好的展现出来,然后开头的自我介绍问题挺大的,我原先以为面试官已经有简历了我就可以不用重新说一遍,但是我发现我错了,这直接导致后面面试官无从问起,也导致我会的一些模块也没来得及说,比如之前登录做的两个token啊 微信支付 支付宝支付 啊Spring Security进行后端权限管理啊 八张表啊…好多东西都没机会说,因为刚开始已经给了面试官那样的感觉。再有的话我觉得我还是太依赖idea以及网络了,有些基本的东西还是得记一下的,最后就是对于一些底层的源码看的还是不够仔细,加油加油!宋世一定可以的!!!



