SpringBoot 1

SpringBoot 1

Spring框架发展史

Spring框架是Java平台的企业级应用程序开发框架,从Spring 1.x到Spring 5.x,逐步增强了功能和性能,完善了对新技术的支持,包括引入注解配置、支持Java 5、Java 8和Java 9、支持响应式编程、支持Java EE规范等。这些更新使Spring框架更加灵活、高效和易用,为Java应用程序的开发和部署提供了强有力的支持。

Spring5.X 应用零配置开发

推荐使用注解的形式对java应用程序进行开发。

注解

  • 声明Bean注解

    @Component: 组件 没有明确规定其⻆⾊,作⽤在类级别上声明当前类为⼀个业务组件,被Spring Ioc 容器维护
    
    @Service: 在业务逻辑层(Service 层)类级别进⾏声明
    
    @Repository: 在数据访问层(dao 层) 类级别声明
    
    @Controller: 在展现层(MVC) 使⽤ 标注当前类为⼀个控制器
    
  • 注入Bean注解

    @AutoWired: Spring 官⽅提供注解
    
    @Inject: JSR-330 提供注解(标准制定⽅)
    
    @Resource: JSR-250 提供注解
    

    ​ 以上三种注解在 Set ⽅法或属性上声明,⼀般情况下通⽤⼀般开发中更习惯声明在属性上,代码简洁清晰。基于 5.x 注解配置⽅式简化了xml 配置,应⽤程序开发与xml 环境配置均通过相应注解来实现。

  • Spring5.x中配置与获取Bean注解

    @Configuration: 作⽤与类上,将当前类声明为⼀个配置类,相当于⼀个xml 配置⽂件
    
    @ComponentScan: ⾃动扫描指定包下标注有@Repository,@Service,@Controller
    
    @Component: 注解的类并由Ioc 容器进⾏实例化和维护
    
    @Bean: 作⽤于⽅法上,相当于xml ⽂件中<bean> 声明当前⽅法返回值为⼀个bean
    
    @Value: 获取properties ⽂件指定key value值
    
  • 组合注解与元注解

    Spring 从2.x版本开始引⼊注解⽀持(⽬的是jdk1.5中推出注解功能),通过引⼊注解来消除⼤量xml 配置,Spring引⼊注解主要⽤来注⼊ bean 以及 aop 切⾯相关配置,但由于注解⼤量使用,就会造成⼤量重复注解代码出现,代码出现了重复,Spring 为了消除重复注解,在元注解上引⼊了组合注解,其实可以理解为对代码的重构,相当于注 解的注解,拥有元注解的原始功能,⽐如在定义配置类时⽤到的 @Configuration 注解就是组合注解,拥有 @Component 注解功能,即配置类本⾝也是⼀个被 IOC 维护的单例 Bean。

SpringMVC 应用零配置开发

基于 Spring Mvc 5.X 使⽤ Maven 搭建 SpringMvc Web项⽬,通过 Spring 提供的注解与相关配置来对项⽬进⾏创建与部署。

  • 创建Spring MVC Web工程

  • pom.xml添加坐标相关配置

  • 添加源代码

  • 添加视图

  • SpringMVC配置类添加

    Spring Mvc 配置信息 MvcConfig ⽂件添加,作为 Mvc 框架环境,原来是通过 xml 来进⾏配置 (视图解析器、Json转换器、⽂件上传解析器等),这⾥基于注解通过继承 WebMvcConfigurerAdapter 类并重写相关⽅法来进⾏配置 (注意通过 @EnableWebMvc 注解来启动 MVC 环境)。

    MvcConfig 类定义好了,那么问题来了,怎么加载 MvcConfig 类呢,原来在构建 Mvc 应⽤时是通过容器启动应⽤时加载 web.xml ⽂件实现配置⽂件加载,现在的环境 web.xml ⽂件不存在,此时基于注解⽅式构建的 Mvc 应⽤,定义 WebInitializer 实现 WebApplicationInitializer 接⼝ (该接⼝⽤来配置 Servlet3.0+ 配置的接⼝,⽤于替代 web.xml 配置),当 servlet 容器启动Mvc应⽤时会通过 SpringServletContainerInitializer 接⼝进⾏加载,从⽽加载Mvc 应⽤信息配置。实现该接⼝ onStartup ⽅法 ,加载应⽤信息配置。

  • 入口文件代码添加

  • 部署与测试

    当项⽬访问成功后,那么问题来了,如果项⽬中存在静态资源⽂件,Handler 放⾏处理该如何配置,定义的拦截 器怎么应⽤,此时关注 WebMvcConfigurationSupport ⽗类⽅法,重写相关⽅法即可。

SpringMVC 是一种基于 Spring 框架的 Web 开发框架,传统的 SpringMVC 应用需要在 XML 配置文件中进行大量的配置,使得开发工作变得繁琐和复杂。但是,自从 Spring 3.1 版本引入了基于注解的零配置开发(Zero Configuration)功能,SpringMVC 的开发变得更加简单和高效。

在 SpringMVC 应用的零配置开发中,不需要编写任何 XML 配置文件,只需要在 Java 代码中添加注解即可完成对应的配置。下面将简单介绍几个常用的注解,以展示 SpringMVC 零配置开发的强大功能。

@Configuration

该注解用于标记某个类是配置类,即该类中的方法可以用来配置 SpringMVC 应用。

@EnableWebMvc

该注解用于启用 SpringMVC 应用,即告诉 SpringMVC 框架,这是一个 Web 应用程序。

@ComponentScan

该注解用于告诉 SpringMVC 框架扫描哪些包下的组件,如控制器(Controller)、服务(Service)和数据访问对象(DAO)等。

@Controller

该注解用于标记某个类是控制器,即处理客户端请求的 Java 类。使用该注解的类中的方法可以通过 @RequestMapping 注解来映射客户端请求。

@RequestMapping

该注解用于将某个 URL 请求映射到一个方法上。可以在类级别和方法级别上使用该注解,用于处理不同的请求。

@RequestParam

该注解用于从客户端请求中获取请求参数,并传递给处理请求的方法。可以指定参数名,如果请求中没有该参数,则可以指定默认值。

示例代码

下面是一个简单的 SpringMVC 零配置开发示例代码:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controller")
public class AppConfig {

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

    @Controller
    public static class HomeController {
        @RequestMapping("/")
        public String home() {
            return "home";
        }
    }
}

在上面的代码中,@Configuration 注解表明这是一个配置类,@EnableWebMvc 注解表明启用了 SpringMVC,@ComponentScan 注解指定了扫描的包路径。然后通过 @Bean 注解创建了一个视图解析器 ViewResolver,并设置了视图的前缀和后缀。最后,通过 @Controller 和 @RequestMapping 注解来创建一个控制器 HomeController,并将 “/” 请求映射到 home 方法上,返回视图名称 “home”。

可以看出,零配置开发使得 SpringMVC 应用的开发变得更加简单和高效,大大减少了开发人的工作量和代码复杂度,同时提高了代码的可读性和可维护性。除了上述注解外,SpringMVC 还提供了很多其他注解和功能,如拦截器、视图解析器、数据绑定、数据验证等,可以根据实际需求灵活使用。

总之,使用 SpringMVC 零配置开发可以让开发者更加专注于业务逻辑的实现,而无需关注太多的配置细节,从而提高开发效率和质量。

SpringBoot框架概念、优势与快速入门

Spring Boot 使用“习惯优于配置”(项目中存在大量的配置,此外还内置一个习惯性的配置,让你无须手动进行配置)的理念让你的项目快速运行起来。

1)优点

  • 快速构建项目。
  • 对主流开发框架的无配置集成。
  • 项目可独立运行,无须外部依赖Servlet容器。
  • 提供运行时的应用监控。
  • 极大地提高了开发、部署效率。
  • 与云计算的天然集成。

2)缺点

  • 版本迭代速度很快,一些模块改动很大。
  • 由于不用自己做配置,报错时很难定位。
  • 网上现成的解决方案比较少。

SpringBoot核心配置

Spring Boot 默认会读取全局配置⽂件,配置⽂件名固定为:application.properties 或 application.yml,放置在src/main/resources 资源⽬录下,使⽤配置⽂件来修改 SpringBoot ⾃动配置的默认值。

在 resources 资源⽬录下添加 application.properties ⽂件,配置信息如下:

## 项⽬启动端⼝号配置
server.port=8989
## 项⽬访问上下⽂路径
server.servlet.context-path=/mvc
## 数据源配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/hr?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root

或者 application.yml ⽂件:

## 端⼝号 上下⽂路径
server:
 port: 8989
 servlet:
 context-path: /mvc
## 数据源配置
spring:
 datasource:
 type: com.mchange.v2.c3p0.ComboPooledDataSource
 driver-class-name: com.mysql.cj.jdbc.Driver
 url: jdbc:mysql://127.0.0.1:3306/hr
 username: root
 password: root

Freemarker&Thymeleaf 模板集成

Spring Boot是一个快速开发Java Web应用程序的框架,它提供了多种模板引擎的集成,其中包括Freemarker和Thymeleaf。

首先,需要在pom.xml文件中添加对Freemarker或Thymeleaf的依赖。以下是添加Freemarker依赖的示例:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

或者添加Thymeleaf依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

一旦添加了依赖项,就可以创建Freemarker或Thymeleaf模板并将其放置在Spring Boot应用程序的classpath中。

例如,如果创建了一个名为“index.ftl”的Freemarker模板,可以在Spring Boot应用程序中使用以下代码进行渲染:

@Controller
public class HomeController {
    
    @GetMapping("/")
    public String index(Model model) {
        model.addAttribute("message", "Hello World");
        return "index";
    }
}

在Thymeleaf中,可以创建一个名为“index.html”的模板,使用以下代码进行渲染:

@Controller
public class HomeController {
    
    @GetMapping("/")
    public String index(Model model) {
        model.addAttribute("message", "Hello World");
        return "index";
    }
}

在这两个示例中,模板文件的名称用作返回值,Spring Boot会自动查找classpath中的模板文件。

需要注意的是,如果同时使用Freemarker和Thymeleaf,应确保它们的命名空间不会发生冲突。例如,可以将Freemarker模板放在“/templates/freemarker/”目录下,将Thymeleaf模板放在“/templates/thymeleaf/”目录下。此时,在代码中可以使用“return ‘freemarker/index’”或“return ‘thymeleaf/index’”指定模板路径。

以上就是Spring Boot集成Freemarker和Thymeleaf模板的基本步骤。

SpringBoot静态资源文件添加与访问

Spring Boot 允许在项目中添加静态资源文件,如 HTML、CSS、JavaScript、图片等。这些资源文件通常存储在项目的 classpath 下的 /static/public/resources/META-INF/resources 目录中,Spring Boot 默认会自动配置这些目录,将其中的文件映射到网站的根目录。

以下是在 Spring Boot 中添加和访问静态资源文件的一些示例:

  1. 添加静态资源文件

将静态资源文件存储在 src/main/resources/static 目录下即可,Spring Boot 会自动将其映射到网站根目录。例如,如果将 index.html 文件放在 src/main/resources/static 目录下,则可以通过以下 URL 访问它:

http://localhost:8080/index.html
  1. 访问静态资源文件

Spring Boot 默认将静态资源文件映射到网站根目录,因此可以通过相对路径来访问这些文件。例如,在 HTML 文件中,可以使用以下代码来链接到 css 文件夹中的 style.css 文件:

<link rel="stylesheet" href="css/style.css">

如果在项目的 classpath 下的 /static/public/resources/META-INF/resources 目录中,有嵌套的子目录,则可以在 URL 中使用相对路径来访问这些文件,例如:

http://localhost:8080/js/script.js

这将访问位于 src/main/resources/static/js/script.js 目录下的文件。

SpringBoot 应用打包与部署

Spring Boot 应用可以打成 jar 包或者 war 包进行部署,下面分别介绍这两种方式的打包和部署方法。

打包成 Jar 包

打包方式

使用 Maven 或 Gradle 工具进行打包,常用的 Maven 命令为:

mvn clean package

执行完毕后,在 target 目录下生成一个包含所有依赖和 Spring Boot 应用代码的可执行 jar 包,名字一般为 [your-app-name]-[version].jar

部署方式

将 jar 包上传到服务器,然后在命令行运行以下命令即可启动应用:

java -jar [your-app-name]-[version].jar

这会启动 Spring Boot 应用,并在终端输出日志信息。如果需要后台运行应用,可以使用以下命令:

nohup java -jar [your-app-name]-[version].jar >/dev/null 2>&1 &

这会将应用运行在后台,并将日志输出到 nohup.out 文件中。

打包成 War 包

打包方式

使用 Maven 或 Gradle 工具进行打包,常用的 Maven 命令为:

mvn clean package -DskipTests

执行完毕后,在 target 目录下生成一个 war 包,名字一般为 [your-app-name]-[version].war

部署方式

将 war 包上传到服务器,部署到 Tomcat、Jetty 等支持 Servlet 规范的 Web 容器中即可。具体的部署步骤因容器而异,一般包括以下几个步骤:

  1. 将 war 包放到容器的 webapps 目录下。
  2. 启动容器。
  3. 在浏览器中访问应用的 URL,例如 http://localhost:8080/your-app-name

需要注意的是,在 Spring Boot 应用中打包成 war 包后,需要修改启动类(main 方法所在的类)继承自 SpringBootServletInitializer,并重写 configure 方法,例如:

@SpringBootApplication
public class YourApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(YourApplication.class);
    }
}

这样在部署到容器时,容器会自动调用 configure 方法来启动应用。

gBootServletInitializer {

public static void main(String[] args) {
    SpringApplication.run(YourApplication.class, args);
}

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    return builder.sources(YourApplication.class);
}

}


这样在部署到容器时,容器会自动调用 configure 方法来启动应用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值