2016-06-22 12 views
1

これは簡単な問題です。 私はapplication.ymlをHAVA:なぜapplication.ymlのuser.nameプロパティの値が間違っていますか?

server: 
    port: 852 

user: 
    name: Jack 
    name1: Tom 
    description: ${user.name} 

そして、ユーザーのJavaクラス:

@Component 
@ConfigurationProperties(prefix = "user") 
public class User { 

    private String name; 
    private String description; 
    private String name1; 

    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public String getDescription() { 
     return description; 
    } 
    public void setDescription(String description) { 
     this.description = description; 
    } 
    public String getName1() { 
     return name1; 
    } 
    public void setName1(String name1) { 
     this.name1 = name1; 
    } 
} 

そして最後にMVCコントローラのJavaクラスがあります:

@RestController 
public class HelloController { 
    @Autowired User user; 

    @RequestMapping("/user") 
    public String getUser() { 
     return user.getName() + "--------" + user.getDescription() + "----" + user.getName1(); 
    } 
} 

[OK]を、正しいように見えるがありブラウザのアドレスに「localhost:852/user」と入力すると、次のように間違った結果が得られます。

BG221726--------BG221726----Tom 

「BG221726」は自分のコンピュータ名です。私のコードに何が問題なのですか?

+0

'user.name'は、ログインしたシステムユーザのユーザ名を含むJavaシステムプロパティです(プロパティファイルよりも優先されます)。 –

+0

おかげさまで、ありがとう、あなたの言うようにJavaシステムプロパティを見つける方法はありますか。 :) – nolan4954

答えて

1

実際にはuser.nameを使用していますが、これはjavaで設定されたspecial system propertyです。 property resolving mechanismシステムプロパティを使用する場合は、プロパティファイルから読み込んだシステムプロパティよりも優先されます。

これを解決するには、別のプレフィックスを使用します。

+0

ありがとうございました:) – nolan4954

関連する問題