SpringBoot 中针对同一类型的参数,可以用一个类来集中访问,降低使用value(“{xxx.xxxx}”)在调用中的耦合.比如在AmazonProperties 类中收集参数,@ConfigurationProperties(“amazon”)用来标记参数是由amazon开头,属性associateId的值则来自application.properties中的amazon.associateId=xxx的值“xxx”。具体代码如下:
`
package com.bookcity.readingList;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* 收集amazon属性
*
* @author Mr.c
* @create 2017-11-06
*/
@Component
@ConfigurationProperties(“amazon”)
public class AmazonProperties {
private String associateId;
public String getAssociateId() {
return associateId;
}
public void setAssociateId(String associateId) {
this.associateId = associateId;
}
}
`
在Controller中的调用为
package com.bookcity.controller;
import com.bookcity.readingList.AmazonProperties;
import com.bookcity.readingList.Book;
import com.bookcity.readingList.ReadingListRepository;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 阅读列表控制器
*
* @author Mr.c
* @create 2017-11-03
* Copyright: Copyright (c) 2017
*/
@RequestMapping(value = "/readingList")
@RestController
@Api(value ="ReadingListController",description = "ReadingListController")
public class ReadingListController {
private ReadingListRepository readingListRepository;
private AmazonProperties amazonProperties;//注入AmazonProperties
//构造器
@Autowired
public ReadingListController(ReadingListRepository readingListRepository,AmazonProperties amazonProperties){
this.readingListRepository=readingListRepository;
this.amazonProperties=amazonProperties;
}
@ApiOperation(value = "查询读书列表",notes = "通过读者查询列表")
@RequestMapping(value = "/{reader}",method = RequestMethod.GET)
public String readersBooks(@PathVariable("reader")@ApiParam(value = "reader",name = "reader",required = true) String reader,@RequestBody Model model){
List<Book> readingList = readingListRepository.findByReader(reader);
if(!readingList.isEmpty()){
model.addAttribute("books",readingList);
model.addAttribute("reader",reader);
//参数调用 amazonProperties.getAssociateId()
model.addAttribute("amazonID", amazonProperties.getAssociateId());
}else{
model.addAttribute("books",readingList);
}
return "readingList";
}
@RequestMapping(value="/{reader}",method = RequestMethod.POST)
public String addToreadingList(@PathVariable("reader") String reader,Book book){
book.setReader(reader);
readingListRepository.save(book);
return "redirect:/readingList/{reader}";
}
}