Spring Boot 微框架(上)

简介: Spring Boot 微框架

Spring Boot 微框架


0. 近期spring boot 2.5.0、2.4.6、2.3.11 正式发布。


<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.5.0</version>
</parent>


新特性


支持 Java16
支持 Gradle7
增强 Docker 镜像构建工具
全新的数据源加载机制


重要变更说明


数据源相关变更


spring.datasource.* 已被 spring.sql.init.* 属性替代。

Flyway 和 Liquibase 需要指定单独的 username / password,不再从 datasource 继承。


不再维护 spring data solr , 从此版本开始 已经开始从源码中移除。


断点 /info 不再通过 web 暴露,如果类中包含 spring security,需要安全验证。


EL 语法实现由 tomcat-embed-el 替代为 jakrta-el。


Error View 异常页面中不会包含 具体的错误信息,如果需要则可以通过 server.error.include-message开启。


通过 logging.register-shutdown-hook 属性可以在 jvm 退出时释放日志资源。


1. springboot的引言


Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的 初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不 再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应 用开发领域(rapid application development)成为领导者。


springboot(微框架) = springmvc(控制器) + spring(项目管理)



2. springboot的特点


  1. 创建独立的Spring应用程序
  2. 嵌入的Tomcat,无需部署WAR文件
  3. 简化Maven配置
  4. 自动配置Spring
  5. 没有XML配置



3. springboot的环境搭建

环境要求:

  1. MAVEN 3.x+
  2. Spring FrameWork 5.x+
  3. JDK8.x +
  4. Spring Boot 2.2.x+


3.1 项目中引入依赖


    <!--继承springboot的父项目-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
    </parent>
    <dependencies>
        <!--引入springboot的web支持-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>


3.2 引入配置文件

项目中src/main/resources/application.yml

3.3 建包并创建控制器


//在项目中创建指定的包结构
/*
   com
      +| libin
          +| controller */ 
                  @Controller
                  @RequestMapping("/hello")
                  public class HelloController {
                    @RequestMapping("/hello")
                    @ResponseBody
                    public String hello(){
                      System.out.println("======hello world=======");
                      return "hello";
                    }
                  }


3.4 编写入口类


//在项目中如下的包结构中创建入口类 Application
/*
  com
    +| libin                  */
            @SpringBootApplication
            public class Application {
                public static void main(String[] args) {
                    SpringApplication.run(Application.class,args);
                }
            }


3.5 运行main启动项目


o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8989 (http)
com.libin.Application : Started Application in 2.152 seconds (JVM running for 2.611)
//说明:  出现以上日志说明启动成功


3.6 访问项目


//注意: springboot的项目默认没有项目名
//访问路径:  http://localhost:8080/hello/hello


4. 启动tomcat端口占用问题

server:
  port: 8999                 #用来指定内嵌服务器端口号
  context-path: /springboot  #用来指定项目的访问路径


5. springboot相关注解说明


# Spring boot通常有一个名为 xxxApplication的类,入口类中有一个main方法, 在main方法中使用SpringApplication.run(xxxApplication.class,args)启动springboot应用的项目。
# @SpringBootApplication 注解等价于: 
  @SpringBootConfiguration           标识注解,标识这是一个springboot的配置类
  @EnableAutoConfiguration           自动与项目中集成的第三方技术进行集成
  @ComponentScan                     扫描入口类所在子包以及子包后代包中注解  


6. springboot中配置文件的拆分


#说明: 在实际开发过程中生产环境和测试环境有可能是不一样的 因此将生产中的配置和测试中的配置拆分开,是非常必要的在springboot中也提供了配置文件拆分的方式. 这里以生产中项名名称不一致为例:
  生产中项目名为: cmfz
  测试中项目名为: springboot
  端口同时为:   8080
拆分如下:
  #主配置文件:
      application.yml #用来书写相同的的配置
        server:
          port: 8080 #生产和测试为同一个端口
    #生产配置文件:
        application-pord.yml
          server:
            context-path: /cmfz
    #测试配置文件:
        application-dev.yml
          server:
            context-path: /springboot


7.springboot中管理对象创建

7.1 管理单个对象

在springboot中可以管理自定义的简单组件对象的创建可以直接使用注解形式创建。


# 1.使用 @Repository  @Service @Controller 以及@Component管理不同简单对象
  如: 比如要通过工厂创建自定义User对象:


@Component
public class User {
  private String id;
  private String name;
  ......
} 
# 2.通过工厂创建之后可以在使用处任意注入该对象
  如:在控制器中使用自定义简单对象创建
@Controller
@RequestMapping("hello")
public class HelloController {
    @Autowired
    private User user;
    ......
}


7.2 管理多个对象

在springboot中如果要管理复杂对象必须使用@Configuration + @Bean注解进行管理


# 1.管理复杂对象的创建


@Configuration(推荐)|@Component(不推荐)
public class Beans {
    @Bean
    public Calendar getCalendar(){
        return Calendar.getInstance();
    }
}
# 2.使用复杂对象
@Controller
@RequestMapping("hello")
public class HelloController {
    @Autowired
    private Calendar calendar;
    ......
}


# 注意: 
        1.@Configuration 配置注解主要用来生产多个组件交给工厂管理  (注册形式)
        2.@Component     用来管理单个组件             


8. springboot中集成jsp展示

8.1 引入jsp的集成jar包


<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
<!--2.2.5 之后最新版本中无须引入-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>


8.2 引入jsp运行插件


<build>
    <finalName>springboot_day1</finalName>
    <!--引入jsp运行插件-->
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
              <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
            </configuration>
        </plugin>
    </plugins>
</build>


8.3 配置视图解析器



#在配置文件中引入视图解析器
spring:
  mvc:
    view:
      prefix: /     # /代表访问项目中webapp中页面
      suffix: .jsp 
8.4 启动访问jsp页面


http://localhost:8999/cmfz/index.jsp




目录
相关文章
|
6月前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
145 0
|
6月前
SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
161 0
|
3天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
11 2
|
1月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
52 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
1月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
55 2
|
5月前
|
运维 Java 关系型数据库
Spring运维之boot项目bean属性的绑定读取与校验
Spring运维之boot项目bean属性的绑定读取与校验
53 2
|
5月前
|
存储 运维 Java
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
61 2
|
5月前
|
Java Maven
springboot项目打jar包后,如何部署到服务器
springboot项目打jar包后,如何部署到服务器
419 1
|
5月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
53 1
|
5月前
springboot2.4.5使用pagehelper分页插件
springboot2.4.5使用pagehelper分页插件
145 0