Properties

■ 关于Properties

组件属性主要包括坐标值,长宽,文本等
可以通过为组件的属性设置Listener, 以此来跟其他组件绑定
比如,当某一组件的某属性值改变时,Listenr会收通知,在Listener执行代码中对其他组件做相应的动作,这样两个组件就绑定在一起了

import javafx.application.Application;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.ReadOnlyDoubleProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

public class PropertyExample extends Application {

  public static void main(String[] args) {
    launch(args);
  }

  public void start(Stage primaryStage) {

    Pane pane = new Pane();

    ReadOnlyDoubleProperty widthProperty = pane.widthProperty();
    widthProperty.addListener( new ChangeListener<Number> (){
      @Override
      public void changed(
        ObservableValue<? extends Number> observableValue,
        Number oldVal, Number newVal) {

          System.out.println("widthProperty changed from "
            + oldVal.doubleValue() + " to " + newVal.doubleValue());
      }
    });


    DoubleProperty prefWidthProperty = pane.prefWidthProperty();
    prefWidthProperty.addListener(
      (ObservableValue<? extends Number> prop,
        Number oldVal, Number newVal) -> {

        System.out.println("prefWidthProperty changed from "
          + oldVal.doubleValue() + " to " + newVal.doubleValue());
    });

    prefWidthProperty.set(123);

    Scene scene = new Scene(pane, 1024, 800, true);
    primaryStage.setScene(scene);
    primaryStage.setTitle("2D Example");

    primaryStage.show();
  }
}
在IT领域中,“properties”通常指的是用于配置和存储应用程序设置的一种机制,尤其是在Java生态系统中。它们广泛应用于各种框架和技术栈中,用来管理外部化配置数据。 ### Properties 文件的基础知识 Properties文件是一种简单的键值对形式的数据存储方式,在Java平台下尤为常见。这些文件一般具有`.properties`扩展名,并且遵循特定的格式规则: - 键值对之间使用等号 `=` 或者冒号 `:` 分隔; - 可以通过井号 `#` 添加注释; - 支持 Unicode 字符集编码,常采用 ISO 8859-1 编码标准; 例如一个基本的 properties 文件可能看起来像这样: ```properties app.name=MyApplication app.version=1.0.0 database.url=jdbc:mysql://localhost:3306/mydb ``` #### 组织结构 为了便于管理和维护大型项目中的多个配置项,建议采取以下几种策略来组织 properties 文件: - **按功能/模块划分**:为每一个主要的功能区域创建单独的属性文件,比如数据库连接参数放在 `database.properties` 中,而邮件服务相关的设定则保存至 `email-service.properties`。 - **命名空间设计**:即使不拆分成多个物理文件,也可以通过对相似用途但属于不同组件的条目加上前缀的方式模拟逻辑上的隔离效果。如 `payment.gateway.apiKey` 和 `notification.sms.providerApiKey` 这样的模式可以帮助避免潜在的名字冲突问题 [^2]。 - **标准化书写规范**:制定统一的命名约定(全小写加点分隔)、保持一致性是非常重要的实践之一。此外还应该注意缩进美观以及适当加入说明文字帮助其他同事理解每一条记录的意义所在 [^2]。 ### Java 应用程序里读取 Properties 的方法 利用 Java 自带的标准库即可轻松完成对 `.properties` 类型文档的操作任务。下面展示了一个典型的例子演示如何加载并访问其中的内容: ```java import java.io.InputStream; import java.util.Properties; public class PropertyReader { public static void main(String[] args) throws Exception { InputStream input = null; try { String filename = "config.properties"; input = PropertyReader.class.getClassLoader().getResourceAsStream(filename); if(input == null){ System.out.println("Sorry, unable to find " + filename); return; } Properties prop = new Properties(); prop.load(input); // get the property value and print it out System.out.println(prop.getProperty("app.name")); System.out.println(prop.getProperty("app.version")); } finally{ if(input!=null){ input.close(); } } } } ``` 这段代码首先尝试从类路径下的资源目录获取名为 `config.properties` 的输入流对象,接着调用了 `load()` 方法将其内容解析到内存里的 `Properties` 实例当中去。之后就可以随意查询任意给定关键字所对应的字符串数值啦! ### Spring Boot 对 Configuration Properties 的处理能力增强 随着微服务架构日益普及,传统意义上的硬编码式的静态变量已经难以满足复杂业务需求的变化速度了。为此,Spring Framework 提供了一系列高级抽象层使得我们可以更加灵活高效地操控运行时刻的行为表现——特别是当涉及到大量可变因素的时候更是如此重要不可忽视的存在价值体现之处 [^3]。 具体而言,《Spring Boot》不仅允许我们直接注入原始类型的简单量度指标(布尔标志开关、整数计数器等等),还能自动绑定整个 POJO 结构体实例呢!只需几个额外依赖包配合少量样板代码就能让原本散落在各处的手动初始化过程变得异常简洁明快起来。 假设现在有一个专门负责控制台日志输出级别的定制 Bean 定义如下所示: ```java @ConfigurationProperties(prefix="logging.console") @Component @Data @NoArgsConstructor @AllArgsConstructor @Builder public class ConsoleLoggerConfig implements Serializable { private boolean enabled; /** * Level can be TRACE, DEBUG, INFO, WARN or ERROR. */ private String level; } // application.yml snippet logging: console: enabled: true level: info ``` 这里借助了 Lombok 插件自动生成 getter/setter 等冗余模板语句从而大幅削减源码体积的同时也提升了整体可读性能。一旦激活该 bean 后续任何地方都可以安全无虞地享用这份预设好的全局状态信息咯~ ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值