框架作用:
1.增强可重用性
2.提供编写规范
3.解耦底层实现原理
等等
Spring体系结构
Core Container核心容器
Beans
Core
Context
SpringEL表达式
中间层技术:
AOP
Aspects
应用层技术:
数据访问与数据集成 data access/
Web集成
Web实现
基于Test测试
低耦合和高内聚
模块之间低耦合
模块内部高内聚
工厂模式
1.应用程序------->资源
2.应用程序----->工厂------->资源
3.应用程序----->工厂-------->配置文件------->资源
-----------------------------
Spring雏形
IOC(Inversion Of Control):控制反转
IOC模式:IOC容器:Spring控制资源
传统模式:应用程序控制资源
Spring:管理单例的IOC容器
工厂创建bean方式:
静态工厂创建bean
实例工厂创建bean
bean的属性:
id:唯一标识
name:起别名
scope:对象是否是单例
DI和IOC:同一件事的两个不同角度的描述
DI:依赖注入
由。。。构造:
:ref关联实体bean,一般用于引用类型
:value可以直接传值,一般用于基本数据类型
由构造器构造:
注解开发
@Component(""):(哪个层都可以用) 加在类定义上方
等价:@Controller(控制层) @Service(服务层) @Repository(数据层)
第三方:@Bean
@Primary:提高类加载的优先级,适用于同一接口不同实现类的优先加载
@Scope(""): 加在类定义上方
bean的生命周期:
@PostConstruct: 加在成员方法上方
@PreDestroy: 加在成员方法上方
非引用类型的属性注入:
@Value("${}"):可以写在成员变量上,也可以写在set方法上(为简化代码,set方法可以不写)
引用类型的属性注入:
@Autowired:自动装配
@Qualifier("${}"):区别同一接口的不同实现类
加载properties文件:
@PropertySource(""):加在类上,如果要加载多个properties文件,可以传个数组("{’’,’’,’’,’’…}")
启动注解驱动 :指定对应的扫描路径,也就是资源所在的包(“com.itheima”)
方式一:(配置文件)
<context:component-scan base-package="com.itheima"/>
方式二:(注解)
@ComponentScan(“com.itheima”)
设置当前类为spring核心配置加载类:
@Configuration:加在类定义上方
@ComponentScan("")
依赖加载:
@DependsOn(" ")
配置类加载顺序:
@Order(1/2/3/…)
延迟加载:
@Lazy 控制加载时机,可以在用到这个类时再加载这个类,用时再加载,比如说商场的,先要加载商品相关的数据,再加载订单业务,所以可以给订单业务设置延迟加载