一:SpringBoot
SpringBoot是SpringMVC的升级版,相对于编码、配置、部署和监控方面,会更加简单
特点:
1.化繁为简,简化配置。
2.备受关注,是下一代框架。
3.微服务的入门级微框架
Spring 为 微服务提供了一整套的组件-SpringClound , SpirngBoot 就是该基础。
而微服务则是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。
二:Idea
使用maven配置载包 可以在maven根目录conf文件夹下的setting.xml里mirros标签里添加
<mirror>
<!--This sends everything else to /public -->
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
这样做的目的是maven载包会快一些
三:
Spring启动必有一个主类
SpringBoot启动项目方式
1:IDEA直接启动
2:cmd到项目目录,然后mvn spring-boot:run
3:cmd到项目目录,mvn install
然后进入target目录,执行jar包
命令java -jar gril-0.0.1-SNAPSHOT.jar
四:
Idea支持yaml文件来替换properties文件(yaml更加好用并且可以支通过active属性来决定哪个文件):
使用application.properties配置:(访问路径:localhost:8080/demo)
server.port=8080
server.context-path=/demo
使用application.yml配置(推荐):(注意,冒号后必须空格,再写参数)
server:
port: 8080
context-path: /demo
五:Controller
单独使用Controller注解时,在MVC里,是需要返回ModelAndView等类型的类或者”index.jsp”这样的,但如今前后端分离,我们开发的也只需要提供给前端rest风格的接口返回一些json格式即可,无需返回这样的类型
@RestController = @ResponseBody + @Controller
rest风格接口:
@GetMapping(value = "/sel/{id}")
public girl selectOne(@PathVariable("id") int id){
return girlJPA.findOne(id);
}
Controller里的注解
@PathVariable 获取url中的数据
例如”/sel/{id}” http://localhost:8080/sel/2 //rest风格
方法参数列表的参数前 sel(@PathVariable(“id”) int id){…}@RequestParam 获取请求参数的值
例如http://localhost:8080/sel?id=2
方法参数列表的参数前 sel(RequestParam(“id”) int id){…}@GetMapping 组合注解 表示 @RequestMapping(value=”..”,method= RequestMethod.GET) 其他同理
六:spring-data-Jpa
使用时需要导包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
而后创建一个接口继承JpaRepository接口
public interface GirlJPA extends JpaRepository<girl,Integer>{
//根据年龄查询
public List<girl> findByAge(int age);
}
这里的girl则是实体类,Integer为主键类型
之后可以用@Autowired注解实例化jpa,直接用实例操作数据库
yaml文件配置
这里的spring.jpa.hibernate.ddl-auto为create时(大多用update),会自动创建表,但是已经有表的情况下,会删除再创建(小心),showsql则表示在控制台显示sql语句
七:事务管理
由于有转账这样的操作(扣款,收款两块的代码同时成功或者失败),所以需要事务管理
springboot在Service类的方法前加上@Transactional