SpringBoot的学习

  • 学习Spring Boot的要点有以下几个:
  1. 熟悉Spring Boot核心概念:控制反转(Inversion of Control)和依赖注入(Dependency Injection),这是Spring Boot的核心。
  2. 掌握Spring Boot的基本配置:了解如何配置Spring Boot应用的基本设置,例如数据源、缓存、日志等。
  3. 学习如何创建和使用Spring Boot应用:了解如何使用Spring Boot快速创建Web应用程序、RESTful服务、批处理应用等。
  4. 学习如何测试Spring Boot应用:了解如何使用JUnit、Mockito等测试工具来测试Spring Boot应用。
  5. 使用Spring Boot开发Web应用程序:学习如何使用Spring Boot框架处理HTTP请求、响应以及使用Spring Boot的WebMVC框架构建Web应用程序。
  6. 学习如何处理异常和错误:了解如何使用Spring Boot处理异常和错误,以便更加高效地调试应用程序。
  7. 学习如何使用Spring Boot构建复杂应用程序:了解如何使用Spring Boot配合其他Spring框架构建复杂应用程序,例如使用Spring Security构建安全应用、使用Spring Data构建大数据应用等。
  8. 学习SpringBoot的git项目整合使用。
  • 学习Spring Boot,需要掌握以下一些常用的注解:
  1. @SpringBootApplication:用于标注Spring Boot应用程序的主类,表示这是一个Spring Boot应用程序启动类。
  2. @RestController:用于标注控制器类,表示该类中的所有方法都是Web API方法,会自动将返回值转换为Json格式。
  3. @RequestMapping:用于标注Web API的请求路径,可以定义请求的URL和HTTP请求方法。
  4. @Autowired:用于标注自动注入依赖对象,例如自动注入数据库连接池。
  5. @Repository:用于标注数据访问层(DAO)类。
  6. @Service:用于标注业务逻辑层(Service)类。
  7. @Controller:用于标注Web应用程序的控制器类。
  8. @Configuration:用于标注配置类,表示这是一个Spring配置类。
  9. @Value:用于将配置文件中的值注入到对应的属性中。
  10. @ComponentScan:用于指定要扫描的组件包。
  11. @RestControllerAdvice:用于定义全局异常处理和全局数据绑定。
  12. @ResponseBody:用于标注方法返回值是HTTP响应体,可以将方法的返回值转换为JSON格式。
  13. @RequestBody:用于标注HTTP请求体,自动将请求体转换为Java对象。
  14. @Transactional:用于事务处理,可以将标注的方法体自动加入到事务中。
  15. @Validated:用于参数校验,配合@NotBlank、@NotNull等注解进行参数校验。
  • 学习Spring Boot MVC要领如下:
  1. 熟悉Spring Boot和Spring MVC概念。Spring Boot是基于Spring框架的快速开发框架,而Spring MVC则是其中一个Web MVC框架,因此学习Spring Boot MVC前需要先掌握基础的Spring Boot和Spring MVC概念。
  2. 学会创建Spring Boot MVC项目。可以使用Spring Initializr或者Spring Boot CLI等工具初始化一个Spring Boot项目,添加Spring Web和Thymeleaf等依赖,创建必要的配置文件和类。
  3. 掌握Spring MVC的核心概念。在学习Spring Boot MVC之前需要了解Spring MVC的核心概念,包括控制器、视图解析器、拦截器、注解等。
  4. 学习Spring Boot MVC的注解和配置。Spring Boot提供了许多注解和配置可以快速简便地创建一个Web应用程序,如@RestController、@RequestMapping、@PathVariable、@RequestParam等,同时也可以通过application.properties或application.yml等文件进行配置。
  5. 理解Spring Boot MVC的数据传递。Spring Boot MVC支持多种方式实现将数据从控制器传递到视图,如ModelAndView、Model、Map、@ModelAttribute等,需要根据具体情况选择合适的方式。
  6. 掌握Spring Boot MVC的测试方法。可以使用MockMvc或者TestRestTemplate等工具对Spring Boot MVC进行测试,确保应用程序的各个功能都能正常运行。
  7. 学习Spring Boot MVC的扩展功能。Spring Boot MVC支持集成Spring Security、Spring Data等组件,可以通过学习这些组件的使用来扩展Web应用程序的功能。
  • 跨域是指客户端请求服务器时,请求的目标资源与客户端所在的源(协议、域名、端口)不匹配的情况。通常情况下,不同源的客户端之间是无法直接互相访问数据的,这是浏览器的安全策略所限制的。在Spring Boot中,实现跨域请求有很多种方式。其中比较常用的有以下几种:
  1. 使用CORS(跨域资源共享)机制,Spring Boot提供了@CrossOrigin注解来支持CORS,可以在Controller类或者对应的方法上标注这个注解来实现跨域请求。
    例如,在Controller类上标注@CrossOrigin注解:
@RestController
@CrossOrigin(origins = "*", maxAge = 3600) // 接受所有域名的请求,允许缓存3600秒
public class HelloWorldController {
    @RequestMapping("/hello")
    public String hello() {
        return "Hello, World!";
    }
}
  1. 使用拦截器(Interceptor)来实现跨域请求。可以通过编写自定义的拦截器来处理CORS头信息,Spring Boot提供了一个WebMvcConfigurer接口用于配置WebMvcConfigurer扩展。
    例如,在WebMvcConfigurer类中增加addInterceptors方法来配置跨域请求:
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new CorsInterceptor()).addPathPatterns("/**");
    }
}
  1. 使用Filter来处理跨域请求。可以通过编写Filter实现对跨域请求进行处理。
    例如,在Filter中处理跨域请求:
@Component
public class CorsFilter implements Filter {
    @Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        HttpServletRequest request = (HttpServletRequest) req;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "content-type");
        chain.doFilter(req, res);
    }
}
  • 在Spring Boot中,可以通过统一异常处理机制来方便地管理和处理系统中的异常信息。在实际开发中,统一处理系统异常可以提升用户体验和系统可靠性,减少调试和维护难度。下面介绍一种实现方式:
  1. 定义自定义异常类,一般继承RuntimeException或其子类。例如:
public class BusinessException extends RuntimeException {
    private String code;
    private String message;

    public BusinessException(String message) {
        super(message);
        this.message = message;
    }

    public BusinessException(String code, String message) {
        super(message);
        this.code = code;
        this.message = message;
    }

    // getter and setter
}
  1. 定义全局异常处理器。一般使用@ControllerAdvice注解来定义一个异常处理器类,并使用@ExceptionHandler注解定义要处理的异常类型和对应的处理方法。例如:
@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(BusinessException.class)
    @ResponseBody
    public Result<Object> handleBusinessException(BusinessException ex) {
        Result<Object> result = new Result<>();
        result.setCode(ex.getCode());
        result.setMsg(ex.getMessage());
        return result;
    }

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Result<Object> handleException(Exception ex) {
        Result<Object> result = new Result<>();
        result.setCode("9999");
        result.setMsg(ex.getMessage());
        return result;
    }
}
  1. 使用@ResponseBody将处理结果序列化为JSON字符串。在GlobalExceptionHandler类中,使用@ResponseBody将处理结果序列化为JSON字符串后返回给客户端,这样客户端可以方便地获取处理结果并展示到页面上。
  2. 将异常拦截器添加到Spring Boot应用程序。可以通过在Spring Boot的启动类中添加@Bean注解来将GlobalExceptionHandler注册为异常拦截器,例如:
@SpringBootApplication
public class Application {

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

    @Bean
    public GlobalExceptionHandler globalExceptionHandler() {
        return new GlobalExceptionHandler();
    }
}
  • Spring Boot 提供了日志和定时任务的集成,方便开发人员对应用程序进行调试和监控。下面分别介绍一下 Spring Boot 的日志和定时任务:

日志

Spring Boot 集成了常见的日志框架,可以使用 Logback、Log4j2 或者 JDK Logging 等日志框架来记录日志信息。Spring Boot 提供了一个统一的日志接口 - SLF4J(Simple Logging Facade for Java),可以让开发者使用统一的 API 记录日志。

日志配置

在 Spring Boot 中,日志配置文件默认是 application.propertiesapplication.yml,可以修改其中的配置参数来控制日志级别、控制台输出、日志文件等等。

以下是一个简单的日志配置文件 application.properties

# 设置日志输出级别为TRACE(跟踪)级别
logging.level.com.example = TRACE

# 控制台输出带有颜色
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n

# 控制台输出不显示颜色
#logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n

# 日志文件输出
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
logging.file.name=myapp.log

# 每天生成一个新的日志文件
logging.file.max-history=30
logging.file.max-size=10MB

上述配置文件设置了日志输出级别、控制台输出、文件输出等。

日志使用

使用 Spring Boot 日志非常容易,只需要在代码中引入 org.slf4j.Logger 接口,然后使用该接口进行日志记录即可,例如:

@RestController
public class HelloWorldController {

    private static final Logger LOGGER = LoggerFactory.getLogger(HelloWorldController.class);

    @RequestMapping("/hello")
    public String hello() {
        LOGGER.debug("Hello, Debug!");
        LOGGER.info("Hello, Info!");
        LOGGER.warn("Hello, Warn!");
        LOGGER.error("Hello, Error!");
        return "Hello, World!";
    }
}

定时任务

Spring Boot 基于 Spring Framework 提供了方便的定时任务集成功能。在 Spring Boot 中,只需要在方法上添加 @Scheduled 注解就可以将该方法定义为定时任务。

定时任务配置

在 Spring Boot 中,可以使用 @Scheduled 注解来定义定时任务,该注解有以下主要属性:

  • fixedRate:定义了间隔时间,单位毫秒,默认值为 0,表示无间隔时间。
  • fixedDelay:定义了延迟时间,单位毫秒,默认值为 0,表示无延迟。
  • initialDelay:定义了任务在启动后第一次执行的延迟时间,单位毫秒,默认值为 0。
  • cron:使用 cron 表达式定义任务执行的时间。若同时配置了fixedRate/fixedDelay和cron,则以 fixedRate/fixedDelay 为准。

例如:

@Component
public class ScheduledTask {

    // 每隔 5 秒执行一次任务
    @Scheduled(fixedRate = 5000)
    public void doSomething() {
        System.out.println("doSomething() invoked!");
    }
}

上述代码创建了一个定时任务 doSomething(),每隔 5 秒执行一次。

定时任务使用

在 Spring Boot 应用程序中使用定时任务非常简单,只需要在需要定时执行的方法上添加 @Scheduled 注解即可。例如:

@Service
public class MyTaskService {

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    // 每隔 1 分钟执行一次任务
    @Scheduled(cron = "0 * * * * ?")
    public void reportCurrentTime() {
        System.out.println("现在时间是:" + dateFormat.format(new Date()));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值