//第一种 final
public final class Circle extends Shape {
}
//第二种 sealed class
public sealed class Square extends Shape permits RoundSquare {
@Override
public void draw() {
System.out.println("=======Square 图形======");
}
}
//密封类的子类的子类
public final class RoundSquare extends Square{
}
//非密封类 , 可以被扩展。放弃密封
public non-sealed class Rectangle extends Shape {
}
//继承非密封类
public class Line extends Rectangle{
}
Sealed Interface
Spring Boot
与 Spring 关系
与 SpringCloud 关系
最新的 Spring Boot3 新特性
如何学好框架
脚手架
使用脚手架创建项目
IDEA 创建 SpringBoot 项目
代码结构
单一模块
多个模块
包和主类
spring-boot-starter-parent
core核心注解
package com.at.springboot2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import java.util.Date;
@SpringBootApplication
//@SpringBootConfiguration 包含@Configuration注解的功能
// @Configuration:javaConfig的功能,配置类,结合@Bean能将对象注入spring的ioc容器
// 有@SpringBootConfiguration标注的类是配置类:springboot2application是配置类
//@EnableAutoConfiguration 开启自动配置,将spring和第三方库中的对象创建好,注入到spring容器
// 避免写xml,去掉样式代码,需要使用的对象,由框架提供
//@ComponentScan 组件扫描器,<context:component-scan base-package="com.at.springboot2"/>
//扫描当前包及其子包,扫描到@Controller、@Service、@Repository、@Component注解的类,创建对象,注入到spring容器中
// springboot约定:启动类,作为扫描包的根(起点),默认扫描当前包及其子包
//
public class Springboot2Application {
@Bean
public Date myData() {
return new Date();
}
public static void main(String[] args) {
//run方法的第一个参数是源(配置类),从这里加载bean,找到bean注入到spring的容器中
//run方法的返回值是容器对象
ApplicationContext ctx=SpringApplication.run(Springboot2Application.class, args);
//可以从容器获取对象
Date bean = ctx.getBean(Date.class);
}
}