SpringBoot获取配置:@Value、@ConfigurationProperties方式
1.SpringBoot的基础2.SpringBoot的@Resource和@Autowired+@Qualifier使用3.SpringBoot配置两个一样的Bean,区分两个配置类——@Primary4.SpringBoot项目预加载数据——ApplicationRunner、CommandLineRunner、InitializingBean 、@PostConstruct区别
5.SpringBoot获取配置:@Value、@ConfigurationProperties方式
6.SpringBoot注入时设置《多例》7.在线程中使用Spring的Bean的方法、不推荐把“线程”注入到Spring8.SpringBoot读取Resources下的文件
配置文件yml
# phantomjs的位置地址 phantomjs: binPath: windows: binPath-win linux: binPath-linux jsPath: windows: jsPath-win linux: jsPath-linux imagePath: windows: imagePath-win linux: imagePath-linux phantomjs2: binPath2: I‘m binPath2 binPath3: I‘m binPath3
一、@Value
1、常规方式
- 注入(需要把类交给spring)
@Data @Component public class PhantomPath { @Value("${phantomjs.binPath.windows}") private String binPathWin; @Value("${phantomjs.jsPath.windows}") private String jsPathWin; @Value("${phantomjs.binPath.linux}") private String binPathLinux; @Value("${phantomjs.jsPath.linux}") private String jsPathLinux; @Value("${phantomjs.imagePath.windows}") private String imagePathWin; @Value("${phantomjs.imagePath.linux}") private String imagePathLinux; //下面可以直接在方法中使用 }
- 使用(可以直接在注入的类中使用)
@Resource private PhantomPath phantomPath; @Test public void test03()throws Exception{ System.out.println(phantomPath.getBinPathWin()); System.out.println(phantomPath.getJsPathWin()); System.out.println(phantomPath.getBinPathLinux()); System.out.println(phantomPath.getJsPathLinux()); System.out.println(phantomPath.getImagePathWin()); System.out.println(phantomPath.getImagePathLinux()); }
- 测试
2、注入到静态属性上
-
解释
不能这样直接注入到静态属性上
这样是获取不到值的
-
注入(需要注入到非静态set方法上,再复制给静态属性)
package com.cc.urlgethtml.utils; import lombok.Data; import lombok.Getter; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** * <p>根据不同系统获取不同路径</p> * * @author CC * @since 2023/11/3 */ @Component public class PhantomPathStatic { public static String binPathWin; public static String jsPathWin; //必须是非静态的set方法 @Value("${phantomjs.binPath.windows}") public void setBinPathWin(String binPathWin) { PhantomPathStatic.binPathWin = binPathWin; } @Value("${phantomjs.jsPath.windows}") public void setJsPathWin( String jsPathWin) { PhantomPathStatic.jsPathWin = jsPathWin; } public static String getBinPathWin() { return binPathWin; } public static String getJsPathWin() { return jsPathWin; } }
- 使用(有两种方式:静态属性方式、get方式)
@Resource private PhantomPathStatic phantomPathStatic; @Test public void test04()throws Exception{ System.out.println(phantomPathStatic.getBinPathWin()); System.out.println(PhantomPathStatic.binPathWin); System.out.println(phantomPathStatic.getJsPathWin()); System.out.println(PhantomPathStatic.jsPathWin); }
- 测试
一、@ConfigurationProperties
1、常规方式
- 注入
@Data @Component @ConfigurationProperties(prefix = "phantomjs2") public class PhantomConPro { private String binPath2; private String binPath3; }
- 使用、测试
2、获取map方式
- 注入
package com.cc.urlgethtml.utils; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.Map; /** * <p></p> * * @author CC * @since 2023/11/7 */ @Data @Component @ConfigurationProperties(prefix = "phantomjs") public class PhantomConProMap { private Map<String, String> binPath; private Map<String, String> jsPath; private Map<String, String> imagePath; }
- 使用、测试
3、注入到静态属性上
- 注入
package com.cc.urlgethtml.utils; import lombok.Data; import lombok.Getter; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.Map; /** * <p></p> * * @author CC * @since 2023/11/7 */ @Component @ConfigurationProperties(prefix = "phantomjs") public class PhantomConProMapStatic { @Getter public static Map<String, String> binPath; @Getter public static Map<String, String> jsPath; @Getter public static Map<String, String> imagePath; //必须是非静态的set方法 public void setBinPath(Map<String, String> binPath) { PhantomConProMapStatic.binPath = binPath; } public void setJsPath(Map<String, String> jsPath) { PhantomConProMapStatic.jsPath = jsPath; } public void setImagePath(Map<String, String> imagePath) { PhantomConProMapStatic.imagePath = imagePath; } }
- 使用、测试(三种使用方式)
三、总结
合集:
SpringBoot基础
分类:
SpringBoot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)