微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

4-1 Spring框架基础知识

Spring框架基础知识

1.Spring 框架作用
2.Spring 框架
  • (spring容器,JavaBean容器,Bean容器,spring容器,IOC容器)
    • 容器: 只要有需要都可以找它去拿,叫容器
3.依赖关系:
4.异常NPE
  • Null Point Exeception)
5.Spring框架依赖项
  • spring-context (pom.xml加载依赖项)
6.Spring Bean :
  • 被Spring管理的对象

    • 创建对象的方式有两种:

      • 通过@Bean方法

      • @Configuration
        public class Springbeanfactory {
            @Bean
            public Random random() {
                return new Random();
            }
        }
        
      • 通过组件扫描:只适用于自定义的类

      • @Configuration
        @ComponentScan("cn.tedu.spring")
        public class SpringConfig {    
        }
        
        @Component/@Controller/@Service/@Repository
        public class UserMapper {
        }
        
7.相关注解:
注解 解释
@Configuration 添加在类的声明之前,表示此类是配置类,会自动执行配置类中的@Bean方法,并解读配置类上的其它注解
@Bean 使得Spring框架自动调用方法,并管理此方法返回的结果,@Bean方法必须存在于@Configuration类中
@ComponentScan 组件扫描,当加载到此注解时,Spring会扫描此注解配置的根包下是否存在组件类,如果存在,会自动创建组件类的对象,如果某些类不是组件,会被跳过(无视)
@Component 组件注解,添加在类的声明之前,表示此类是组件类,是通用注解,应该添加在不是控制器类,也不是业务逻辑类,也不是数据访问类的类上
@Controller 组件注解,添加在类的声明之前,表示此类是组件类,应该添加在控制器类上
@Service 组件注解,添加在类的声明之前,表示此类是组件类,应该添加在业务逻辑类上
@Repository 组件注解,添加在类的声明之前,表示此类是组件类,应该添加在数据访问类上
@scope 配置Spring Bean的作用域,当配置为@Scope("prototype")时,Spring Bean将是“非单例的”
@Lazy 配置单例的Spring Bean是否是“懒加载”的,当在@Bean方法之前,或在组件类的声明之前添加此注解,则会使得此Spring Bean是懒加载的
@Autowired 自动装配(布线) 的注解,当某个属性需要被Spring装配值时,在属性之前添加此注解
@Qualifier 自动装配方法参数时指定beanName
@Resource 自动装配(布线) 的注解
8.Spring运行流程
  1. Spring跑起来:ACAC

  2. 获取对象

  3. 测试使用

  4. 结束

  5. 注解格式:
    
    	类型  参数名(value...)  [default认值]
    	
       1. value可以不写
       2. @AliasFor==等效于
       3. 数组类型,只写一个的时候大括号可以不写
       
         ※语义: 见注解属性(参数名)知其意思
         ※引申:  设计大于需求
         ※所有的注解的意义或作用,都取决于运行环境或调用

Spring Bean的作用域

  1. 认是单例预加载(常用)

  2. 注解
    singleton 只使用1个实例
    prototype 每次引用到bean时都会创建新的实例
    session 每个用户会话创建新的实例 - 仅限Web环境
    request 每个请求创建新的实例 - 仅限Web环境
  3. 对象加载

    • 单例模式
      • 预加载 Spring启动时就开始创建对象
      • 懒加载 @Lazy 需要获取对象时才加载

自动装配机制

  • Spring的自动装配机制表现为:当某个量需要被赋值时,可以使用特定的语法,使得Spring尝试从容器找到合适的值,并自动完成赋值
  • 最典型的表现就是在类的属性添加@Autowired注解,Spring就会尝试从容器中找到合适的值为这个属性赋值
1.@Autowired的装配机制
  1. 关于@Autowired的装配机制,首先,会根据需要装配的数据的类型在spring容器统计匹配的Bean(对象)的数量
    • 当匹配的Bean数量为0个时,判断@Autowired注解的required属性值– true(认):装配失败,启动项目时即抛出NoSuchBeanDeFinitionException– false:放弃自动装配,不会报告异常,后续直接使用此属性时,会出现NPE
    • 当匹配的Bean数量为1个时,将直接装配,且装配成功
    • 当匹配的Bean数量为多个时:自动尝试按照名称实现装配(即:要求属性名称与beanName相同)
      • 存在与属性名称匹配的Spring Bean:装配成功
      • 不存在与属性名称匹配的Spring Bean:装配失败,启动项目时即抛出NoUniqueBeanDeFinitionException
2.※重要小结:
  1. 自动装配的前提是Spring会自动创建此类的对象;否则Spring不可能为属性赋值,也不可能调用类中的方法
    1. @Autowired为属性赋值(自动装配依赖注入)
    2. 自动装配方法传参(Spring可以找到此对象)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐