• 8.11 Day39----框架面试题


    目录

    Spring相关注解:

    用于启动类上面的注解:

    用于普通控制器上面的注解:

    Rest风格的控制器:

    用于Service上面的注解:

    用于Mapper接口中的注解:

    用于实体类的注解:

    配置相关的主键:

    IoC注解(控制反转,让扫描器发现,注册Bean到IoC容器中):

    DI注解(依赖注入):

    AoP注解(面向切面编程):

    Spring事务管理注解:

    Lombok相关注解:


    Spring相关注解:

    用于启动类上面的注解:

    @SpringBootApplication  这是一个复合注解,包含3个注解
    @SpringBootConfiguration作用于与@Configuration,让当前类成为一个配置类
    @EnableAutoConfiguration 开启自动化配置
    @ComponentScan  开启IoC扫描器,自动扫描与当前启动类同级或下级所有的组件类,发现、注册、注入
    @MapperScan("") 用来配置Mapper接口所在的包路径,MyBatis基于动态代理模式,在运行时代理所有Mapper接口

    用于普通控制器上面的注解:

    @Controller  让当前类被发现,被注册对象到IoC容器,并且对象被当作控制器使用
    @RequestMapping  映射类或方法的请求url地址,类可以有地址也可以没有,类的url地址是当前类中所有方法url地址的前缀,给类映射url地址的时候不可以指定请求方式,给方法映射url地址的时候可以指定为请求方式为get或post,如果不指定默认是get
    @GetMapping
    @PostMapping
    @ResponseBody 将控制器方法返回的结果直接转换为json格式,然后放到响应报文中进行返回,这样控制器方法只返回数据,不用转发到jsp,它是和ajax发的http请求一起使用的
    @RequestParam 用于修正参数名,设置参数是不是必须的

    Rest风格的控制器:

    @RestController 
      定义一个rest风格的控制器
         1.控制器中将所有的方法都默认使用了@ResponseBody注解,只返回对象,不做转发和重定向  
    @GetMapping
    @PostMapping
    @PutMapping
    @DeleteMapping
    @PathVariable

    用于Service上面的注解:

    @Service 让Service类被IoC容器发现,注册

    用于Mapper接口中的注解:

    @Param 当接口中的方法有多个参数的时候,需要用@Param注解修正名字,在Mapper.xml文件中根据@Param注解修正后的名字进行取值

    用于实体类的注解:

    @TableName 映射表名
    @TableId 映射表中的主键id
    @TableField 映射表中的字段

    如果实体类中类名和属性名完全遵守驼峰命名规范

    数据库表名和字段名完全遵守全小写+下划线连字符规范

    那么就不需要使用@TableName和@TableField进行手动映射,MyBatis框架会在自动映射

    配置相关的注解:

    @Configuration 让任意一个类成为一个配置类
    @Bean 用于配置类中的方法,将方法返回的对象注册到IoC容器中
    @Value("${配置名}") 用于读取application.properties核心配置文件中,根据配置名读取值,并把值赋给成员变量

    IoC注解(控制反转,让扫描器发现,注册Bean到IoC容器中):

    @Contorller 用于控制器
    @Service 用于Service
    @Repository 用于dao
    @Component 用于普通组件类,例如用于AoP类
    @Configure 用于配置类
    @Scope
     用于设置Bean的作用域@Scope("singletion")单例模式:在启动时就会发现和注册Bean放到IoC容器,不会创建新的对象
      @Scope("prototype")原型模式:在启动时就会发现和注册Bean放到IoC容器,每访问一次就会创建一个新的对象

    DI注解(依赖注入):

    @Resource JDK提供的
    @Autowired 框架自带的

    AoP注解(面向切面编程):

    @Aspect 定义一个AoP切面类
    @Pointcut("execution(*com.iweb.springboot.controller..(..))") 定义一个切面表达式,根据表达式寻找被AoP代理增强的目标方法
    @Before 定义一个前置代理增强的方法
    @AfterReturning 定义一个返回时代理增强的方法
    @AfterThrowing 定义一个抛出异常时代理增强的方法
    @After 定义一个后置代理增强的方法
    @Around 定义一个环绕代理增强的方法

    Spring事务管理注解:

    @Transactional
     
     1. 可以用于类,也可以用于方法,如果用于类,则类中所有方法都会开事务执行,用于方法是单个方法开事务执行
     2. 可以用于Controller类,也可以用于Service类,或者其他操作数据库的类
     3. 必须指定rollbackFor=某个异常类型.class,表示当执行过程中发生这种异常时进行回滚,不发生执行提交
          @Transactional(rollbackFor = Exception.class)
     4. 事务隔离级别默认是数据库的默认隔离级别,可以通过isolation 设置,取值是Isolation枚举类型
        @Transactional(rollbackFor = Exception.class, isolation = Isolation.DEFAULT)
     5. 可以通过propagation指定事务传播机制,取值是Propagation枚举类型

    事务隔离级别有4种:(重点了解)

    事务传播机制级别有7种(使用默认即可)

    Lombok相关注解:

    @Data 用于自动生成getter/setter方法,重写toString()方法,equals()和hashcode()方法
    @Slf4j 在字节码中生成一个全局的静态常量log,用于打印日志
  • 相关阅读:
    纯虚函数和抽象类
    紫光集团、展讯通信、锐迪科(RDA)、紫光展锐以及翱捷科技(ASR)关系梳理
    SENet 学习
    使用 Transformers 进行图分类
    c语言的基本类型有哪些
    散列表的查找
    Swagger(2):Springfox简介
    Java基础——native
    python实现分词器
    day44 数据库查询命令
  • 原文地址:https://blog.csdn.net/qq_63771774/article/details/126282375