spring是什么?
IoC控制反转和DI依赖注入
IOC入门案例
DI入门案例
实例化bean的四种方式
方式一:构造方法实例化bean,调用无参的构造方法来实例化bean,无参的构造方法可写可不写,并且不论构造方法是公共的(public)还是私有的(private)都能成功执行,所以内部采用的是反射技术。(常用)
方式二:使用静态工厂实例化bean,提供一个静态工厂,此时class配置配置工厂类名,还要配置工厂中真正用来造对象的方法名(了解)
使用工厂造对象的方式(早些年做程序常用的方式,造对象不要自己new,用工厂的方式做一定的解耦)
通过Spring来管理静态工厂
方式三:使用实例工厂实例化bean(了解)
返回值类型UserDao是非静态的
通过Spring来管理实例化工厂
方法四:(方式三的升级版)使用FactoryBean实例化bean(重点,必须掌握)
这个不用改
bean的生命周期控制
生命周期的控制(使用配置的格式)
生命周期的控制(使用接口)
DI依赖注入方式:
- setter注入(set方法注入)
配置中使用property标签ref属性注入引用类型对象
配置中使用property标签value属性注入简单类型数据
- 构造器注入 (构造方法注入)
配置中使用constructor-arg标签ref属性注入引用类型对象
配置中使用constructor-arg标签value属性注入简单类型对象
- 自动装配
自动装配用于引用类型依赖注入,不能对简单类型进行操作
加载properties文件
Spring容器的创建及bean的获取方式
注解开发定义bean
Spring提供@Component注解的三个衍生注解
@Controller: 用于表现层bean定义
@Service:用于业务层bean定义
@Repository:用于数据层bean定义
组件里面加名字,调用bean的时候用名字调用
组件里面不写名字,调用bean的时候用类型调用
Spring纯注解开发
使用@Configuration注解代表配置类,就不需要再有配置文件了 ,然后使用@ComponentScan设定扫描路径。
纯注解开发如何控制生命周期与bean的作用范围
使用@Scope定义bean作用范围(设置单例与非单例)
使用@PostConstruct、@PreDestory定义bean生命周期
纯注解开发的依赖注入
- 自动装配:
一:使用@Autowired注解开启自动装配模式(按类型)
注意:自动装配基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据,因此无需提供setter方法
二:使用@Qualifier注解开启指定名称装配bean
注意:@Qualifier注解无法单独使用,必须配合@Autowired注解使用
三:使用@Value实现简单类型注入
- 读取properties文件:
使用@PropertySource加载properties文件
注解开发管理第三方bean
第三方Bean的声明使用@Bean
第三方Bean依赖注入
- 引用类型:方法形参
- 简单类型:成员变量
第三方Bean的加载方式
Spring整合Mybatis?
第一个Bean负责创建SqlSessionFactoryBean对象,扫描类型别名的包,配置环境数据源,数据源对象通过注入的形式加进来的
第二个Bean负责映射配置,设置扫描映射的包
Spring整合Junit
@RunWith设定Spring整合Junit的专用类运行器
@ContextConfiguration指定Spring上下文的配置类在哪里
SpringAOP
AOP入门案例:
AOP通知类型
只有当方法没有抛异常,正常结束时@AfterReturning(返回后通知)才会运行,而@After(后置通知)在方法抛异常时也能运行。
只有方法抛出异常后@AfterThrowing(抛出异常后通知)才会运行,方法正常时不会运行。
AOP总结
Spring事务
SpringMVC学习
后期开发中@EnableWebMvc也要写上,它代表的功能很多