开发一个 Spring Boot 项目通常遵循以下基本步骤:
-
项目初始化:
- 使用 Spring Initializr 在官网或者IDE中初始化一个新的 Spring Boot 项目。在初始化过程中,你可以选择项目的基本信息、依赖库、构建工具等。
- 选择合适的构建工具(如 Maven、Gradle)和开发工具(如 IntelliJ IDEA、Eclipse),创建项目。
-
依赖配置:
- 根据项目需求,在
pom.xml(如果使用 Maven)或build.gradle(如果使用 Gradle)中配置所需的依赖库,例如 Spring Boot Starter、数据库驱动、Web 框架、模板引擎等。
- 根据项目需求,在
-
编写业务代码:
- 创建控制器(Controller)、服务(Service)、数据访问对象(DAO)等业务组件。
- 编写业务逻辑代码,实现项目的具体功能。可以采用面向对象的设计原则和模式,例如 MVC 模式、依赖注入等。
-
配置文件:
- 编写
application.properties或application.yml配置文件,配置应用程序的属性、数据库连接、日志等信息。可以根据不同的环境(如开发、测试、生产)创建不同的配置文件。
- 编写
-
单元测试:
- 编写单元测试代码,验证业务逻辑的正确性。可以使用 JUnit、Mockito 等测试框架进行单元测试。
-
启动应用:
- 运行主应用类(通常是带有
@SpringBootApplication注解的类),启动 Spring Boot 应用程序。Spring Boot 会自动加载配置并启动嵌入式的 Tomcat 服务器。
- 运行主应用类(通常是带有
-
调试与优化:
- 在开发过程中进行调试,排查问题并优化代码。
- 监控应用程序的性能和资源使用情况,根据需要进行优化。
-
部署上线:
- 将项目打包成可执行的 JAR 文件或 WAR 文件。
- 将打包好的文件部署到服务器上,启动应用程序。
-
监控与维护:
- 部署后,持续监控应用程序的运行状态,保证应用的稳定性和可用性。
- 定期维护,及时处理 bug 和问题,不断优化和改进应用程序。
1. 说说SpringBoot相较于SpringMVC优缺点?
Spring Boot 优点:
- 简化配置: Spring Boot 提供了自动配置的功能,大部分情况下不需要手动配置,减少了开发人员的工作量。
- 快速启动: Spring Boot 可以快速启动一个独立的应用程序,不需要配置繁琐的环境,提高了开发效率。
- 集成度高: Spring Boot 集成了大量常用的第三方库和组件,可以方便地进行开发,如集成了 Tomcat、Jetty 等 Web 容器。
- 内嵌服务器: Spring Boot 支持内嵌式的服务器,可以将应用程序打包成一个可执行的 JAR 文件,方便部署和运行。
- 微服务支持: Spring Boot 对微服务架构有很好的支持,可以方便地构建和管理微服务应用。
Spring Boot 缺点:
- 学习曲线: 对于初学者来说,Spring Boot 的自动配置和约定大于配置的特性可能会增加学习的难度。
- 灵活性降低: 由于 Spring Boot 的自动配置,有时会导致灵活性降低,不够灵活地定制配置。
- 依赖冲突: 当项目中引入多个依赖时,可能会出现依赖冲突的问题,需要进行排查和解决。
Spring MVC 优点:
- 灵活性高: Spring MVC 提供了丰富的配置选项和灵活的组件组合方式,可以满足各种复杂的业务需求。
- 定制性强: Spring MVC 可以根据实际需求灵活地定制各种组件和功能,满足个性化的开发需求。
- 生态丰富: Spring MVC 作为 Spring Framework 的一部分,可以与 Spring 生态中的其他组件无缝集成,如 Spring Security、Spring Data 等。
- 可扩展性好: Spring MVC 提供了丰富的扩展点和接口,可以方便地进行功能扩展和定制。
Spring MVC 缺点:
- 繁琐的配置: Spring MVC 需要手动配置大量的 XML 或 Java 注解,配置相对繁琐,增加了开发人员的工作量。
- 启动慢: Spring MVC 项目启动较慢,需要加载大量的配置和组件,启动时间较长。
- 项目依赖: Spring MVC 需要依赖于 Spring Framework,如果项目只需要部分功能,可能会引入不必要的依赖
2. 说说@Autowired 与@Resource的区别?
@Autowired 和 @Resource 都是用于依赖注入的注解,但它们有一些区别:
-
来源不同:
@Autowired是 Spring 提供的注解,用于自动装配 Bean。@Resource是 Java EE 提供的注解,也可以用于依赖注入,但是其主要作用是通过名称进行注入。
-
装配规则不同:
@Autowired默认按照类型(byType)进行自动装配,如果有多个类型匹配的 Bean,则会报错,可以通过@Qualifier指定 Bean 的名称。@Resource默认按照名称(byName)进行自动装配,如果找不到对应名称的 Bean,则按照类型匹配。可以通过name属性指定 Bean 的名称。
-
使用范围不同:
@Autowired注解可以用在字段、构造方法、Setter 方法以及其他注入点(如方法参数)上。@Resource注解主要用于字段和方法,不建议用于构造方法。
-
所属框架不同:
@Autowired是 Spring Framework 提供的注解,通常与 Spring 相关的组件一起使用。@Resource是 Java EE 提供的注解,在 Java EE 环境中也可以使用,不过在 Spring 中也是支持的。
3. 平时在浏览器中直接访问域名时不需要输入端口,是否不需要端口号,如果需要,端口号是多少?
通常情况下,浏览器直接访问域名时会默认使用的是标准端口,比如:
- HTTP 协议默认端口是 80
- HTTPS 协议默认端口是 443
因此,如果你直接在浏览器中输入域名(比如 example.com),并且你的网站使用了标准的 HTTP 或 HTTPS 协议,就不需要手动输入端口号。浏览器会自动使用默认的端口来访问。
但是,如果你的网站使用了非标准端口,比如 example.com:8080,那么在访问时就需要手动输入端口号。在这种情况下,端口号是 8080。
综上所述,如果网站使用的是标准的 HTTP 或 HTTPS 协议,并且没有特别指定端口号,那么在浏览器中直接访问域名时是不需要输入端口号的。
4. Spring Boot有哪些优点?
Spring Boot 是一个用于简化 Spring 应用开发的框架,它具有许多优点,包括但不限于以下几点:
-
简化配置:Spring Boot 提供了自动配置的功能,大多数情况下不需要手动配置,只需按照约定即可使用默认配置,极大地简化了项目的配置过程。
-
快速启动:Spring Boot 使用嵌入式的 Tomcat、Jetty 或 Undertow 等服务器,可以将应用程序打包成可执行的 JAR 文件,只需运行一个命令即可启动应用,简化了部署和启动过程。
-
集成性强:Spring Boot 集成了大量常用的第三方库和框架,包括 Spring MVC、Spring Data、Spring Security 等,开发者可以方便地使用这些库来构建应用程序。
-
生态丰富:Spring Boot 生态系统庞大,拥有大量的插件和扩展,可以轻松地集成各种功能和服务,比如数据库、消息队列、缓存等,满足不同应用场景的需求。
-
微服务支持:Spring Boot 提供了对微服务架构的良好支持,可以快速构建和部署微服务应用,并且可以轻松地集成服务注册与发现、负载均衡、断路器等微服务相关的功能。
-
自动化测试:Spring Boot 提供了测试支持,可以方便地编写单元测试、集成测试和端到端测试,保证应用程序的质量和稳定性。
-
监控与管理:Spring Boot 提供了丰富的监控和管理功能,包括健康检查、指标监控、日志管理等,帮助开发者实时监控和管理应用程序的运行状态。
-
社区活跃:Spring Boot 是由 Spring 社区维护和支持的开源项目,拥有庞大的用户群和活跃的社区,开发者可以在社区中获取到丰富的资源和支持。