【Spring5.0】学习目录(二)

版权声明:转载或者引用本文内容请注明原作者名字及来源地址→ https://blog.csdn.net/weixin_43254907/article/details/88614090
  • 【Spring5.0】学习目录(一)

  • 两种后处理器

    • Bean后处理器:用于对Bean进行额外加强(实现BeanPostProcessor接口)

      Object postProcessorBeforeInitialization(Object bean, String id)
      Object postProcessorAfterInitialization(Object bean, String id)
      
      • bean:系统即将进行后处理的Bean

      • id:该Bean的配置id

      • Spring提供的两个常用的后处理器

        • BeanNameAutoProxyCreator:根据Bean实例的name属性,创建Bean实例的代理。
        • DefaultAdvisorAutoProxyCreator:根据提供的Advisor,对容器中的所有Bean实例创建代理。
    • 容器后处理器:用于增强容器功能 (实现BeanFactoryPostProcessor接口)

      postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
      
      • Spring提供的几个常用的容器后处理器

        • PropertyPlaceholderConfigurer:属性占位符配置器

          • 读取属性文件信息(.properies文件),并将这些信息设置成Spring配置文件的数据
        • PropertyOverrideConfigurer:重写占位符配置器

          • 属性文件指定的信息可以直接覆盖Spring配置文件中的元数据
          • 属性文件格式:beanId.property=value
        • CustomAutowireConfigurer:自定义自动装配的配置器

        • CustomScopeConfigurer:自动以作用域的配置器

  • Spring 注解

    • @Component:标注一个普通的Spring Bean类

    • @Service:标注一个业务逻辑类

    • @Controller:标注一个控制器组件类

    • @Repository:标注一个DAO组件类

    • @Lookup

    • <context:component-scan base-package="">

      • <context:include-filter type="" expression="">

      • <context:exclude-filter type="" expression="">

        • type:指定过滤器类型 - annotationassignableregex
        • expression: 过滤器所需要的表达式
    • @Scope指定Bean的作用域

      • "prototype""singleton""application""request""session"
    • @Resource[(name="")]name为某个Bean实例的id。可以修饰setter,也可以修饰实例变量

    • @Value(""):配置属性值。可以修饰setter,也可以修饰实例变量

    • @PostConstruct:定制生命周期行为:修饰Bean的初始化方法

    • @PreDestory:定制生命周期行为:修饰Bean销毁之前的方法

    • @DependsOn({"",""}):改变初始化行为:强制初始化两个Bean

    • @Lazy:改变初始化行为:是否取消某个Bean的预初始化

    • @Autowired:自动装配(默认使用byType的方式)

      • 修饰setter方法

        @Autowired
        public void seAxe(Axe axe) {this.axe = axe}...
        
      • 修饰普通多参方法

        @Autowired
        public void prepare(Axe axe, Dog dog) {this.axe = axe; this.dog = dog;}...
        
      • 修饰构造器或实例变量

        @Autowired
        private Axe axe;
        @Autowired
        public Chinese(Axe axe, Dog dog) {this.axe = axe; this.dog = dog;}...
        
      • 修饰数组类型的成员变量

        @Autowired
        private Axe[] axe;
        
      • 标注集合类型的实例变量

        private Set<Axe> axes;
        @Autowired
        public void setAxes(Set<Axe> axes) {this.axes = axes;}...
        
    • @Primary:由于@Autowired默认使用byType策略完成自动装配,可能出现多个类型相同的Bean,此时就会报异常。

      • @Primary用于指定候选Bean为主候选Bean
    • @Qualifier:用于指定Bean的id来完成自动装配

    • @Required:为setter方法检查注入。

  • 资源访问

    • 使用前缀指定访问策略

      new FileSystemXmlApplicationContext("classpath:beans.xml");
      
    • classpath*:前缀用法

      • 系统将搜索类加载路径,找出所有与文件名匹配的文件,分别加载文件中的配置定义,最后合并成一个ApplicationContext
      new FileSystemXmlApplicationContext("classpath*:beans.xml");
      
    • file:前缀的用法

      • 访问相对路径下的beans.xml,以当前工作路径为起点
        	new FileSystemXmlApplicationContext("file:beans.xml");
        
      • 访问绝对路径下的beans.xml,以文件系统根路径为起点
        	new FileSystemXmlApplicationContext("file:/beans.xml");
        

猜你喜欢

转载自blog.csdn.net/weixin_43254907/article/details/88614090