Java - 通过setter方法设置一个对象变量,但我不希望能够再次更改它

bab*_*abb 1 java spring web-services

我有Spring Web Services项目,我可以访问登录的用户名.

然后进程通过几个类进行,但我想要做的是,当我第一次在第一个类中接收它时,在User类/ bean中设置用户名.

即以下内容:

我的第一个Web服务类:

    // Set the Spring Security Name of the user
    user.setSpringSecurityUsername(request.getUserId());
    String springSecurityUsername = user.getSpringSecurityUsername();
Run Code Online (Sandbox Code Playgroud)

我的用户类

private String springSecurityUsername = "";
private final String windowsUsername = System.getProperty("user.name");

public String getSpringSecurityUsername() {
    return springSecurityUsername;
}

public void setSpringSecurityUsername(String springSecurityUsername) {
    this.springSecurityUsername = springSecurityUsername;
}

public String getWindowsUsername() {
    return windowsUsername;
}
Run Code Online (Sandbox Code Playgroud)

我希望能够创建User bean的新实例并设置SpringSecurityUsername.然后我希望将用户对象传递给其他处理类,但我不知道他们可以访问用户中的setter方法(例如,不希望其他类能够使用.setSpringSecurityUsername.

我只希望能够设置一次.

有人能帮忙吗?

Jon*_*eet 5

我只希望能够设置一次.

听起来你应该将它传递给构造函数.在某些情况下,您已将该类称为bean - 它是否必须是具有无参数构造函数的严格JavaBean?或者如果你只是添加一个构造函数,一切都还能为你工作吗?

将它放入构造函数而不是忽略/抛出第二个setSpringUsername调用的好处是你根本无法表达错误的代码.做一些不可能的事总比告诉别人不要这样做更好:)

(这也意味着你也可以把它变成最后的领域.)