Spring Boot Sping Boot 应用程序中的@ApplicationScope

0tdrvxhp  于 2023-04-06  发布在  Spring
关注(0)|答案(1)|浏览(193)

此实施是否正确

@ApplicationScope
@Component
public class OnlineModeStatus {

boolean online;

public boolean isOnline() {
    return online;
}

public void setOnline(boolean status) {
    this.online= status;
}

}

我需要一个全局变量来维护应用程序到云服务的状态。如果云服务已关闭/不可访问,则全局变量将为false
所以根据变量的不同我需要采取行动
这是正确的实现吗?

yhived7q

yhived7q1#

您的代码很好。我看不出您的代码有什么问题。

但是如果你想在这里做一些改进,你可以去:

1.对联机字段使用private访问修饰符
1.在线字段使用volatile关键字:这会使你的代码更加线程安全。
1.在线字段使用enum而不是boolean:这可以使代码更清晰、更灵活,因为您可以定义特定的状态,如ONLINE、OFFLINE、CONNECTING等。

@ApplicationScope
    @Component
    public class OnlineModeStatus {
    
        private volatile OnlineStatus onlineStatus = OnlineStatus.ONLINE;
    
        public OnlineStatus getOnlineStatus() {
            return onlineStatus;
        }
    
        public void setOnlineStatus(OnlineStatus onlineStatus) {
            this.onlineStatus = onlineStatus;
        }
    
        public boolean isOnline() {
            return onlineStatus == OnlineStatus.ONLINE;
        }
    
        public enum OnlineStatus {
            ONLINE,
            OFFLINE,
            CONNECTING
        }
    }

相关问题