【技术积累】SpringBoot中的简介与配置【一】

打印 上一主题 下一主题

主题 552|帖子 552|积分 1656

什么是Spring Boot?

Spring Boot是在Spring Framework基础之上建立的,用于轻松创建基于Spring的独立、生产级别的应用和服务的开源框架。它通过自动配置、约定大于配置的方式,简化了Spring应用程序的开发、部署和运行。Spring Boot可以帮助开发者快速搭建基于Spring的应用,从而减少开发时间。
Spring Boot具有以下优势:

  • 自动配置:Spring Boot基于约定大于配置的原则,自动配置应用程序的需要,开发者只需要在必要时手动配置。
  • 插件化:Spring Boot支持插件化,它提供了许多starter,开发者只需根据需求引入不同的starter即可。
  • 简化开发、部署和运行:Spring Boot提供了快速开发、集成测试、部署工具等等,从而简化整个应用程序的开发、部署和运行过程。
  • 适用于微服务架构:Spring Boot为微服务架构而生,它提供了一系列的特性,如服务发现、负载均衡、断路器等等,使得微服务的开发和部署更加简单。
总之,Spring Boot是一个快速创建Spring应用程序的框架,它使得开发者能够更快、更轻松地开发、部署和运行基于Spring的应用程序。
Spring Boot的历史和发展

Spring Boot是Spring Framework的一个子项目,旨在简化Spring应用开发的过程。
Spring Boot的历史在2012年,SpringSource公司(现为Pivotal)发布了第一个Spring Boot版本。之后,Spring Boot的发展一直都非常稳定,并且有大量的社区贡献者和用户。随着时间的推移,Spring Boot不断增加了新的功能和特性。如今,它已成为使用最广泛的Java微服务开发框架之一。
Spring Boot的发展
Spring Boot的开发目标是简化Spring应用开发的过程,这是通过一个开箱即用的配置和假设一系列的约定来实现的。开发人员可以利用自动配置来将应用快速部署并进行测试。
在Spring Boot 2.0版本中,Spring Boot引入了一些重要的新特性,如响应式编程API、函数式Web框架、Kotlin支持等。此外,Spring Boot 2.1版本还引入了对Java 11的全面支持。
除了Spring Boot自身的发展之外,Spring Boot生态系统的发展也非常迅速。现在,有越来越多的Spring Boot插件、工具和框架可以用于开发和部署Spring Boot应用。
总之,Spring Boot是一个不断发展的框架,它的变化、发展和提高使得开发更快捷和更方便,同时也能够满足更加严格的业务要求和更复杂的应用场景。
Spring Boot与Spring有什么关系

Spring Boot是建立在Spring框架之上的,它可以看作是Spring的升级版。Spring Boot采用了约定大于配置的设计思想,通过自动配置和快速启动,让Spring应用程序的开发更加简单、快速和高效。
虽然Spring Boot和Spring Framework是不同的项目,但Spring Boot是由Spring Framework开发团队开发的,它们之间有很多联系。Spring Boot可以使用Spring的所有框架和工具,如Spring MVC、Spring Data等,同时它也在不断地更新和完善这些框架和工具。
Spring Boot让Spring应用程序更加提高了生产力和可扩展性。它提供了许多特性,例如自动配置和依赖注入等等,在保证应用程序质量和性能的同时,让开发者更加专注于业务实现。
因此,Spring Boot是Spring Framework的一种框架,它为Spring应用程序开发提供了更加高效的工具和机制,让开发过程更加容易、快速和高效。
如何用IDEA创建一个Spring Boot应用程序?需要哪些依赖?

使用IntelliJ IDEA创建一个Spring Boot应用程序的步骤如下:

  • 打开 IntelliJ IDEA,选择“Create New Project”菜单。
  • 在弹出的对话框中,选择“Spring Initializr”选项,类型选择Maven,并点击“Next”按钮。
  • 在下一步中,选择所需的依赖和Spring Boot版本,例如Web、JPA、MySQL等。
  • 点击“Next”按钮后,输入项目的名称、选择项目的存储位置和Java SDK版本,并点击“Finish”按钮。IntelliJ IDEA会自动创建一个Spring Boot项目。
 
在选择“Spring Initializr”选项时,需要选择“Maven”或“Gradle”构建工具类型。
这取决于你想使用哪种构建工具来管理你的项目。
如果你选择使用Maven,那么在下一步中将会看到Maven项目设置选项。同样的,如果你选择使用Gradle,那么在下一步中将会看到Gradle项目设置选项。
在选择构建工具类型后,点击“Next”按钮即可继续创建Spring Boot应用程序。
 
创建完Spring Boot项目后,需要添加一些必要的依赖。以下是一些常用的依赖:

  • spring-boot-starter-web:Spring Boot中提供的Web相关依赖,包含Tomcat和Spring MVC。
  • spring-boot-starter-data-jpa:Spring Boot中提供的JPA相关依赖,使得我们可以方便地使用Hibernate等ORM框架。
  • spring-boot-starter-security:Spring Boot中提供的安全相关依赖,可以快速集成Spring Security功能。
  • spring-boot-starter-test:Spring Boot中提供的测试相关依赖,包括JUnit、Mockito等。
要添加这些依赖,可以直接在pom.xml文件中添加。例如,要添加spring-boot-starter-web和spring-boot-starter-data-jpa依赖,可以在pom.xml文件中加入以下内容:
  1. <dependencies>
  2.     <dependency>
  3.         <groupId>org.springframework.boot</groupId>
  4.         <artifactId>spring-boot-starter-web</artifactId>
  5.     </dependency>
  6.     <dependency>
  7.         <groupId>org.springframework.boot</groupId>
  8.         <artifactId>spring-boot-starter-data-jpa</artifactId>
  9.     </dependency>
  10. </dependencies>
复制代码
完成这些步骤后,可以开始编写Spring Boot应用程序了。
如何配置Spring Boot应用程序的属性

好的,以下是如何配置Spring Boot应用程序的属性的详细步骤:
1. 打开您的Spring Boot应用程序项目。
2. 找到application.properties或application.yml文件,它们通常位于src/main/resources目录下。如果这些文件不存在,您可以手动创建它们。
3. 在这些文件中,您可以设置应用程序的属性,例如端口号、日志级别等。例如,如果您想将应用程序的端口号设置为8080,可以在application.properties文件中添加以下行:
  1. server.port=8080
复制代码
4. 如果您使用的是application.yml文件,则可以添加以下行:
  1. server:
  2.   port: 8080
复制代码
5. 您还可以在这些文件中设置其他属性。例如,如果您想设置日志级别为DEBUG,则可以在application.properties文件中添加以下行:
  1. logging.level.root=DEBUG
复制代码
 
6. 完成后,保存文件并重新启动您的应用程序。现在,您的应用程序将使用您刚刚设置的属性。
Spring Boot应用程序的常见属性还有哪些


  • server.port:设置应用程序的端口号

  • logging.level:设置应用程序的日志级别

  • spring.datasource.url/spring.datasource.username/spring.datasource.password:设置数据库连接信息

  • spring.profiles.active:设置激活的Spring配置文件

  • spring.jpa.hibernate.ddl-auto:设置Hibernate在启动时自动创建数据表的模式

  • spring.mvc.view.prefix/spring.mvc.view.suffix:设置视图解析器的前缀和后缀

  • spring.mail.*:设置邮件发送相关的配置信息

  • spring.security.*:设置Spring Security的配置信息

  • management.endpoints.web.exposure.include:设置可以访问的Actuator端点

  • spring.cloud.config.*:设置Spring Cloud Config的配置信息
如何配置Spring Boot应用的日志级别?

在Spring Boot应用中,日志框架默认采用的是Logback,可以通过配置文件或代码的方式来配置日志级别。下面分别介绍两种方式: 1. 配置文件方式 在Spring Boot应用中,可以在application.properties或application.yml文件中配置日志级别,如下: application.properties:
  1. logging.level.com.example=INFO
复制代码
 application.yml: 
  1. logging:
  2.   level:
  3.     com.example: INFO
复制代码
 上述配置将com.example包下的日志级别设置为INFO级别。 2. 代码方式 可以通过在application类中使用@Loggin注解来设置日志级别,如下:
  1. @SpringBootApplication
  2. @Slf4j
  3. public class Application {
  4.     public static void main(String[] args) {
  5.         SpringApplication.run(Application.class, args);
  6.     }
  7.     @Bean
  8.     public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
  9.         return args -> {
  10.             log.debug("Debug message");
  11.             log.info("Info message");
  12.             log.warn("Warn message");
  13.             log.error("Error message");
  14.         };
  15.     }
  16. }
复制代码
 在上述代码中,使用@Slf4j注解来指定日志级别,然后在commandLineRunner方法中使用各种级别的日志输出,可以在控制台上看到输出结果。 除了上述两种方式,还可以使用其他日志框架替换Logback,例如Log4j、JUL等,只需在pom.xml中添加对应的依赖即可。如何配置数据源以及数据库连接信息?

在Spring Boot中,可以使用多个数据源,包括连接关系型数据库(Jdbc)、NoSQL数据库(MongoDB)等等。下面主要介绍如何配置连接关系型数据库的方式。 1. 数据源配置 在Spring Boot中,可以使用Spring提供的JdbcTemplate或Hibernate/JPA等ORM框架,来访问关系型数据库。在配置数据源时,需要引入对应的驱动和配置相关的属性,如下: application.properties:
  1. # DataSource settings: set here your own configurations for the database connection.
  2. spring.datasource.url=jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10
  3. spring.datasource.username=root
  4. spring.datasource.password=root
  5. spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
复制代码
 在上述配置中,指定了数据库的连接URL、用户名、密码以及驱动类名。 2. 数据库连接池配置 Spring Boot内部默认采用的是Tomcat连接池。可以根据实际情况,在配置数据源时,设置连接池大小、连接等待时间、最小闲置连接数等参数,如下: application.properties:
  1. # Connection pool settings.
  2. spring.datasource.hikari.connection-timeout=20000
  3. spring.datasource.hikari.maximum-pool-size=5
  4. spring.datasource.hikari.minimum-idle=1
复制代码
 在上述配置中,配置了连接超时时间为20秒钟、最大连接数为5、最小的空闲连接数为1。 3. 使用多个数据源 在实际应用场景中,经常需要使用多个数据源,可以通过配置多个DataSource bean来实现。具体实现方式见下列示例: application.properties:
  1. # Primary datasource configurations.
  2. spring.primary.datasource.url=jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10
  3. spring.primary.datasource.username=root
  4. spring.primary.datasource.password=root
  5. spring.primary.datasource.driverClassName=com.mysql.cj.jdbc.Driver
  6. # Secondary datasource configurations.
  7. spring.secondary.datasource.url=jdbc:mysql://localhost/secondary?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10
  8. spring.secondary.datasource.username=root
  9. spring.secondary.datasource.password=root
  10. spring.secondary.datasource.driverClassName=com.mysql.cj.jdbc.Driver
复制代码
 在上述配置中,定义了两个数据源,分别为primary和secondary。在代码中,可以通过@Qualifier注解指定要注入的数据源,如下:
  1. @Autowired
  2. @Qualifier("primaryDataSource")
  3. private DataSource primaryDataSource;
  4. @Autowired
  5. @Qualifier("secondaryDataSource")
  6. private DataSource secondaryDataSource;
复制代码
其中primaryDataSource和secondaryDataSource是对应的DataSource bean的名称。 需要注意的是,如果不需要使用默认的数据源,需要明确的指定一个主数据源。可以通过在应用程序的主类中添加@Primary注解来指定主数据源,如下:
  1. @Bean
  2. @Primary
  3. @ConfigurationProperties(prefix="spring.primary.datasource.hikari")
  4. public DataSource primaryDataSource() {
  5.     return DataSourceBuilder.create().type(HikariDataSource.class).build();
  6. }
  7. @Bean
  8. @ConfigurationProperties(prefix="spring.secondary.datasource.hikari")
  9. public DataSource secondaryDataSource() {
  10.     return DataSourceBuilder.create().type(HikariDataSource.class).build();
  11. }
复制代码
在上述代码中,使用@ConfigurationProperties注解读取配置文件中的属性,并创建对应的DataSource bean。其中使用@Primary注解指定了primaryDataSource作为主数据源。在实际使用中,可以通过primaryDataSource来调用相关的方法,实现操作数据库。 拦截器和过滤器是Spring Boot应用中常用的组件,它们用于在请求处理前或处理后进行某些操作,如日志记录、权限校验、数据格式转换等。如何配置Spring Boot应用的拦截器和过滤器?

 1. 配置拦截器在Spring Boot应用中使用拦截器需要实现HandlerInterceptor接口,并在配置类中注册拦截器。拦截器可以定义在应用级别或具体控制器级别。 示例代码: 定义拦截器类: 
  1. @Component
  2. public class CustomInterceptor implements HandlerInterceptor {
  3.     @Override
  4.     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  5.         // 在请求处理前执行的代码
  6.         return true;  // 返回true表示放行请求,false表示拦截请求
  7.     }
  8.     @Override
  9.     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
  10.         // 请求处理后但未渲染视图时执行的代码
  11.     }
  12.     @Override
  13.     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
  14.         // 视图渲染后执行的代码
  15.     }
  16. }
复制代码
 注册拦截器:
  1. @Configuration
  2. public class InterceptorConfig implements WebMvcConfigurer {
  3.     @Autowired
  4.     private CustomInterceptor customInterceptor;
  5.     @Override
  6.     public void addInterceptors(InterceptorRegistry registry) {
  7.         // 注册应用级别的拦截器
  8.         registry.addInterceptor(customInterceptor)
  9.                 .addPathPatterns("/**");  // 配置拦截路径
  10.     }
  11.     @Override
  12.     public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
  13.         configurer.enable();
  14.     }
  15. }
复制代码
 2. 配置过滤器在Spring Boot应用中配置过滤器需要实现Filter接口,并在配置类中注册过滤器。过滤器可以定义在应用级别或具体servlet级别。 示例代码: 定义过滤器类:
  1. @Component
  2. public class CustomFilter implements Filter {
  3.     @Override
  4.     public void init(FilterConfig filterConfig) throws ServletException {
  5.         // 过滤器初始化时执行的代码
  6.     }
  7.     @Override
  8.     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
  9.         // 过滤器拦截请求时执行的代码
  10.         chain.doFilter(request, response);  // 执行后续的请求处理
  11.         // 过滤器处理完请求后执行的代码
  12.     }
  13.     @Override
  14.     public void destroy() {
  15.         // 过滤器销毁时执行的代码
  16.     }
  17. }
复制代码
 注册过滤器:
  1. @Configuration
  2. public class FilterConfig {
  3.     @Bean
  4.     public FilterRegistrationBean<CustomFilter> customFilterRegistration() {
  5.         FilterRegistrationBean<CustomFilter> registration = new FilterRegistrationBean<>();
  6.         registration.setFilter(new CustomFilter());
  7.         registration.addUrlPatterns("/*");  // 配置过滤路径
  8.         registration.setName("CustomFilter");
  9.         return registration;
  10.     }
  11. }
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户云卷云舒

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表