发布项目时不要只替换一个class类

web 项目里面经常会定义一些常量的接口,类,方便开发引用。在维护工作中,如果修该了这个常量值Constant类,发布过程中只替换Constant类,你会发现引用类中的值根本没有改掉。

例:定义一个常量类Constant 定义了两个基本常量。

public class Constant {
  public final static int Max_size = 120;
  public final static String xxSQL="select *From SCOTT;";

}
写个调用类:

public class Client {
 public static void main(String[] args ){
   System.out.println("引用基本类型常量:"+Constant.Max_size);
  System.out.println("引用String类型常量:"+Constant.xxSQL); }

}

结果大家都知道:

引用基本类型常量:120
引用String类型常量:select *From SCOTT;

 

如果你用反编译工具打开Client.class的内容你就会发现,它的内容是这样的:

public class Client
{

 public Client()
 {
 }

 public static void main(String args[])
 {
  System.out.println("引用基本类型常量:120");
  System.out.println("引用String类型常量:select *From SCOTT;");
 }
}

我操,居然没有引用到Constant的变量,而是把他们的值。

总结:

对于final 修饰基本类型和String类型的,我们的智能IDE编译器会认为它是稳定态的,所以在编译器是就直接放值编译到了字节码中了,避免了运行期的引用,提高效率。

维护工作中如果咱们只对类似Constant类的重新发布,结果显然易见就是--莫名其妙被坑了...

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 安装JDK 首先需要安装JDK,可以在Oracle官网或者OpenJDK官网下载对应系统的JDK安装包。下载完成后,按照安装向导进行安装。 2. 安装Maven Maven是一个项目管理工具,可以用于构建、打包、发布和管理Java项目。可以在Maven官网下载对应系统的Maven安装包,下载完成后,按照安装向导进行安装。 3. 创建Spring Boot项目 可以使用Spring Initializr创建一个基本的Spring Boot项目。在浏览器中打开 https://start.spring.io/,选择需要的依赖和配置,然后点击Generate按钮下载项目。将下载的项目解压到任意目录下。 4. 安装MySQL 可以在MySQL官网下载对应系统的MySQL安装包,下载完成后,按照安装向导进行安装。安装完成后,启动MySQL服务。 5. 创建数据库和表 使用MySQL客户端连接到MySQL服务器,创建一个新的数据库和表。可以使用以下命令: ``` CREATE DATABASE springbootdb; USE springbootdb; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; ``` 6. 编辑application.properties文件 在Spring Boot项目的根目录下,找到src/main/resources/application.properties文件。编辑该文件,添加以下配置: ``` spring.datasource.url=jdbc:mysql://localhost:3306/springbootdb spring.datasource.username=root spring.datasource.password=your_password_here spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.hibernate.ddl-auto=update spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect ``` 将your_password_here替换为MySQL的root用户密码。 7. 编写Controller和Service 在src/main/java/com/example/demo下创建一个UserController一个UserService。 UserController.java文件内容如下: ``` @RestController public class UserController { @Autowired private UserService userService; @GetMapping("/users") public List<User> getUsers() { return userService.getUsers(); } @PostMapping("/users") public void addUser(@RequestBody User user) { userService.addUser(user); } } ``` UserService.java文件内容如下: ``` @Service public class UserService { @Autowired private UserRepository userRepository; public List<User> getUsers() { return userRepository.findAll(); } public void addUser(User user) { userRepository.save(user); } } ``` 8. 编译和运行项目 在命令行中进入Spring Boot项目的根目录,运行以下命令: ``` mvn clean package java -jar target/demo-0.0.1-SNAPSHOT.jar ``` 其中demo-0.0.1-SNAPSHOT.jar是根据项目名称和版本号生成的文件名,可以根据实际情况进行修改。 9. 测试API 在浏览器或者Postman中访问http://localhost:8080/users,可以获取到所有用户的信息。使用POST方法访问http://localhost:8080/users,并发送一个JSON格式的请求体,可以添加一个新用户。例如: ``` { "name": "Alice", "email": "alice@example.com" } ``` 在数据库中查询,可以确认新用户已经被添加。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值