1、Spring 是重量级企业开发框架 Enterprise JavaBean(EJB) 的替代品,Spring 为企业级 Java 开发提供了一种相对简单的方法,通过 依赖注入 和 面向切面编程 ,用简单的 Java 对象(Plain Old Java Object,POJO) 实现了 EJB 的功能

虽然 Spring 的组件代码是轻量级的,但它的配置却是重量级的(需要大量 XML 配置) 。

从本质上来说,Spring Boot 就是 Spring,它做了那些没有它你自己也会去做的 Spring Bean 配置。

Spring Framework 旨在简化 J2EE 企业应用程序开发。Spring Boot Framework 旨在简化 Spring 开发。

 

https://github.com/CodingDocs/springboot-guide/blob/master/docs/start/springboot-hello-world.md

2、你可以通过 https://start.spring.io/ 这个网站来生成一个 Spring Boot 的项目。注意勾选上 Spring Web 这个模块,这是我们所必需的一个依赖

你也可以直接通过 IDEA 来生成一个 Spring Boot 的项目,具体方法和上面类似:File->New->Project->Spring Initializr

 

 

3、可以看出大概可以把 @SpringBootApplication看作是 @Configuration@EnableAutoConfiguration@ComponentScan 注解的集合。根据 SpringBoot 官网,这三个注解的作用分别是:

  • @EnableAutoConfiguration:启用 SpringBoot 的自动配置机制
  • @ComponentScan: 扫描被@Component (@Service,@Controller)注解的 bean,注解默认会扫描该类所在的包下所有的类。
  • @Configuration:允许在上下文中注册额外的 bean 或导入其他配置类。
 
4、新建一个 Controller

上面说了这么多,我们现在正式开始写 Spring Boot 版的 “Hello World” 吧。

新建一个 controller 文件夹,并在这个文件夹下新建一个名字叫做 HelloWorldController 的类。

@RestController是 Spring 4 之后新加的注解,如果在 Spring4 之前开发 RESTful Web 服务的话,你需要使用@Controller 并结合@ResponseBody注解,也就是说@Controller +@ResponseBody@RestController。对

 

5、默认情况下,Spring Boot 项目会使用 8080 作为项目的端口号。如果我们修改端口号的话,非常简单,直接修改

application.properties配置文件即可。

src/main/resources/application.properties

server.port=8333
大功告成,运行项目
 
6、Spring 如何优雅读取配置文件?
1、使用 @Value("${property}") 读取比较简单的配置信息:

2、通过@ConfigurationProperties读取并与 bean 绑定

LibraryProperties 类上加了 @Component 注解,我们可以像使用普通 bean 一样将其注入到类中使用。

3、通过@ConfigurationProperties读取并校验

ProfileProperties 类没有加 @Component 注解。我们在我们要使用ProfileProperties 的地方使用@EnableConfigurationProperties注册我们的配置bean(这也说明我们的bean还是要注册,即要么加@Component等注解,要么@EnableConfigurationProperties等如@EnableConfigurationProperties(ProfileProperties.class)

 

4.@PropertySource读取指定 properties 文件

如:@PropertySource("classpath:website.properties")
Spring 读取配置文件也是有优先级的

 springboot-guide/docs/basis/read-config-properties.md at master · CodingDocs/springboot-guide (github.com)

 

InitializingBean-CSDN博客

7、注意:读取配置文件是生成bean,下面初始化方法代表生成后指定的动作

1、Spring为bean提供了两种初始化bean的方式,实现InitializingBean接口,实现afterPropertiesSet方法,或者在配置文件中通过init-method指定,两种方式可以同时使用。

2、实现InitializingBean接口是直接调用afterPropertiesSet方法,比通过反射调用init-method指定的方法效率要高一点,但是init-method方式消除了对spring的依赖。

3、如果调用afterPropertiesSet方法时出错,则不调用init-method指定的方法。

 

8、本文主要讲了 四 种捕获处理异常的方式:

  1. 使用 @ControllerAdvice 和 @ExceptionHandler 处理全局异常
  2. @ExceptionHandler 处理 Controller 级别的异常
  3. 通过 ResponseStatus注解简单处理异常的方法(将异常映射为状态码)
  4. ResponseStatusException
如上这个,controller抛异常-》GlobalExceptionHandler全局捕获异常(这个异常就是ResourceNotFoundException继承BaseException,并且传了个ErrorCode进行初始化exception),然后在方法里面返回
ErrorReponse,并且参数就是BaseException用来初始化返回体,总的
 
Mybatis-plus虽然也可以但是对于Spring-Data-Jpa全自动的ORM来看,对于简单的业务显得没有Spring-Data-Jpa那么方便
我们可以认为JPA是标准,事实上也是,JPA几乎都是接口,实现都是Hibernate在做,宏观上面看,在JPA的统一之下Hibernate很良好的运行。
在使用持久化工具的时候,一般都有一个对象来操作数据库,在原生的Hibernate中叫做Session,在JPA中叫做EntityManager,在MyBatis中叫做SqlSession,通过这个对象来操作数据库。