赞
踩
Spring Boot 是由 Pivotal 团队提供的全新框架。Spring Boot 是所有基于 Spring Framework 5.0 开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件。
① 创建独立的 Spring 应用程序
② 嵌入的 Tomcat,无需部署 WAR 文件
③ 简化 Maven 配置
④ 自动配置 Spring
⑤ 开箱即用,没有代码生成,也无需 XML 配置。
(1)JDK 环境必须是 1.8 及以上,传送门:jdk1.8.191 下载
(2)后面要使用到 Maven 管理工具 3.2.5 及以上版本.
(3)开发工具建议使用 IDEA
创建步骤
默认springboot扫描的包为主启动类所在的包以及子包。
测试:
- @RestController
- public class Hello {
- @GetMapping("/hello")
- public Map<String ,Object> hello(){
- Map<String,Object> map=new HashMap<>();
- map.put("name","wang");
- return map;
- }
- }
运行程序
第一种: properties属性文件
# 修改springboot中tomcat端口号.
server.port=8888
第二种: yml文件
server:
port: 6666
不管是哪种,他们的名字必须以application开始。
如果两个配置文件同时存在,而且有些内容一样。按照properties的优先级高。
如果有些不一样,两个配置文件不一样的会合并在一起。
student: id: 1 name: xiaoming age: ${a.age} hobby: - LOL - DNF - CF - LOL lists: - LOL - DNF maps: k1: v1 k2: v2 sets: - LOL - DNF - CF - LOL birth: 2019/12/12 a: age: ${random.int(1,100)}
Properties 没有层级关系 使用=赋值
yml 有层级关系 使用: 赋值
两种语法的配置是互补的
读取springboot配置文件中的内容
在application.properties中写入
- student.name=zs
- student.age=18
- student.hobby[0]=sing
- student.hobby[1]=swimming
- student.map.clazz=qy151
创建实体类 将读取application.properties配置文件中的值并赋值给Student类中的属性
- @Data
- @Component //该类对象的创建和销毁都有spring容器来管理
- @ConfigurationProperties(prefix = "student") //读取springboot中的配置内容,读取以前缀为student
- public class Student {
- String name;
- String age;
- String[] hobby;
- Map<String,Object> map;
- }
读取application.yml配置文件中的值并赋值给Student类中的属性
- server:
- port: 8082
-
- student:
- name: zs
- age: 18
- hobby:
- - sing
- - dance
- - rap
- - basketball
- map:
- clazz: qy151
@Value 只能放在我们的类属性上。而且它只能读取基本类型和字符串类型。
为什么要使用profiles?
在开发中,一般有两种环境
1,生产环境 [项目上线,客户在使用中,就是生产环境]
2,开发环境[就是开发环境,不解释]
有时候开发环境和生产环境的配置方法是不一样的,那么如何快速的切换呢,这里就要使用profiles文件
使用方法
1,创建applicatin-developer.properties
server.port=8081
2,创建applicatin-product.properties
server.port=8082
3,修改application.properties
#server.port=8080
spring.profiles.active=developer
4. 测试
5,总结
在application.properteis里面激活哪个文件就会使用哪个端口
web的三个组件: Servlet和Filter以及Linstener监听器。
创建Servlet
- public class MyServlet extends HttpServlet {
-
- @Override
- protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- System.out.println("这时自己定义的servlet~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
- }
- }
配置类
- @Configuration //该类为配置类 xml文件
- public class MyConfig {
-
- @Bean //理解为配置文件中<bean >
- public ServletRegistrationBean<Servlet> registrationBean(){
- //创建一个Servlet注册器.
- ServletRegistrationBean<Servlet> registrationBean=new ServletRegistrationBean<>();
- registrationBean.setName("my");
- registrationBean.setServlet(new MyServlet());
- registrationBean.addUrlMappings("/my");
- return registrationBean;
- }
-
- }
创建Filter
- public class MyFilter implements Filter {
- @Override
- public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
- System.out.println("经过了过滤器");
- filterChain.doFilter(servletRequest,servletResponse);
- }
- }
配置类
- @Configuration //该类为配置类 xml文件
- public class MyConfig {
- @Bean
- public FilterRegistrationBean<Filter> filterRegistrationBean(){
- FilterRegistrationBean<Filter> filterRegistrationBean=new FilterRegistrationBean<>();
- filterRegistrationBean.setName("myfilter");
- filterRegistrationBean.setFilter(new MyFilter());
- filterRegistrationBean.addUrlPatterns("/*");
- return filterRegistrationBean;
- }
- }
自动装配在SpringBoot是基于EnableAutoConfiguration来实现的。springboot的自动装配启动类上的注解@SpringBootApplication有关
spring boot自动装配原理
注解@EnableAutoConfiguraction,@Configuration,@ConditionalOnClass 就是⾃动配置 的核⼼,⾸先它得是⼀个配置⽂件,其次根 据类路径下是否有这个类取⾃动配置。
数据源即数据库中的数据,也就是springboot连接数据库 默认数据源使用的连接池Hikari。如果不想使用默认的连接池,我们可以引入第三方的连接池。如druid
(1)导入依赖
- <!--加入数据源的启动依赖: springboot启动时会加载对应的自动装配类。-->
- <dependency>
- <groupId>repMaven.org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-jdbc</artifactId>
- <version>2.6.7</version>
- </dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- </dependency>
(2)配置数据源信息—application.properties
- spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
- spring.datasource.url=jdbc:mysql://localhost:3306/mydb?serverTimezone=Asia/Shanghai
- spring.datasource.username=root
- spring.datasource.password=123456
(3)单元测试
- @SpringBootTest
- class ApplicationTests {
-
- @Autowired
- private DataSource dataSource;
-
- @Test
- void contextLoads() throws SQLException {
- System.out.println(dataSource.getConnection());
- }
- }
(1)引入依赖
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid-spring-boot-starter</artifactId>
- <version>1.2.8</version>
- </dependency>
(2)配置文件
- spring.datasource.druid.url=jdbc:mysql://localhost:3306/mydb?serverTimezone=Asia/Shanghai
- spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
- spring.datasource.druid.username=root
- spring.datasource.druid.password=123456
- #初始化的个数
- spring.datasource.druid.initial-size=5
- # 最大活跃数
- spring.datasource.druid.max-active=10
- # 最大等待时间
- spring.datasource.druid.max-wait=3000
- # 最小的闲置个数
- spring.datasource.druid.min-idle=5
(3)测试
- @Test
- void test01() {
- System.out.println(dataSource);
- }
(1)引入依赖
-
- <dependency>
- <groupId>org.mybatis.spring.boot</groupId>
- <artifactId>mybatis-spring-boot-starter</artifactId>
- <version>2.2.2</version>
- </dependency>
(2)修改配置文件
- #指定映射文件的路径
- mybatis.mapper-locations=classpath:mapper/*.xml
(3)创建数据
(1)创建实体类
- @Data
- public class Dept {
- private Integer id;
- private String name;
- private String address;
- }
(2)在dao层中写一个简单得查询接口
- @Mapper
- @Component
- public interface DeptDao {
- Dept findById (Integer id);
- List<Dept> findAll();
- }
(3)在mapper层中写查询语句
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="com.example.dao.DeptDao">
- <select id="findById" resultType="com.example.entity.Dept">
- select * from tb_dept where id=#{id}
- </select>
- <select id="findAll" resultType="com.example.entity.Dept">
- select * from tb_dept
- </select>
-
- </mapper>
(4)在主启动类上加入注解
- @SpringBootApplication
- @MapperScan(basePackages = "com.example.dao") //为指定包下的接口生成代理实现类
- public class DemoApplication {
- public static void main(String[] args) {
- SpringApplication.run(DemoApplication.class,args);
- }
-
- }
(5) 测试
- @Autowired
- private DeptDao deptDao;
- @Test
- void test02(){
- System.out.println(deptDao.findById(4));
- }
(1)引入依赖
- <dependency>
- <groupId>com.github.pagehelper</groupId>
- <artifactId>pagehelper-spring-boot-starter</artifactId>
- <version>1.4.2</version>
- </dependency>
(2) 测试
- @Autowired
- private DeptDao deptDao;
- @Test
- void test03() {
- PageHelper.startPage(1,10);
- List<Dept> list = deptDao.findAll();
- PageInfo<Dept> pageInfo = new PageInfo<>(list);
- System.out.println("当前页数"+pageInfo.getPageNum());
- System.out.println("当前总页码"+pageInfo.getPages());
- System.out.println("总条数"+pageInfo.getTotal());
- System.out.println("当前页码的纪录"+pageInfo.getList());
- }
swagger它是一个接口文档----用来前后端分离的一款文档。
swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。
@Api:修饰整个类,描述Controller的作用
@ApiOperation:描述一个类的一个方法,或者说一个接口
@ApiParam:单个参数描述
@ApiModel:用对象来接收参数
@ApiModelProperty:用对象接收参数时,描述对象的一个字段
@ApiImplicitParam:一个请求参数
@ApiImplicitParams:多个请求参数
(1)引入依赖
- <dependency>
- <groupId>com.spring4all</groupId>
- <artifactId>swagger-spring-boot-starter</artifactId>
- <version>1.9.1.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>com.github.xiaoymin</groupId>
- <artifactId>swagger-bootstrap-ui</artifactId>
- <version>1.7.8</version>
- </dependency>
(2)创建swagger配置类
-
- @Configuration
- public class SwaggerConfig {
-
- @Bean //swagger中所有的功能都封装再Docket类中。
- public Docket docket() {
- Docket docket = new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(apiInfo())//设置api文档信息
- .select()
- .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller")) //指定为哪些包下的类生成接口文档。
- .build()
- ;
-
- return docket;
- }
-
- //定义自己接口文档信息
- private ApiInfo apiInfo() {
- Contact DEFAULT_CONTACT = new Contact("名称", "www.baidu.com", "www.baidu.com");
- ApiInfo apiInfo = new ApiInfo("CRUD", "对tb_dept表进行增删改查", "3.0T", "www.baidu.com",
- DEFAULT_CONTACT, "AAA", "www.baidu.com", new ArrayList<VendorExtension>());
-
- return apiInfo;
- }
- }
(3)在主启动类中开启swagger注解
(4)访问
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。