我正在使用Spring Boot开发服务器。我想使用java.util.UUID
在我的主类中有一个静态UUID字段。我希望所有控制器(实现为独立类)使用main的静态字段获取新的uuid。但是如何在Spring Boot中将字段从main传递到控制器?有某种注释可以做到这一点吗?
这是我的主要课程:
package com.vastserver;
import java.util.UUID;
import com.vastserver.db.DBHandler;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ServerMain implements CommandLineRunner {
private static final UUID uuids = new UUID(1233, 45454);
private static final Logger log = LogManager.getLogger(ServerMain.class);
@Autowired
private DBHandler db;
public static void main(String[] args) {
log.warn("from main");
SpringApplication.run(ServerMain.class, args);
}
@Override
public void run(String... strings) throws Exception {
log.info("starting run");
db.initDBTables();
}
}
答案 0 :(得分:0)
在@Michael的评论之后,我创建了一个Spring bean:
package com.vastserver;
import org.springframework.stereotype.Service;
import java.util.UUID;
@Service
public class RandomUUID {
private String uuid;
public String getUuid() {
return UUID.randomUUID().toString();
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
}
并且我在主班上添加了@Autowired
字段:
@Autowired
private RandomUUID uuid;
此外,我了解到本身并不需要在特殊类中生成UUID以保证其唯一性。这是因为根据UUID标准,它是从time派生的,因此如果从多个类中调用,它将是唯一的。