Spring

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: Spring

基本概念

Spring

Spring 是用于开发 Java 应用程序的开源框架,为解决企业应用开发的复杂性而创建。

  1. Spring 的基本设计思想是利用 IOC(依赖注入)和 AOP (面向切面)解耦应用组件,降低应用程序各组件之间的耦合度。
  2. 在这两者的基础上,Spring 逐渐衍生出了其他的高级功能:如 Security,JPA 等。

Spring MVC

Spring MVC 是 Spring 的子功能模块,专用于 Web 开发。

Spring MVC 基于 Servlet 实现,将 Web 应用中的数据业务、显示逻辑和控制逻辑进行分层设计。开发者可以直接调用 Spring MVC 框架中 Spring 解耦的组件,快速构建 Web 应用。

Spring Boot

Spring Boot 是用于简化创建 Spring 项目配置流程,快速构建 Spring 应用程序的辅助工具。Spring Boot 本身并不提供 Spring 框架的核心特性以及扩展功能。但 在创建 Spring 项目时,Spring Boot 可以:

  1. 自动添加 Maven 依赖,不需要在 pom.xml 中手动添加配置依赖。
  2. 不需要配置 XML 文件,将全部配置浓缩在一个 appliaction.yml 配置文件中。
  3. 自动创建启动类,代表着本工程项目和服务器的启动加载。
  4. 内嵌 Tomcat 、Jetty 等容器,无需手动部署 war 文件。

Spring Boot 配置

依赖

在Spring Boot中,引入的所有包都是 starter 形式:

spring-boot-starter-web-services,针对 SOAP Web Services spring-boot-starter-web,针对 Web 应用与网络接口 spring-boot-starter-jdbc,针对 JDBC spring-boot-starter-data-jpa,基于 Hibernate 的持久层框架 spring-boot-starter-cache,针对缓存支持

默认映射路径

  • classpath:/META-INF/resources/
  • classpath:/resources/
  • classpath:/static/
  • classpath:/public/

优先级顺序:META-INF/resources > resources > static > public

全局配置

位于 resources 文件夹下,支持以下两种格式。由 Spring Boot 自动加载。

  1. application.properties
  2. application.yml
#端口号
server.port=8080
#访问前缀
server.servlet.context-path=/demo
#数据库驱动
jdbc.driver=com.mysql.jc.jdbc.Driver
#数据库链接
jdbc.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
#数据库用户名
jdbc.username=root
#数据库密码
jdbc.password=wdh19970506
#Mybatis
#配置文件路径
mybatis_config_file=mybatis-config.xml
#SQL语句配置路径
mapper_path=/mapper/**.xml
#实体类所在包
type_alias_package=com.example.demo.entityCopy to clipboardErrorCopied
复制代码
  • JDBC 连接 Mysql5 驱动: com.mysql.jdbc.Driver
  • JDBC 连接 Mysql6 驱动: com.mysql.cj.jdbc.Driver , URL 必须要指定时区 serverTimezone !

多重配置

在 Spring Boot 中,我们往往需要配置多个不同的配置文件去适应不同的环境:

  • application-dev.properties 开发环境
  • application-test.properties 测试环境
  • application-prod.properties 生产环境

只需要在程序默认配置文件 application.properties 中设置环境,就可以使用指定的配置。

spring.profiles.active=devCopy to clipboardErrorCopied
复制代码

启动类

@SpringBootApplication 类:作为程序入口,在创建 Spring Boot 项目时自动创建。

等同于 @Configuration + @EnableAutoConfiguration + @ComponentScan ,会自动完成配置并扫描路径下所有包。

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}Copy to clipboardErrorCopied
复制代码

Spring 需要定义调度程序 servlet ,映射和其他支持配置。我们可以使用 web.xml 文件或 Initializer 类来完成此操作:

public class MyWebAppInitializer implements WebApplicationInitializer {
    @Override
    public void onStartup(ServletContext container) {
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        context.setConfigLocation("com.pingfangushi");
          container.addListener(new ContextLoaderListener(context));
          ServletRegistration.Dynamic dispatcher = container
          .addServlet("dispatcher", new DispatcherServlet(context));
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("/");
    }
}Copy to clipboardErrorCopied
复制代码

还需要将 @EnableWebMvc 注释添加到 @Configuration 类,并定义一个视图解析器来解析从控制器返回的视图:

@EnableWebMvc
@Configuration
public class ClientWebConfig implements WebMvcConfigurer { 
   @Bean
   public ViewResolver viewResolver() {
      InternalResourceViewResolver bean
        = new InternalResourceViewResolver();
      bean.setViewClass(JstlView.class);
      bean.setPrefix("/WEB-INF/view/");
      bean.setSuffix(".jsp");
      return bean;
   }
}


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
负载均衡
《从零开始手写RPC框架》电子书升级啦!
大家好,我是冰河~~ 今天跟大家正式宣布一个好消息,冰河的《从零开始手写RPC框架(基础篇)》电子书,升级啦! 这本电子书中包含哪些内容呢?小伙伴们可以直接拉到文末查看获取方式,也可以先听冰河吹一吹这本电子书的内容。
689 0
《从零开始手写RPC框架》电子书升级啦!
|
4天前
|
机器学习/深度学习 人工智能 JSON
让ChatGPT更懂你:深入浅出解析大模型微调中的强化学习(PPO/DPO篇)
本文深入浅出解析大模型对齐人类偏好的两大核心方法:PPO(需训练奖励模型、在线优化,强但复杂)与DPO(直接学习“好vs差”对比数据、离线高效、更易用)。对比原理、流程与实践,揭示为何DPO正成为主流选择,并强调高质量偏好数据与平台化工具的关键价值。(239字)
90 9
让ChatGPT更懂你:深入浅出解析大模型微调中的强化学习(PPO/DPO篇)
|
3月前
|
监控 数据挖掘 API
淘宝天猫商品详情API全攻略
淘宝天猫商品详情API是淘宝开放平台的核心接口,支持通过商品ID获取标题、价格、库存、SKU等全维度信息,采用RESTful设计,实时高效,适用于比价系统、库存监控、智能选品等电商应用开发与数据分析场景。
|
9月前
|
数据可视化 开发者 智能硬件
鸿蒙5开发宝藏案例分享---一多断点开发实践
本文深入解析鸿蒙开发中的六大核心案例,涵盖动态网格布局、自适应导航栏、阅读器分栏模式、视频播放器多形态适配、数据看板动态布局及表单自动优化。通过具体应用场景与代码实现,解决多端适配痛点,如手机单列到平板多列的智能计算、折叠屏半开状态特殊布局等。同时提供开发者避坑指南与终极适配方案架构,帮助开发者灵活应对复杂需求,提升开发效率。
|
XML JSON 前端开发
深入对比TOML,JSON和YAML
坦率地说,在我开始与Hugo TOML合作之前,我感到羞耻是一个需要发现的新领域,但我对YAML和JSON非常熟悉。本文将帮助您了解如何通过不同的数据格式构建数据。       在Hugo中,您可以将所有这三种数据格式用于配置,前置事项和自定义数据,但TOML是用于整个项目的推荐格式。
10642 179
|
CDN
点播试看功能最佳实践
## 简介 试看指用户在观看视频或者音频等内容时,只能观看指定时间(如前五分钟)的内容,通常用于会员等付费业务场景。 阿里云视频点播服务提供了试看的完整解决方案,您可自由设置试看时长(或观看完整视频),播放服务会根据设置提供含有试看限制的特定的播放地址,可借此来实现完整的试看功能。 ## 使用前提 试看的基本原理是,播放的CDN加速地址带有试看的指定时长信息,云端会对该信息进行鉴权,鉴
3868 0
|
数据安全/隐私保护
Ansible报错:“msg“: “Invalid/incorrect password: Permission denied, please try again.“
Ansible报错:“msg“: “Invalid/incorrect password: Permission denied, please try again.“
1481 0
Ansible报错:“msg“: “Invalid/incorrect password: Permission denied, please try again.“
|
存储 分布式计算 BI
基于交互式分析搭建的典型应用场景
交互式分析经过在阿里巴巴集团近3年的沉淀,已覆盖上百个业务团队,今天小编将会从技术的角度为大家解读交互式分析的架构亮点,以及基于交互式分析架构搭建的典型应用场景介绍。
2721 0
|
数据格式
ini格式数据生成与解析详解
INI文件的命名来源,是取自英文“初始(Initial)”的首字缩写,正与它的用途——初始化程序相应。INI文件是一个无固定标准格式的配置文件。它以简单的文字与简单的结构组成,常常使用在windows或是其他OS(Linux等)上。
954 0