栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java面试 | 关于资源文件的读取注入问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java面试 | 关于资源文件的读取注入问题

Spring Boot resource相关

之所以选择编写这个博文呢,其实主要是因为今天没事问到了这个问题,嗯……然后我突然就只记得一种了,嗯…比较依赖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 app-properties

在自定义的配置文件中使用@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以及网络了,有些基本的东西还是得记一下的,最后就是对于一些底层的源码看的还是不够仔细,加油加油!宋世一定可以的!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/531856.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号