如何在单独的类中将类字段从主类传递给Spring控制器?

时间:2019-07-19 11:03:47

标签: java spring

我正在使用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();
    }
}

1 个答案:

答案 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派生的,因此如果从多个类中调用,它将是唯一的。