Spring Boot 学习笔记

前一段时间,我在帮师兄们开发微信小程序后台的时候用到了一个新的框架Spring Boot(新是对我来说,可能很多人都是已经能熟练使用这个框架了)。

Spring Boot 与普通的MVC框架(Servlet、Service、DTO和DAO)类似,Spring Boot 分别有Controller、Service、DTO和DAO,就这样看来,Spring Boot 和普通的MVC框架不同的地方应该就是C层了,在我之前参与的使用普通MVC框架的web项目中,是通过在表单传值的时候穿一个属性名为flag的值,根据该属性的值判断用户需要执行的业务操作,而在Spring Boot 的Controller层中则是为每一个业务方法设定一个唯一的url,这样用户需要执行哪个业务操作就直接通过其对应的url访问并传参即可。比如同样是实现一个删除操作,普通MVC框架中的servlet写法和Spring Boot框架中的controller写法分别如下:

ActivityServlet.java

package ;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Servlet extends HttpServlet {

 	 public void doGet(HttpServletRequest request,HttpServletResponse response)
				throws ServletException,IOException{
  		request.setCharacterEncoding("utf-8");
		String flag = request.getParameter("flag");
		if("findActivity".equals(flag)){
			this.findActivity(request, response);
		}
	 }
  
   	 public void doPost(HttpServletRequest request,HttpServletResponse response)
			throws ServletException,IOException{
		this.doGet(request,response);
  	 }  
		
	
	//例子
	public void findActivity(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String a_id = request.getParameter("id");

		ActivityService as = new ActivityService();
		as.findActivity(id);
		response.sendRedirect("activity.jsp");
	}
  
  
}

ActivityController.java

@RestController
@RequestMapping(value = "/activity")
public class ActivityController {
	@Resource
	private ActivityService activityService;
	
	//Post请求
	@PostMapping(value = "/findActivity")
	public void findActivity(@RequestParam("id") Integer id){
		activityService.findActivity(id);
	}
	
	//Get请求
	@GetMapping(value = "/findActivity/{id}")
	public void findActivity(@PathVariable("id") Integer id){
		activityService.findActivity(id);
	}
}
若要访问ActivityController中的findActivity方法,若是Post请求则只要通过“服务器ip/activity/findActivity”即可,若本机是服务器则在浏览器地址栏输入"localhost:8080/activity/findActivity"即可访问,若是Get请求,也以本机为服务器为例,假设需要删除的活动id为1,则在浏览器地址栏输入"localhost:8080/activity/findActivity/1"即可。

Spring Boot 中的Service层与普通MVC框架的Service没有多少区别,而DTO和DAO则与普通MVC框架有所不同。

Activity.java

@Entity
public class Activity{
	@Id
	@GenerateValue
	//活动id
	private String Integer id;
	//活动名称
	private String name;
	//活动地点
	private String place;

	public Activity(){
	}
	
	public void setId(Integer id){
		this.id = id;
	}
	public Integer getId(){
		return id;
	}
	public void setName(String name){
		this.name = name;
	}
	public String getName(){
		return name;
	}
	public void setPlace(String place){
		this.place = place;
	}
	public String getPlace(){
		return place;
	}
}

ActivityDAO.java

public interface ActivityDAO extends JpaRepository<Activity, Integer>{
	//根据活动id查询活动信息
	Activity findById(Integer id);
}
DAO中不需要我们自己写数据库操作的代码,只需定义方法,Spring Boot框架就会应用Spring Data JPA将方法名按其规则解析成相应的SQL语句进行数据库操作,十分的方便。这里需要主要的一点是DTO中的属性名应与数据库中的字段名一致,并且不能出现下划线,因为Spring Data JPA在对DAO的方法名解析时,下划线是被视作分割点的。

例如在Activity.java中,若活动id的属性名为a_id,则根据活动id查询活动信息的方法名应写作findByA_id,在Spring Data JPA进行方法名解析时,会将其分割为find by a id,而不是find by a_id,如此便会导致程序出错,所以DTO的属性名不能有下划线。


以上为我个人学习笔记心得,作为一个大学生还是自学的编程,想来可能有很多错误的地方,望技术大神多多指正。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值