Geeks_Z の Blog Geeks_Z の Blog
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)

Geeks_Z

AI小学生
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)
  • Linux

  • 数据结构与算法

  • 算法设计与分析

  • Java

  • Python

  • 设计模式

  • 计算机网络

  • Spring笔记

    • Spring概述
    • IOC的概念作用
    • bean标签
    • 基于XML创建bean对象
    • 基于XML的依赖注入
    • 基于注解创建bean对象
    • 基于注解的依赖注入
    • 其他注解
      • @Scope
      • 和生命周期相关
      • @Configuration
      • @ComponentScan
      • @Bean
      • @Import
      • @PropertySource
      • @Runwith
      • @ContextConfiguration
      • @Conditional
        • XML与注解对比
    • AOP
  • SpringMVC笔记

  • SpringBoot笔记

  • SpringSecurity

  • Elasticsearch笔记

  • RabbitMQ笔记

  • Docker笔记

  • MySQL

  • Redis

  • Mybatis

  • MybatisPlus

  • Nginx

  • Kubernetes笔记

  • Git

  • Software

  • 微服务笔记

  • bug

  • BackEndNotes
  • Spring笔记
Geeks_Z
2023-01-15
目录

其他注解

其他注解

@Scope

  • 基于注解改变bean的范围

  • 作用:等同于在 <bean> 标签中使用 scope属性

  • 属性:

    • singletond : 单例的(default)

      1)在容器启动完成之前就已经创建好对象,保存在容器中

      2)任何获取都是获取之前创建好的对象

    • prototype : 多例的

      1)容器启动默认不会去创建多实例bean

      2)获取时去创建这个bean

      3)每次获取都会创建一个对象

    • request : 作用于 web 应用的请求范围。WEB项目中,Spring创建一个Bean的对象,将对象存入到request域中.

    • session : 作用于 web 应用的会话范围。WEB项目中,Spring创建一个Bean的对象,将对象存入到session域中.

    • global-session : 作用于集群的会话范围(全局会话范围),当不是集群范围时,它就是 session

      gloabl-session 示意图:

    • init-method:指定类中的初始化方法名称。

    • destroy-method:指定类中销毁方法名称。

总结:

  1. 当bean是单实例,并且没有设置懒加载 (opens new window)时,Spring容器启动时,就会实例化bean,并将bean注册到IOC容器中,以后每次从IOC容器中获取bean时,直接返回IOC容器中的bean,而不用再创建新的bean了。

  2. 若bean是单实例,并且使用@Lazy注解设置了懒加载,则Spring容器启动时,不会立即实例化bean,自然就不会将bean注册到IOC (opens new window)容器中了,只有第一次获取bean的时候,才会实例化bean,并且将bean注册到IOC容器中。

  3. 若bean是多实例,则Spring容器启动时,不会实例化bean,也不会将bean注册到IOC容器中,只是在以后每次从IOC容器中获取bean的时候,都会创建一个新的bean返回。

全局session

image-20220207155333622

和生命周期相关

作用:等同于在<bean>标签中使用 init-method和 destroy-method

  • ==@PreDestory==

    作用:用于指定销毁方法

  • ==@Postcontrust==

    作用:用于指定初始化方法

  • 测试类:

        public static void main(String[] args) {
                //1.获取核心容器对象
                ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
                //2.根据id获取Bean对象
                IAccountService as  = (IAccountService)ac.getBean("accountService");
        
                as.saveAccount();
            }
        }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

@Configuration

  • 作用:指定当前类是一个配置类
  • 细节:当配置类作为AnnotationConfigApplicationContext对象创建的参数时,该注解可以不写。
    

@ComponentScan

凡是在指定的包或其子包中的类上标注了@Repository、@Service、@Controller、@Component注解的类都会被扫描到,并将这个类注入到Spring容器中。

  • 作用:用于通过注解指定spring在创建容器时要扫描的包
  • 属性:

    •  value:它和basePackages的作用是一样的,都是用于指定创建容器时要扫描的包。
      
    •  我们使用此注解就等同于在xml中配置了:
      
    <context:component-scan base-package="com.itheima"></context:component-scan>
    
    1
  • includeFilters()方法指定Spring扫描的时候按照什么规则只需要包含哪些组件【方法的返回值都是Filter[]数组】

    当我们使用includeFilters()方法来指定只包含哪些注解标注的类时,需要禁用掉默认的过滤规则。

    @ComponentScan(value="com.meimeixia", includeFilters={
    		/*
    		 * type:指定你要排除的规则,是按照注解进行排除,还是按照给定的类型进行排除,还是按照正则表达式进行排除,等等
    		 * classes:我们需要Spring在扫描时,只包含@Controller注解标注的类
    		 */
    		@Filter(type=FilterType.ANNOTATION, classes={Controller.class})
    }, useDefaultFilters=false) // value指定要扫描的包
    
    
    1
    2
    3
    4
    5
    6
    7
    8
  • excludeFilters()方法指定Spring扫描的时候按照什么规则排除哪些组件。【方法的返回值都是Filter[]数组】

    @ComponentScan(value="cn.edu.buaa", excludeFilters={
    		/*
    		 * type:指定你要排除的规则,是按照注解进行排除,还是按照给定的类型进行排除,还是按照正则表达式进行排除,等等
    		 * classes:除了@Controller和@Service标注的组件之外,IOC容器中剩下的组件我都要,即相当于是我要排除@Controller和@Service这俩注解标注的组件。
    		 */
    		@Filter(type=FilterType.ANNOTATION, classes={Controller.class, Service.class})
    }) // value指定要扫描的包
    
    1
    2
    3
    4
    5
    6
    7

@Bean

  • 作用:用于把当前方法的返回值作为bean对象存入spring的ioc容器中
  •  属性:
     *      name:用于指定bean的id。当不写时,默认值是当前方法的名称
    
  •  细节:
     *      当我们使用注解配置方法时,如果方法有参数,spring框架会去容器中查找有没有可用的bean对象。
     *      查找的方式和Autowired注解的作用是一样的
    

@Import

  • 属性:
    •      value:用于指定其他配置类的字节码。
      
    •      当我们使用Import的注解之后,有Import注解的类就父配置类,而导入的都是子配置类
      

@PropertySource

作用:用于指定properties文件的位置

  •  属性:
     *      value:指定文件的名称和路径。
     *      关键字:classpath,表示类路径下
    

@Runwith

使用Junit提供的一个注解把原有的main方法替换了,替换成spring提供的

@ContextConfiguration

告知spring的运行器,spring和ioc创建是基于xml还是注解的,并且说明位置

locations:指定xml文件的位置,加上classpath关键字,表示在类路径下

classes:指定注解类所在地位置

@Conditional

按照一定的条件进行判断,满足条件向容器中注册bean,不满足条件就不向容器中注册bean。可以添加到类上,也可以添加到方法上。

image-20220918150751814

XML与注解对比

image-20220207204901007

image-20220918154937163

上次更新: 2024/03/29, 08:56:31
基于注解的依赖注入
AOP

← 基于注解的依赖注入 AOP→

最近更新
01
并行训练
03-29
02
tensor维度转换
03-26
03
ResNet源码解读
03-23
更多文章>
Theme by Vdoing | Copyright © 2022-2024 Geeks_Z | MIT License
京公网安备 11010802040735号 | 京ICP备2022029989号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式