Spring框架学习笔记(5)——Spring Boot创建与使用
Spring Boot可以更为方便地搭建一个Web系统,之后服务器上部署也较为方便
此篇有些细节未提及,我新写了一篇Spring框架学习笔记(8)——spring boot+mybatis plus+mysql项目环境搭建来进行补充,可以两篇博文进行参考
创建Spring boot项目
1. 使用IDEA创建项目
2. 修改groupid和artifact
3.勾选相关库
这里,可以先不选mybatis和mysql,先搭建一个比较简单的环境,
大概明白流程后,之后就可以根据自己的需求来勾选相关的库
4. 一路next,自动IDEA就会自动下载依赖的jar包
5. 运行
之后运行项目(Application类),打开http://localhost:8080
就会出现下面的白板页面,说明已配置成功
项目结构说明及使用
项目结构说明
我们可以看见项目中是这样的结构,Spring boot内置了tomcat服务器,所以,我们可以直接通过application来启动
SpringbootdemoApplication
package com.wan.springbootdemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootdemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootdemoApplication.class, args);
}
}
可以看到SpringbootdemoApplication中的代码比较简单,使用了一个注解SpringBootApplication
,用来标注当前类是Spring boot的入口类,之后通过SpringApplication.run
启动
SpringBootApplication注解中也是内置了几个spring的注解,打开其中可以看到
@SpringBootConfiguration 表示该类是一个配置类
@EnableAutoConfiguration 启用自动配置,例如添加了spring-boot-starter-web依赖,会自动添加Tomcat和SpringMVC的依赖,SpringBoot会对Tomcat和SpringMVC进行自动配置.
@ComponentScan 能扫描当前包及其子包中的类 即com.lanqiao.springboot.tutorials包及其子包下的所有的组件类。
spring boot使用一个封装的注解,把之前我们得使用注解和配置文件去配置spring的步骤都省去了,springboot不仅让我们的编码是轻量级的,而且也把我们的配置变成了轻量级
控制器使用
之前使用springmvc框架,我们写一个controller,得在配置文件中开启自动扫描,然后controller类中使用controller注解进行标明,而使用spring boot则不需要这么繁琐,只需要标注上一个@RestController
注解即可
注解RestController包含了Controller和ResponseBody,返回的实体类或者List都会转为json数据
这里可以使用spring boot中的注解,也可以使用spring mvc的注解RequestMapping
、ResponseBody
等
package com.wan.springbootdemo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author StarsOne
* @date Create in 2019/10/17 0017 18:24
* @description
*/
@RestController
public class UserController {
@RequestMapping("user/data")
public String getData() {
return "this is returning data";
}
}
然后通过访问localhost:8080/user/data
就可以看到返回的数据
修改context项目地址
上面的项目接口中,我们可以看到一个名为application.properties
的文件,里面可以用来进行一些设置,如context上下文,port端口号
补充:spring boot中除了使用properties这种文件进行配置,还可以使用yml文件
我在其中添加了下面的代码,就是用来设置context
server.servlet.context-path=/springbootdemo
之后上面的controller的访问地址就会变为了localhost:8080/springbootdemo/user/data
去除spring boot启动图标
启动的时候,命令行会出现一个Spring Boot的页面
不知道为什么,我这里启动的图标怎么看都不像Spring Boot。。
我们想要去除这个图标,可以修改application中的启动方式来达到目的
package com.wan.springbootdemo;
import org.springframework.boot.Banner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootdemoApplication {
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(SpringbootdemoApplication.class);
// 去除启动控制台Spring Boot的图标
springApplication.setBannerMode(Banner.Mode.OFF);
springApplication.run(args);
}
}
热部署
想要实现修改文件,而不想要重启application,可以进行热部署设置,设置很简单,只需要添加下面的这个依赖即可(之前创建项目的时候其实已经添加了此依赖)
<!-- 自动加载SpringBoot的更改 无需重启引导类 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
可能还需要进行下面的运行配置:
整合MyBatis
1.添加依赖
<!-- 使用mybatis连接池,之后需要配置驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--mybatis驱动-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
2.创表、创实体类和mapper
创表和创建实体类,还有创建对应的mapper.xml和mapper.java文件
这里需要注意,mapper接口文件需要加上注解@Repository
,需要spring进行管理,之后我们需要一个对应的Service.java,包含着mapper接口,使用spring把mapper自动装载
package com.wan.mofang.service;
import com.wan.mofang.mapper.UserMapper;
import com.wan.mofang.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author StarsOne
* @date Create in 2019/10/28 0028 22:46
* @description
*/
@Service
public class UserService {
@Autowired
UserMapper userMapper;//自动装载的对象
public List<User> selectAll(User user) {
return userMapper.selectAll(user);
}
}
UserController.java
package com.wan.mofang.controller;
import com.wan.mofang.model.User;
import com.wan.mofang.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author StarsOne
* @date Create in 2019/10/28 0028 22:54
* @description
*/
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;//自动装载
@RequestMapping("selectAll")
public List<User> selectAll(User user) {
return userService.selectAll(user);
}
}
PS:这里,需要注意的,如果是传入一个实体类,url传入的参数名要与User中的成员变量名一致,如果是String类型或者是Int类型,则url传入的参数则与参数名对应
如有下面的一个controller里面方法:
@RequestMapping("selectAll")
public List<User> selectAll(String username) {
return userService.selectAll(user);
}
传入的url为url=xx?username=xx
3.修改配置文件
这里使用yml来配置,当然,使用properties文件也可以,根据实际情况,进行修改(修改application-dev.yml)
application.yml
spring:
profiles:
active: dev
application-dev.yml
server:
port: 端口号,默认不写就是8080
servlet:
context-path: 项目上下文
spring:
datasource:
username: 数据库用户名
password: 数据库密码
url: 数据库地址
driver-class-name: 直接打mysql会有提示
mybatis:
mapper-locations: classpath:mapping/*Mapper.xml
type-aliases-package: 好像配置了别名没有启动作用
#showSql
logging:
level:
com:
example:
mapper : debug
PS:这里yml文件需要注意格式,冒号后需要一个空格
4.开启自动扫描
在Spring Boot启动类使用注解MapperScan
,参数为mapper.java文件所在的包,就会自动扫描并生成mapper的bean对象
package com.wan.mofang;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("com.wan.mofang.mapper")
@SpringBootApplication
public class MofangApplication {
public static void main(String[] args) {
SpringApplication.run(MofangApplication.class, args);
}
}
简单来说,就是在yml配置文件中配置Mapper.xml文件所在的目录(resources),在入口类Application中配置mapper.java文件所在的目录(包名)
Junit测试
直接创建一个入口类的对应的Test,之后使用上注解SpringBootTest
,指定入口类,之后,需要的文件使用注解Autowired
进行自动装载,
@SpringBootTest(classes = MofangApplication.class)
class MofangApplicationTests {
@Autowired
UserService userService;
@Test
void testSelectALl(){
List<User> user = userService.selectALl();
...
}
}
Spring框架学习笔记(5)——Spring Boot创建与使用的更多相关文章
- Spring框架学习笔记(8)——spring boot+mybatis plus+mysql项目环境搭建
之前写的那篇Spring框架学习笔记(5)--Spring Boot创建与使用,发现有多小细节没有提及,,正好现在又学习了mybatis plus这款框架,打算重新整理一遍,并将细节说清楚 1.通过I ...
- Spring框架学习笔记(1)
Spring 框架学习笔记(1) 一.简介 Rod Johnson(spring之父) Spring是分层的Java SE/EE应用 full-stack(服务端的全栈)轻量级(跟EJB比)开源框架, ...
- 手写Spring框架学习笔记
以下是咕泡公开课的学习笔记 一.创建工程springdemo 二.在pom中配置servlet <dependency> <groupId>javax.servlet</ ...
- Spring框架学习笔记(3)——SpringMVC框架
SpringMVC框架是基于Spring框架,可以让我们更为方便的进行Web的开发,实现前后端分离 思路和原理 我们之前仿照SpringMVC定义了一个自定义MVC框架,两者的思路其实都是一样的. 建 ...
- spring框架学习笔记7:事务管理及案例
Spring提供了一套管理项目中的事务的机制 以前写过一篇简单的介绍事务的随笔:http://www.cnblogs.com/xuyiqing/p/8430214.html 还有一篇Hibernate ...
- Spring框架学习笔记(1)——HelloWorld
1.创建一个新的项目,并添加Spring框架 2.创建HelloWorld.java package com.broadtext.beans.helloworld; public class Hell ...
- spring框架学习笔记4:SpringAOP实现原理
AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善.OOP引入 ...
- spring框架学习笔记6:JDBC模板
JDBC模板:Spring中对数据库的操作. 这一部分对熟悉DBUtils的QueryRunner的开发者来说,非常简单 这是以前我简单写的dbutils的知识: http://www.cnblogs ...
- spring框架学习笔记1:搭建测试
Spring框架介绍: Spring框架涵盖了web.service.dao三层,本身是一个存放对象的容器 形象来说:Spring是项目中对象管家 Spring框架的两大核心思想:控制反转(IOC). ...
随机推荐
- alpha测试和beta测试的区别
alpha测试版,有点相当于内部测试,一般开发人员在场 ,是由用户做测试,但开发人员在场,一般是请用户到开发现场去测试 beta测试版,完全交给用户,由用户做测试,返回测试报告,相当于发行前的一 ...
- selenium基于java 一 软件安装
学习网站 http://www.testclass.net/selenium_java/ 一·安装java环境及eclipse,网上教程较多不讲 二·下载火狐浏览器(旧版) 下载地址:链接: http ...
- Scrapy项目 - 实现百度贴吧帖子主题及图片爬取的爬虫设计
要求编写的程序可获取任一贴吧页面中的帖子链接,并爬取贴子中用户发表的图片,在此过程中使用user agent 伪装和轮换,解决爬虫ip被目标网站封禁的问题.熟悉掌握基本的网页和url分析,同时能灵活使 ...
- volatile 关键字的作用
简介Java 语言提供了一种稍弱的同步机制,即 volatile 变量,用来确保将变量的更新操作通知到其他线程.volatile 变量具备两种特性:变量可见性.禁止重排序. 作为同步锁在访问 vola ...
- python3连接MySQL实现增删改查
PyMySQL 安装 在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装. PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL. 如果还未安 ...
- 一文搞定 SonarQube 接入 C#(.NET) 代码质量分析
1. 前言 C#语言接入Sonar代码静态扫描相较于Java.Python来说,相对麻烦一些.Sonar检测C#代码时需要预先编译,而且C#代码必须用MSbuid进行编译,如果需要使用SonarQub ...
- linux无法安装应用
需安装flex 和bison 一般需要更新软件源 root权限 下 apt-get update apt-get upgrade 如果出现以下问题,先查看网络是否畅通: ping 192.168.0. ...
- pycharm导入自己写的包的时候,不能识别模块的解决办法
今天用写selenium脚本的时候导入自己统计目录下的模块时,出错,明明存在但是报错说模块不存在,找了半天终于找到解决方案,顺便记录一下吧 pycharm不会将当前文件目录自动加入自己的sourse_ ...
- Paid Roads POJ - 3411
A network of m roads connects N cities (numbered from 1 to N). There may be more than one road conne ...
- 大型php网站性能和并发访问优化方案
网站性能优化对于大型网站来说非常重要,一个网站的访问打开速度影响着用户体验度,网站访问速度慢会造成高跳出率,小网站很好解决,那对于大型网站由于栏目多,图片和图像都比较庞大,那该怎么进行整体性能优化呢? ...