SpringBoot快速入门
来源:互联网 发布:天刀淘宝刷白发多少钱 编辑:程序博客网 时间:2024/05/21 05:58
1 简介
SpringBoot是SpringMVC的升级,也是学习Spring Cloud的基础部分;
SpringBoot特点如下:
1、 化繁为简,简化配置;
(配置简单;不用谢sql语句---可利用配置文件和实体类自动创建数据表;)
2、 备受关注,是下一代框架;
3、 微服务的入门级微框架;
学习Spring Boot知识基础:
1、 maven
2、 Spring 注解
3、 Restful API
2 项目属性配置
2.1 公共属性配置
在application.properties或application.yml(推荐)下进行项目属性配置。
在application.properties下配置:
server.port=8081server.context-pathserver.context-path=/sell
在application.yml下配置:
server: port: 8082 context-path: /sell
注意:每个属性冒号后面打空格才能显示出来关键字;
此处推荐使用application.yml配置文件,更加方便规范。
2.2 自定义属性
server: port: 8082 context-path: /sellhigh: 1.75age: 25
注意自定义属性的关键字也是自己定义的,就相当于变量名,第一,变量名要顶格;第二,冒号后面要打空格。
自定义属性的使用:
@RestControllerpublic class HelloController { @Value("${high}") private String high; @Value("${age}") private Integer age; @RequestMapping(value="hello",method = RequestMethod.GET ) public String say(){ return "Hello Spring Boot"; } @RequestMapping(value="info",method = RequestMethod.GET ) public String say2(){ String str ="身高:"+high+"\n;年龄:"+age; return str; }
属性嵌套属性:
content:"high:${high}},age:${age}}"
配置分组写到类里面
有时候为了节省时间和工作量,可以将配置的属性注入到类属性当中:
@Component //声明注入Bean@ConfigurationProperties(prefix = "sell")public class SellProperties{ @Value("${high}") private Stringhigh; @Value("${age}") private Integerage; @Value("${content}") private Stringcontent; public SellProperties(){ }//……}
2.3 多环境配置
如果一个事物有属性有不同的值,需要配置多个版本,则在application.yml文件激活其他版本的配置,在对应配置文件配置相关属性即可:
例如:
application.yml配置激活application-dev.yml配置文件
配置文件application.yml
spring: profiles: active: dev
配置文件application-dev.yml
server: port: 8081 context-path: /sellhigh: 1.75age: 25content: "high:${high},age:${age}"
2.4 Controller的使用
1
@Controller是用来处理http请求的 ,配合模板来使用
@RestController:Spring4后新加的组件,原来返回Json需要@ResponseBody+@Controller
@RequestMapping:配置URL映射
2
@PahtVariable:获取url中的数据
@RequestParam:获取请求参数的值
@GetMapping:组合注解
/** * @RestController=@Controller+@ResponseBody *///@Controller//@ResponseBody()@RestController//@RequestMapping("/temp") //需要作为Url的方法名的前缀和方法名拼接起来:http://127.0.0.1:8081/sell/temp/hellopublic class HelloController { @Value("${high}") private Stringhigh; @Value("${age}") private Integerage; @Value("${content}") private Stringcontent; @Autowired private SellPropertiessellProperties; @RequestMapping(value="hello",method = RequestMethod.GET ) public Stringsay(){ return "HelloSpring Boot"; } /** * 多个url地址访问到同一个方法,用集合的方式写url方法地址 * @return */ @RequestMapping(value={"info","private"},method = RequestMethod.GET ) public Stringsay2(){ String str ="身高:"+high+"\n;年龄:"+age; // return str; return content; } @RequestMapping(value="assem",method = RequestMethod.GET ) public Stringsay3(){ return sellProperties.getContent(); } @RequestMapping(value="template",method = RequestMethod.GET ) public Stringsay4(){ return "index"; } /* 路参绑定 @PathVariable(value ="id" ,required = false,defalutValue="0" 表示将路径中的参数绑定给方法中的参数,required=false表示参数传不传都可以,不传的时候默认值为0 */ @RequestMapping(value="/pathV/{id}",method = RequestMethod.GET ) // @GetMapping(value) public Stringsay4(@PathVariable(value = "id",required = false,defalutValue="0") Integer id){ return "id"+id; }}
3 数据库操作
3.1 Spring-Data-Jpa
SpringBoot操作数据库需要使用Spring-Data_Jpa。
Spring-Data-Jpa(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate、TopLink等。
3.2 操作数据库
1 表的自动创建
1)设计Restful接口
2)配置:pom.xml文件
<!--用于数据库--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId></dependency>
在application.yml文件中配置链接数据库的属性,注意一定要格式对齐,否则会报错
# 默认的配置文件,可以直接在此配置当中配置属性,也可以在此配置文件激活其他配置文件spring: profiles: active: dev datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/girl username: root password: root jpa: hibernate: ddl-auto: create #每次运行程序会自动创建要给空表,如果存在了这个表,会自动删除,然后创建一个同名的空表#ddl-auto: update #第一运行的时候会自动创建空表,之后运行保留原有表格数据,并更新#ddl-auto: create-drop #应用结束,就会删除创建的表格。 show-sql: true
3)创建数据库girl,不需要创建表,只需要创建对应的类。
import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;@Entitypublic class Girl { @Id @GeneratedValue @GeneratedValue private Integerid; private StringcupSize; private Integerage; public Girl(){ } public IntegergetId() { return id; } public void setId(Integerid) { this.id = id; } public StringgetCupSize() { return cupSize; } public void setCupSize(StringcupSize) { this.cupSize = cupSize; } public IntegergetAge() { return age; } public void setAge(Integerage) { this.age = age; }}
4)然后运行项目“run’ 项目名application’”会自动创建一个和实体类girl对应的表。
2 自动查询
1) 修改配置文件application.yml中对数据库的属性设置:ddl-auto:update,执行数据库操作的时候可以保留数据库中的数据。
2) 创建接口,可以做为代理来自动访问数据库:
import org.springframework.data.jpa.repository.JpaRepository;import java.util.List;/** * 继承自一个访问的数据库,列表为Girl,主键id类型为Integer */public interface GirlRepository extends JpaRepository<Girl,Integer>{ //通过年龄查询,修改DDL,自定义查询方法 public List<Girl> findByAge(Integer age);}3) 创建一个具体的控制类GirlController,并且自动注入上述操作数据库的接口GirlRepository:import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;@RestControllerpublic class GirlController { @Autowired private GirlRepositorygirlRepository; @GetMapping(value="/girls") public List<Girl>girlList(){ return girlRepository.findAll();//不需要数据库一句话可以查询接口数据库中 } /** * 添加要给女生 * @param cupSize * @param age * @return */ //@PostMapping(value="/postGirls") //@RequestMapping(value="/getGirl_1",params ={"cupSize","age"},method=RequestMethod.GET) @RequestMapping(value="/getGirl_1/{cupSize}/{age}",method=RequestMethod.GET) public GirlgirlAdd(@PathVariable("cupSize") String cupSize, @PathVariable("age") Integer age) { Girl girl=new Girl(); girl.setAge(age); girl.setCupSize(cupSize); return girlRepository .save(girl);//save返回了添加的对象 } @PostMapping(value="/postGirl_2") public GirlgirlAdd2(@RequestParam("cupSize") String cupSize, @RequestParam("age") Integer age) { Girl girl=new Girl(); girl.setAge(age); girl.setCupSize(cupSize); return girlRepository .save(girl);//save返回了添加的对象 } //查询 @GetMapping(value="/girls/find/{id}") public GirlgirlFindOne(@PathVariable Integer id) { return girlRepository.findOne(id); } //更新 @PutMapping(value="/girls/update/{id}") public GirlgirlUpdate(@PathVariable Integer id, @RequestParam("cupSize") String cupSize, @RequestParam("age") Integer age) { Girl girl=new Girl(); girl.setId(id); girl.setAge(age); girl.setCupSize(cupSize); return girlRepository.save(girl); } //删除 @GetMapping(value="/girls/delete/{id}") public void girlDeleteOne(@PathVariable Integer id) { girlRepository.delete(id); //没有返回值 } //通过年龄查询列表,在在接口中自定义修改查询方法,然后调用接口中的方法即可。 @GetMapping(value="/girls/age/{age}") public List<Girl>girlListByAge(@PathVariable("age") Integer age) { return girlRepository.findByAge(age); }}
在控制器中,既可以调用接口已经实现好的对数据库的操作方法,又可以在接口修改查询方法,然后在控制器中调用该方法;总之,都不需要写SQL语句。
4 事务管理
将若干条操作绑定在一起作为一个原子性行为,要么同时成功,要么都失败。
创建服务GirlService.java,注意将操作方法注解@Transactional为事务管理。
@Servicepublic class GirlService { @Autowired private GirlRepository girlRepository; @Transactional //事务注解 --将该方法的所有操作作为一个事务进行,要么全部执行,要么全部失败 public void insertTwo() { Girl girlA=new Girl(); girlA.setAge(23); girlA.setCupSize("C"); girlRepository.save(girlA); Girl girlB=new Girl(); girlB.setAge(20); girlB.setCupSize("D"); girlRepository.save(girlB); }}
- SpringBoot 快速入门
- SpringBoot快速入门
- springboot快速入门
- SpringBoot快速入门
- SpringBoot 快速入门
- 快速入门1springboot
- SpringBoot快速入门
- springboot的快速入门
- springboot快速入门
- springboot快速入门
- SpringBoot+IDEA+Maven快速入门
- SpringBoot快速入门(一)
- SpringBoot入门-快速整合Mybatis
- SpringBoot系列<一>快速入门
- SpringData 基于SpringBoot快速入门
- SpringBoot快速入门,不继承SpringBoot父依赖项目
- springboot入门(一)--快速搭建一个springboot框架
- SpringBoot初识和快速入门(一)
- CaoHaha's staff(hdoj6154)
- 浏览器兼容问题
- 二十三种设计模式之原型模式
- Joking with Fermat's Last Theorem UVA
- python学习(1)
- SpringBoot快速入门
- 从HTML表格删除行
- 乘法逆元数论篇
- Deeplearning.ai学习笔记之第一课第一周
- Linux下创建svn以及相关操作
- linux下自创网络编程聊天室(4)改进两点
- 数论--几何--笛卡尔原理
- 《linux设备驱动开发详解》中支持阻塞操作的globalfifo设备驱动
- C++中std::stringstream类型对象如何清除