后端基础学习(一)
Restful API
一种架构风格,全称:Resource Representational State Transfer 表现层状态转移
当通过 RESTful API 提出请求时,它会将资源状态表述传递给请求者。该信息或表述通过 HTTP 以下列某种格式传输:JSON(Javascript 对象表示法)、HTML、XLT 或纯文本。JSON 是最常用的格式,尽管它的名字英文原意为”JavaScript 物件表示法”,但它适用于各种语言,并且人和机器都能读。
工程结构
1 | java |
root package
:com.example.myproject
,所有的类和其他package都在root package之下。- 应用主类:
Application.java
,该类直接位于root package
下。通常我们会在应用主类中做一些框架配置扫描等配置,我们放在root package
下可以帮助程序减少手工配置来加载到我们希望被Spring
加载的内容 com.example.myproject.domain
包:用于定义实体映射关系与数据访问相关的接口和实现com.example.myproject.service
包:用于编写业务逻辑相关的接口与实现com.example.myproject.web
:用于编写Web层相关的实现,比如:Spring MVC的Controller
等
上面的结构中,root package
与应用主类的位置是整个结构的关键。由于应用主类在root package
中,所以按照上面的规则定义的所有其他类都处于root package
下的其他子包之后。默认情况下,Spring Boot
的应用主类会自动扫描root package
以及所有子包下的所有类来进行初始化。
如果非要放在root package
之外
- 可用
@ComponentScan
注解指定具体的加载包1
2
3
4
5
6
7
public class Bootstrap {
public static void main(String[] args) {
SpringApplication.run(Bootstrap.class, args);
}
} - 使用
@Bean
注解来初始化1
2
3
4
5
6
7
8
9
10
11
12
13
public class Bootstrap {
public static void main(String[] args) {
SpringApplication.run(Bootstrap.class, args);
}
public CustomerController customerController() {
return new CustomerController();
}
}
SpringBoot项目中主要的注解
@Conponent
@Component
:是Spring中用于描述Bean类的一个注解。用于告诉Spring这个类的实例由Spring创建,当此对象由Spring创建和管理时,默认会将对象存储到池(Bean池)中。@SpringBootTest
:该注解用于告诉Spring框架,此测试类交给Spring管理。@Autowired
:该注解描述属性时,用于告诉Spring框架要为此属性注入一个值。其基本规则是:- 首先,要检测容器中是否有与属性或方法参数类型匹配的对象,假如有并且只有一个则直接注入。
- 其次,假如检测到有多个,还会按照
@Autowired
描述的属性或方法参数名查找是否有名字匹配的对象,有则直接注入,没有则抛出异常。 - 最后,假如我们有明确要求,必须要注入类型为指定类型,名字为指定名字的对象还可以使用
@Qualifier
注解对其属性或参数进行描述(此注解必须配合@Autowired
注解使用)。
@Qualifier
:该注解就是对其属性或参数进行描述。@Lazy
:该注解用于描述类,其目的是告诉Spring框架此类支持延迟加载,通常会配合单例作用域使用。@Scope("singleton/prototype")
:该注解是Spring中用于定义Bean对象作用域的一个注解,其常用的值有:- singleton:整个内存有一份Bean实例,此实例何时创建与类的延迟加载特性配置有关,此实例创建以后,生命周期会由Spring框架管理。
- prototype:每次获取都会创建新实例,此实例会在需要时创建与lazy特性无关,这个实例创建以后,不会交给Spring管理,Spring可以对其初始化,但不负责销毁。
PostConstruce
:该注解用于描述bean对象生命周期方法中的初始化方法,此方法会在对象的构造方法之后执行(是对象创建以后的初始化)@PreDestroy
:用于描述Bean对象生命周期方法中的销毁方法,此方法会在对象销毁之前执行(当作用域为prototype时,此方法不会执行)。@Mapper
:该注解是由MyBatis框架中定义的一个描述数据层接口的的注解(所有的注解只起到一个描述性的作用),用于告诉Spring框架此接口的实现由mybatis创建,并将其实现类对象存储到spring容器。Param
:该注解用于将括号内的参数进行引用@Controller
:该注解用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了RequestMapping
:该注解用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。