4-1 Spring框架基础知识
作者:互联网
Spring框架基础知识
1.Spring 框架作用
- 主要解决了
创建对象
和管理对象
的问题. 自动装配机制
2.Spring 框架
- (Spring容器,JavaBean容器,Bean容器,Spring容器,IOC容器)
- 容器: 只要有需要都可以找它去拿,叫容器
3.依赖关系:
- 类与类之间的是有依赖关系的(例如:在类B里边调用类A的方法) ;
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运行流程
-
Spring跑起来:ACAC
-
获取对象
-
测试使用
-
结束
-
注解格式: 类型 参数名(value...) [default默认值] 1. value可以不写 2. @AliasFor==等效于 3. 数组类型,只写一个的时候大括号可以不写 ※语义: 见注解属性(参数名)知其意思 ※引申: 设计大于需求 ※所有的注解的意义或作用,都取决于运行环境或调用者
Spring Bean的作用域
-
默认是单例预加载(常用)
-
注解
singleton 只使用1个实例 prototype 每次引用到bean时都会创建新的实例 session 每个用户会话创建新的实例 - 仅限Web环境 request 每个请求创建新的实例 - 仅限Web环境 -
对象加载
- 单例模式
- 预加载 Spring启动时就开始创建对象
- 懒加载 @Lazy 需要获取对象时才加载
- 单例模式
自动装配机制
- Spring的自动装配机制表现为:当某个量需要被赋值时,可以使用特定的语法,使得Spring尝试从容器找到合适的值,并自动完成赋值
- 最典型的表现就是在类的属性上添加@Autowired注解,Spring就会尝试从容器中找到合适的值为这个属性赋值
1.@Autowired的装配机制
- 关于@Autowired的装配机制,首先,会根据需要装配的数据的类型在Spring容器中统计匹配的Bean(对象)的数量
- 当匹配的Bean数量为0个时,判断@Autowired注解的required属性值– true(默认):装配失败,启动项目时即抛出NoSuchBeanDefinitionException– false:放弃自动装配,不会报告异常,后续直接使用此属性时,会出现NPE
- 当匹配的Bean数量为1个时,将直接装配,且装配成功
- 当匹配的Bean数量为多个时:自动尝试按照名称实现装配(即:要求属性名称与beanName相同)
- 存在与属性名称匹配的Spring Bean:装配成功
- 不存在与属性名称匹配的Spring Bean:装配失败,启动项目时即抛出NoUniqueBeanDefinitionException
2.※重要小结:
自动装配的前提是Spring会自动创建此类的对象
;否则Spring不可能为属性赋值,也不可能调用类中的方法- @Autowired为属性赋值(自动装配依赖注入)
- 自动装配方法传参(Spring可以找到此对象)
标签:装配,框架,Spring,基础知识,Bean,自动,组件,注解 来源: https://www.cnblogs.com/yzoran/p/16483656.html