Spring Boot学习随笔- @SpringBootApplication详解、加载绝对路径配置文件、工厂创建对象(@ConfigurationProperties、@Value)
3.5 @SpringBootApplication详解
这是一个组合注解,就是由多个注解组成。下列注解红框内称为元注解(jdk提供)
@Target:指定注解作用范围 @Retention:指定注解什么时候生效
-
重要注解
@SpringBootConfiguration:自动配置Spring、SpringMVC相关环境
@EnableAutoConfiguration:开启自动配置 自动配置的核心注解 自动与项目中引入第三方技术自动配置其环境 mybatis、redis、es、rabbitmq等第三方技术
@ComponentScan:组件/注解扫描 保证扫描范围下的注解生效,扫描范围:当前包及其子包 -
SpringBoot内嵌的服务器传递参数进行测试
3.6 配置文件拆分以及加载外部配置文件
-
区分测试环境和生产环境
测试环境的配置文件一般命名为:application-dev.yml
生产环境的配置文件一般命名为:application-prod.yml
-
在公共配置环境里去决定激活哪个环境
**application.yml** # 修改内嵌服务器端口号 server: port: 8081 spring: profiles: active: **dev** #**指定dev环境的配置文件生效** -
加载外部配置文件
在设置中,下图的Program arguments填入下列格式 :
- -spring.config.location=D:\Desktop\application-local-prod.yml
等于号右边填绝对路径,即可完成加载。
3.7 创建SpringBoot的第二种创建方式
-
通过module创建
选择需要的依赖
创建好了,.mvc、mvnw、mvnw.cmd 是在linux中运行的。
.gitignore是git设置忽略文件的。HELP.md是介绍的文档。
pom.xml
....... <dependencies> <!--引入web--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--引入test--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <!-- 在打成jar包运行时,必须放入插件配置 注意:没有插件,无法运行打包的项目--> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
第四章、工厂创建对象
4.1 获取基本类型、对象
application.yml # 声明基本属性注入 name: 小陈 age: 23 price: 23.2 maps: "{'asd':'小红','qwe':'大米'}" # 注意:@Value注入 格式要用 #{${"maps"}} birthday: 2012/1/3 15:13:56 # 默认日期格式要写成: yyyy/mm/dd HH:MM:ss lists: jack,xiaoming,mike,abcd # 声明对象方式注入 orders: age: 21 name: "小红"
@ConfigurationProperties(value = "orders") @Component public class User { private String name; private Integer age; get.... set.... }
@Value("${name}") private String name; @Value("${birthday}") private Date birthday; @Value("${lists}") private List<String> lists; @Value("#{${maps}}") private Map<String,String> maps; @RequestMapping("hello1") public String hello1() { System.out.println("name = " + name); System.out.println("birthday = " + birthday); for (String list : lists) { System.out.println("list = " + list); } System.out.println("maps = " + maps); return "hello1"; } @Autowired private User user; @RequestMapping("hello3") public String hello3() { System.out.println("name = " + user.getName()); System.out.println("age = " + user.getAge()); return "hello3"; }
通过这种获取对象的方式,要注意:一定要有set方法。
@ConfigurationProperties(value/prefix = "orders")的参数,value和prefix是一样的
<!--根据@ConfigurationProperties构建元数据--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <!--代表依赖不会被传递,例如子项目继承父项目,不会被传递--> <optional>true</optional> </dependency>
引入这个依赖后,我们在配置文件中输入被@ConfigurationProperties修饰的对象名后,就会有对其成员变量名的提示
下一章:Spring Boot学习随笔- 集成JSP模板(配置视图解析器)、整合Mybatis(@MapperScan注解的使用)
作者:扬眉剑出鞘
出处: https://www.cnblogs.com/eyewink/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY