学习目标:
复习Java基础知识和学习springboot中注解的使用
学习内容:
- Java的基本数据类型:内置数据类型和引用数据类型。
内置数据类型:byte、short、int、long、float、double、boolean、char。
引用数据类型:对象、数组都是引用数据类型。 - Java中项目、模块、包类的关系:
项目(Project):
项目是最大的组织单位,通常代表一个完整的软件应用或一组相关的应用。一个项目可以包含多个模块,这些模块可能属于同一个应用的不同部分,或者构成一个应用的不同功能。
模块(Module):
模块是项目中的一个独立部分,它有自己的编译和运行属性。在Java中,模块的概念从Java 9开始引入,每一个模块都有自己的module-info.java文件来定义模块的属性和依赖。模块可以理解为一个独立的单元,有自己的作用域,可以包含多个包。
包(Package):
包是模块内部的划分,用于组织类和接口。它是类和接口的容器,提供了一种方式来命名和访问类。一个包中可以包含多个类和接口,它们通常具有相似的属性或功能。例如,所有的用户界面相关的类可以放在一个叫做com.example.ui的包中。
类(Class):
类是面向对象编程的基本单元,它包含对象的属性和行为。类可以继承其他类,实现接口,并可以包含抽象方法或具体方法。在Java中,每一个文件通常对应一个公开的类,这个类与文件名相同。
接口(Interface):
接口是一种完全抽象的类,它不能包含任何具体方法的实现,但是可以包含抽象方法。一个类可以实现多个接口,表明该类遵循接口中声明的抽象方法。接口定义了一种约定,规定了实现接口的类应遵循的规则。 - springboot中各个注解的作用:
@Controller: 应用在MVC层(控制层),DispatcherServlet会自动 扫描注解了此注解的类,然后将web请求映射到注解了@RequestMapping的类或方法上。
@Controller
@ResponseBody
// 映射到类上
// localhost:8080/user
@RequestMapping("/user")
public class UserController {
// 映射到方法上
// localhost:8080/user/login
// 此处通常用 @GetMapping("/user/login") 表明GET请求方式的映射
@RequestMapping("/login")
public String login() {
return "user login";
}
// 映射到方法上
// localhost:8080/user/register
// 此处通常用 @PostMapping("/user/login") 表明POST请求方式的映射
@RequestMapping("/register")
public String register() {
return "user register";
}
}
@Service: 应用在service层(业务逻辑层)。
@Reponsitory:应用在dao层(实现类)。
@Component:表示一个带注释的类是一个“组件”,成为Spring管理的Bean。当使用基于注解的配置和类路径扫描时,这些类被视为自动检测的候选对象。同时@Component还是一个元注解。
注意: @Controller、@Service、@Reponsitory都组合了
@Component注解。为了区分三层不同的作用,因此分别为三层起了不同的名字。
@Autowired:由Spring的依赖注入工具(BeanPostProcessor、BeanFactoryPostProcessor)自动注入,Spring提供的工具。
@Resource:依赖注入,给对象的属性注入数据,可以定义在字段上,也可以定义在方法上。一般用在注入dao层数据源,跟@Autowired相似,区别就是@Autowired默认是先根据类型,而@Resource默认是先根据名称
@Value:由于@Autowired、@Qualifier、@Resource三者自动装配只能针对于注入其他bean类型的数据,而基本类型和String类型无法使用上述注解实现。因此有了@Value这个注解,@Value专门用来服务基本类型和String类型。
WEB常用注解:
@RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)。
@PathVariable:@PathVariable 放置在参数前,用来接受路径参数。
Spring Boot常用的注解
@SpringBootApplication:启动
SpringBoot的核心注解,主要目的是开启自动配置。它也是一个组合注解,主要组合了@Configuration,@EnableAutoConfiguration(核心)和@ComponentScan。可以通过@SpringBootApplication(exclude={想要关闭的自动配置的类名.class})来关闭特定的自动配置,其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。@EnableAutoConfiguration:自动配置
此注释自动载入应用程序所需的所有Bean——这依赖于Spring Boot在类路径中的查找。该注解组合了@Import注解,@Import注解导入了EnableAutoCofigurationImportSelector类,它使用SpringFactoriesLoader.loaderFactoryNames方法来扫描具有META-INF/spring.factories文件的jar包。而spring.factories里声明了有哪些自动配置.
@Configuration:配置文件
等同于spring的XML配置文件;使用Java代码可以检查类型安全。
@ComponentScan:自动扫描
表示将该类自动发现扫描组件。个人理解相当于,如果扫描到有@Component、@Controller、@Service等这些注解的类,并注册为Bean,可以自动收集所有的Spring组件,包括@Configuration类。