Table des matières
Premièrement, la méthode courante de lecture des fichiers de configuration dans SpringBoot
1.1, utilisez @Value pour lire
Dans le cycle d'instruction springBoot, vous pouvez utiliser l'annotation @Value pour lire les informations de configuration à partir du fichier de configuration par défaut de SpringBoot.
例如在Controller中使用:
// 在配置文件中读取属性名为web.images-path对应的值
@Value("${web.images-path}")
private String path;
@Value peut être placé sur des propriétés ou des méthodes. La condition préalable à une utilisation normale est que la classe doit être dans le cycle de vie de SpringBoot.
Comment insérer une classe dans le cycle de vie Spring pour la gestion ? L'annotation @Component est utilisée
car @Controller et @Service eux-mêmes contiennent @Component. Il peut donc être utilisé directement.
下面是单独使用@Component的例子
Créez un package de configuration, puis créez un BootProperties
package com.demo.config;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
@Component
public class BootProperties {
@Value("${web.images-path}")
public String path;
}
Puis écrivez dans le contrôleur
@RestController
public class HelloController {
@Autowired
private BootProperties bootProperties;
@RequestMapping("/test5")
public Object test5(){
return bootProperties.path;
}
}
使用ing类型写
package com.demo.config;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
@Component
public class BootProperties {
@Value("${web.images-path}")
public String path;
@Value("${server.port}")
public int port;
}
@RestController
public class HelloController {
@Autowired
private BootProperties bootProperties;
@RequestMapping("/test5")
public Object test5(){
return bootProperties.path + " ------ "+ bootProperties.port;
}
}
1.2, en utilisant @ConfigurationProperties
Classe BootProperties
package com.demo.config;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
@Setter // lombok,生成set方法
@ConfigurationProperties(prefix = "server") // 配置属性类,并定制前缀
@Component // 因为@ConfigurationProperties不能把此类放到boot容器中,所以要配合@Componpent使用
public class BootProperties {
@Value("${web.images-path}")
public String path;
// 不使用@Value注解,需要保证:前缀+属性名=全路径。还需要此属性有对应的setter方法
// @Value("${server.port}")
public int port;
// 使用@Value注解则需要写全路径
}
classe de contrôleur
@RestController
public class HelloController {
@Autowired
private BootProperties bootProperties;
@RequestMapping("/test5")
public Object test5(){
return bootProperties.path + " ------ "+ bootProperties.port;
}
}
1.3, utilisez Environnement
Environment est une classe de SpringCore pour lire les fichiers de configuration. En injectant cette classe dans une classe utilisant @Autowired, vous pouvez utiliser sa méthode getProperty pour obtenir la valeur d'un élément de configuration.
@RestController
public class HelloController {
@Autowired
private Environment environment;
@RequestMapping("/test7")
public Object test7(){
return environment.getProperty("server.port");
}
}
1.4, lire le fichier de configuration personnalisé
Utilisez vos connaissances antérieures pour comprendre le code ci-dessous.
Ajouter principalement une nouvelle annotation @PropertySource
Créez un package de configuration, puis créez un SysProperties
package com.demo.config;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@ConfigurationProperties(prefix = "sys")
@Component
@PropertySource("classpath:sys.properties")
@Getter
@Setter
public class SysProperties {
private String param1;
private String param2;
}
classe de contrôleur
@RestController
public class HelloController {
@Autowired
private SysProperties sysProperties;
@RequestMapping("/test6")
public Object test6(){
return sysProperties.getParam1()+sysProperties.getParam2();
}
}
Deuxièmement, SpringBoot déploie le projet war sur Tomcat9 et lance le principe
创建一个新项目
Ajoutez un module
puis ajoutez des dépendances dans pom
<packaging>war</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<finalName>passerby-war</finalName>
<plugins>
<plugin>
<!-- 打包插件 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Ajoutez ensuite la classe contrôleur et une classe de démarrage
et ajoutez une méthode dans la classe Contrôleur
package com.demo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Controller {
@RequestMapping("/demo01")
public Object demo01(){
return "hello,war";
}
}
Démarrez l'empaquetage
, recherchez cet emplacement dans le dossier
, recherchez-le, copiez le package war que vous venez de créer, puis copiez le package war sur
votre emplacement Tomcat , puis ouvrez le répertoire bin, recherchez-y startup.bat, ouvrez-le , attendez pour l'exécuter puis dans Ouvrez le dossier dans lequel vous avez collé le package war tout à l'heure, tout ira bien maintenant, ouvrez le navigateur et essayez
Si vous ne comprenez rien, vous pouvez envoyer un message privé ! ! !