|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
/Udemy1/src/main/java/com/example/demo/app/inquiry/InquiryController.java里代码如下
@Controller
@RequestMapping("/inquiry")
public class InquiryController {
private final InquiryService inquiryService;
@Autowired
public InquiryController(InquiryService inquiryService) {
this.inquiryService = inquiryService;
}
@GetMapping("/form")
public String form(InquiryForm inquiryForm,
Model model,
@ModelAttribute("complete") String complete) {
model.addAttribute("title", "Inquiry Form");
return "inquiry/form";
}
@PostMapping("/form")
public String formGoBack(InquiryForm inquiryForm, Model model) {
model.addAttribute("title", "InquiryForm");
return "inquiry/form";
}
@PostMapping("/confirm")
public String confirm(@Valid InquiryForm inquiryForm,
BindingResult result,
Model model) {
if(result.hasErrors()) {
model.addAttribute("title", "Inquiry Form");
return "inquiry/form";
}
model.addAttribute("title", "確認ページ");
return "inquiry/confirm";
}
@PostMapping("/complete")
public String complete(@Valid InquiryForm inquiryForm,
BindingResult result,
Model model,
RedirectAttributes redirectAttributes) {
if(result.hasErrors()) {
model.addAttribute("title", "Inquiry Form");
return "inquiry/form_boot";
}
Inquiry inquiry = new Inquiry();
inquiry.setName(inquiryForm.getName());
inquiry.setEmail(inquiryForm.getEmail());
inquiry.setContents(inquiryForm.getContents());
inquiry.setCreated(LocalDateTime.now());
redirectAttributes.addFlashAttribute("complete", "Completed!");
return "redirect:/inquiry/form";
}
}
/Udemy1/src/main/java/com/example/demo/serverce/InquiryServiceImpl.java里代码如下
package com.example.demo.serverce;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.demo.dao.InquiryDao;
import com.example.demo.entity.Inquiry;
@Service
public class InquiryServiceImpl implements InquiryService {
private final InquiryDao dao;
@Autowired InquiryServiceImpl(InquiryDao dao){
this.dao = dao;
}
@Override
public void save(Inquiry inquiry) {
dao.insertInquiry(inquiry);
}
@Override
public List<Inquiry> getAll() {
return dao.getAll();
}
}
/Udemy1/src/main/java/com/example/demo/dao/InquiryDaoImpl.java里面代码如下
@Repository
public class InquiryDaoImpl implements InquiryDao {
private final JdbcTemplate jdbcTemplate;
@Autowired
public InquiryDaoImpl(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Override
public void insertInquiry(Inquiry inquiry) {
jdbcTemplate.update("INSERT INTO inquiry(name,email,contents,cerate) VALUES(?,?,?,?)",
inquiry.getName(),
inquiry.getEmail(),
inquiry.getContents(),
inquiry.getCreated());
}
@Override
public List<Inquiry> getAll() {
String sql = "SELECT id,name,email,contents,created FROM inquiry";
List<Map<String,Object>> resultList = jdbcTemplate.queryForList(sql);
List<Inquiry> list = new ArrayList<Inquiry>();
for(Map<String,Object> result: resultList) {
Inquiry inquiry = new Inquiry();
inquiry.setId((int)result.get("id"));
inquiry.setName((String)result.get("name"));
inquiry.setEmail((String)result.get("email"));
inquiry.setContents((String)result.get("contents"));
inquiry.setCreated(((Timestamp)result.get("created")).toLocalDateTime());
list.add(inquiry);
}
return list;
}
}
请从意义层面和语法层面详细解释这极端代码 并且说明他们之间的联系
这段代码是一个构造函数,使用@Autowired注解进行标记。它的作用是将一个类型为InquiryService的对象作为参数传入,并将参数赋值给类中的InquiryService属性。
具体解释如下:
1. @Autowired注解:这是Spring框架提供的注解之一,用于实现依赖注入。通过@Autowired注解,Spring可以自动在容器中查找并注入匹配的类型的实例。
2. 构造函数:构造函数是一个特殊的方法,在创建对象时会被调用,用于初始化对象的属性。构造函数没有返回值,并且与类名相同。
3. InquiryService inquiryService:这是构造函数的参数,它的类型是InquiryService。通过使用@Autowired注解,Spring会自动在容器中查找并注入一个类型是InquiryService的实例。
4. this.inquiryService = inquiryService:这行代码将构造函数中传入的InquiryService对象赋值给类中的inquiryService属性。这样,在以后的代码中就可以使用inquiryService属性来调用InquiryService对象的方法了。
通过在构造函数中使用@Autowired注解,我们可以实现自动注入依赖对象,减少了手动创建和管理对象的工作量,并增强了代码的可读性和可维护性。
希望以上解释能够帮助你理解这段代码的语法层面。如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|