2016-11-18 6 views
-1

Wie kann ich meinen Wert hier abrufen und in einer anderen Klasse verwenden? Ich wollte eine Klasse erstellen, die alle @Value-Annotationen behandelt, dann können die anderen Klassen diese Werte von dieser Klasse erhalten. Ich werde von einer Hauptklasse in eine neue Klasse ändern, sobald ich lernen, wie man die Werte aus einer anderen Klasse erhaltenWie kann ich Wertanmerkungen in einer anderen Klasse verwenden?

Wie kann ich diese Variablen

@Configuration 
@ComponentScan 
@EnableAutoConfiguration 
public class WebProperties { 

     @Value("${Application}") 
     private String app;  
     @Value("${APP_MEMORY_GREP_FOLDERS_APP}") 
     private String appFolder;   
     @Value("${APP_MEMORY_GREP_FOLDERS_OPT}") 
     private String optFolder; 
     //getters and setters 
}} 

in die Hauptklasse drucken

@Configuration 
@ComponentScan 
@EnableAutoConfiguration 
public class Application { 

    @Value("${Application}") 
    private String app; 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 

    @PostConstruct 
    public void postConstruct() { 
     System.out.print("SampleApplication started: " + app); 
    } 
} 

Ohne @Value noch einmal

+0

warum spritzt du es einfach in die andere Klasse, wo es gebraucht wird? – Reimeus

Antwort

4

Y anrufen zu müssen Sie können eine neue Eigenschaftsklasse erstellen, die mit @Configuration versehen ist. Dort kommentieren Sie Ihre Felder mit @Value mit allen gewünschten Eigenschaften. Diese Klasse kann in allen anderen Federkomponentenklassen, in denen die Eigenschaften benötigt werden, automatisch eingesetzt werden.

Dies ist die Konfigurationsklasse, wo ich die Eigenschaften meiner Datei application.properties Karte:

@Configuration 
public class MyProperties{ 

    @Value("{my.property}") 
    public String myProperty; 
} 

Es kann wie folgt verwendet werden:

für mich
@Configuration 
@ComponentScan 
@EnableAutoConfiguration 
public class Application { 

@Autowired 
private MyProperties props; 

public static void main(String[] args) { 
    SpringApplication.run(Application.class, args); 
} 

@PostConstruct 
public void postConstruct() { 
    System.out.print("Print my property: " + props.myProperty); 
} 
} 

Dies funktioniert. Hoffe, es wird dir helfen.

+0

Wenn ich @autowired WebProperties mache, wie kann ich die Variable und die Werte aus dieser Klasse herausholen? – Jesse

+0

Machen Sie die Felder öffentlich oder verwenden Sie getters – pDer666

+0

Ich habe Getter und Setter, Wenn ich den Wert von der anderen Klasse abrufen, gibt es null zurück. – Jesse

Verwandte Themen