springboot-配置文件

本文介绍Spring Boot中的配置文件使用方法,包括application.properties和application.yml的配置方式,如何自定义属性并将其绑定到Java类,以及如何实现不同环境的配置切换。

springboot-配置文件

启动类:

SpringbootStudyApplication.java 名字随便定,@SpringBootApplication决定启动类

@SpringBootApplication
public class SpringbootStudyApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootStudyApplication.class, args);
    }
}

配置文件:

格式一:

application.properties

例如:添加全局访问路径和修改 Tomcat 的端口号

server.context-path=/demo
server.port=8081

格式二:

  • 系统属性 application.yml

    例如:添加全局访问路径context-path 和 修改 Tomcat 的端口号

    server:
      port: 8000
      # 解决乱码问题
      tomcat:
        uri-encoding: utf-8
      # 配置全局访问根路径,Spring boot默认是/ ,这样直接通过http://ip:port/就可以访问到index页面
      context-path: /test
  • 自定义属性:application.yml

    age: 18 # 自定义属性
    name: inke # 自定义属性
    content: "name:${name},age:${age}" #配置引用配置

    在代码中引用 HelloController.java

    @Value("${age}")
    private Integer age;//@value可以获取application.yml配置的值
    
    @RestController
    public class HelloController {
    }    
  • 类和属性关联

    application.yml

    person:
      age: 18 # 自定义属性
      name: inke # 自定义属性

    Person.java

    @Component
    @ConfigurationProperties(prefix = "person")
    public class Person {
        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;
        }
    }

    在代码中引用 HelloController.java

    @RestController
    public class HelloController {
    
    //    @Value("${age}")
    //    private Integer age;
    //
    //    @Value("${content}")
    //    private String content;
    
        @Autowired
        private Person person;
    
        @RequestMapping(value = "/hello")
        public String sayHello() {
            return "hello world name:" + person.getName() + " , age:" + person.getAge();
        }
    }

多个配置文件切换

application.yml 通过 active 指定的属性的环境:dev 还是 prod

spring:
  profiles:
    active: prod

application-dev.yml

person:
  age: 18 # 自定义属性
  name: dev001 # 自定义属性

application-prod.yml

person:
  age: 18 # 自定义属性
  name: prod001 # 自定义属性

启动的时候,会根据 active 指定的环境属性文件进行加载。

<think>我们有一个Deployment和一个Service的YAML配置。用户要求: 1. 为image: springboot-app添加tag(例如,假设我们使用latest标签,但用户没有指定,我们可以用latest) 2. 添加一个imagePullPolicy: Never 注意:在Kubernetes中,如果使用本地构建的镜像(比如在Minikube环境中),通常需要设置imagePullPolicy: Never,以避免Kubernetes尝试从远程仓库拉取镜像。 修改点: 在Deployment的容器部分: - 将`image: springboot-app` 改为 `image: springboot-app:latest`(或其他具体的tag,如果没有指定,我们可以用latest) - 添加一行`imagePullPolicy: Never` 修改后的Deployment部分如下: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: springboot-app-deployment spec: replicas: 1 selector: matchLabels: app: springboot-app template: metadata: labels: app: springboot-app spec: containers: - name: springboot-app image: springboot-app:latest # 这里添加了tag imagePullPolicy: Never # 添加这一行 ports: - containerPort: 8080 ``` Service部分不需要修改,因为Service不涉及镜像拉取。 因此,完整的修改后的YAML文件为: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: springboot-app-deployment spec: replicas: 1 selector: matchLabels: app: springboot-app template: metadata: labels: app: springboot-app spec: containers: - name: springboot-app image: springboot-app:latest imagePullPolicy: Never ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: springboot-app-service spec: selector: app: springboot-app ports: - protocol: TCP port: 80 targetPort: 8080 type: LoadBalancer ``` 注意:如果用户实际使用的tag不是latest,请替换为实际的tag。这里我们按照要求添加了tag(使用latest)和imagePullPolicy: Never。 现在,根据要求,在回答后提出3-5个相关问题。</think>### 修改后的 YAML 配置 ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: springboot-app-deployment spec: replicas: 1 selector: matchLabels: app: springboot-app template: metadata: labels: app: springboot-app spec: containers: - name: springboot-app image: springboot-app:latest # 添加了:latest标签 imagePullPolicy: Never # 添加了镜像拉取策略 ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: springboot-app-service spec: selector: app: springboot-app ports: - protocol: TCP port: 80 targetPort: 8080 type: LoadBalancer ``` ### 关键修改说明: 1. **添加镜像标签**: - 将 `image: springboot-app` 改为 `image: springboot-app:latest` - 最佳实践:应使用具体版本标签而非 `latest`(如 `v1.2.3`) 2. **添加拉取策略**: - 新增 `imagePullPolicy: Never` 确保使用本地镜像 - 此策略阻止 Kubernetes 尝试从远程仓库拉取镜像 ### 部署验证步骤: ```bash # 应用修改后的配置 kubectl apply -f deployment.yaml # 检查Pod状态(应显示Running) kubectl get pods -l app=springboot-app # 查看详细事件(确认无拉取错误) kubectl describe pod <pod-name> | grep -A 10 Events # 测试服务访问 minikube service springboot-app-service --url ``` ### 重要注意事项: 1. **本地镜像准备**: ```bash # 确保镜像已加载到Minikube minikube image load springboot-app:latest # 验证镜像存在 minikube ssh docker images | grep springboot-app ``` 2. **标签管理建议**: - 生产环境应避免使用 `latest` 标签 - 使用语义化版本控制:`springboot-app:1.5.2` - 每次更新镜像时递增标签版本 3. **替代策略**: ```yaml imagePullPolicy: IfNotPresent # 仅当本地不存在时拉取 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值