spring.application.name=demo
app.config.upload-addr=baidu.com
app.config.app-key=1234
import lombok.Data;
@Data
public class AppConfigProperties {
private String uploadAddr;
private String appKey;
}
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
@Data
@Slf4j
public class UploadComponent {
private AppConfigProperties appConfigProperties;
public void upload(){
log.info("app.config:{}",appConfigProperties);
}
}
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class AppConfiguration {
@Value("${spring.application.name}")
public String appName;
@Bean
public RestTemplate restTemplate() {return new RestTemplate();}
@Bean
@ConfigurationProperties(prefix = "app.config")
public AppConfigProperties appConfigProperties() {return new AppConfigProperties();}
@Bean
public AppConfigProperties appConfigPropertiesNon() {return new AppConfigProperties();}
@Bean
public UploadComponent uploadComponent(@Qualifier("appConfigProperties") AppConfigProperties properties) {
UploadComponent uploadComponent = new UploadComponent();
uploadComponent.setAppConfigProperties(properties);
return uploadComponent;
}
}
import com.example.demo.config.UploadComponent;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
@RestController
public class UploadController {
@Resource
private RestTemplate restTemplate;
@Resource
private UploadComponent uploadComponent;
@GetMapping("/uploader")
public void upload() {uploadComponent.upload();}
}