了解:自动装配,bean的继承,依赖关系(parent) 有好多一样的东西
重要:bean的作用域默认情况下,IOC 中配的bean是单例的,适用于大部分情况,也有不适用的
配置scope="prototype" 原型的 每次调用getBean 都会返回一个新的对象
scope="singleton" 默认的 ,单例的
<bean scope="prototype"></bean>
使用外部属性文件
重要:
bean 的生命周期
1. 调用构造器创建对象
2. 调用 setter 为属性初始化
3. 调用 BeanPostProcessor 的 postProcessBeforeInitialization 方法
4. 调用 init-method
5. 调用 BeanPostProcessor 的 postProcessAfterInitialization 方法
6. bean 可以使用
7. 容器关闭的时候, 调用 destroy-method
实现BeanPostProcessor接口
* IOC 容器在调用 init-method 之后会调用该方法. 若没有 init-method
* 则在 postProcessBeforeInitialization 之后就调用该方法.
*
* @param arg0: bean 实例
* @param arg1: 在 IOC 容器中配置的 bean 的 id.
*
* @return : 返回值将直接给到 getBean 方法作为返回值
*
* 作用: 在 init 前后对 bean 的属性进行调整. 通常在使用 BeanPostProcessor 时都需要使用 instanceof 对 bean 进行
* 先行的判断.
<bean class="实现BeanPostProcessor接口的全类名"></bean>
运行流程
构造器被调用...
before方法
init方法调用了...
after方法
开始运行
了解:工厂方法1.实例工厂方法
2.静态工厂方法
重要:FactoryBean
bean对象需要实现FactoryBean接口
实现三个方法返回的是getObject()方法 返回的实例 因为有些在IOC中配置不方便,
则可以使用FactoryBean简化配置,多见于Spring整合第三方框架
重要重中之重(工作都用):基于注解的配置方式
1. 导入 context 命名空间
2. 使用 context:component-scan 节点的 base-package 属性指定扫描的包,同时会扫描子包
3. 在需要被扫描的包上添加注解.
4. 在需要装配的属性上添加 @Autowire 注解.
泛型依赖注入:
1. 可以根据泛型类型注入对应的 bean.
(根据泛型,要在继承baseDao之类class上面加注解)
2. 注意: 若在 IOC 中没有对应泛型的 bean, 则会抛出异常.
3. 调用getBean("类名的第一个字母小写 和类名一样")
aop初学
1.导入包<context:component-scan base-package="com.atguigu.spring.aop"></context:component-scan>
2.加入 <aop:aspectj-autoproxy></aop:aspectj-autoproxy> 配置. 使 Spring 可以自动的生成代理对象
3.创建有方法的实现类,注解 @Component("id名称") (组件的意思),@Aspect 声明为切面类
@before("execution(方法全类名)")
@Before("execution(修饰符 返回值类型 全类名.方法名(参数类型列表))")
4.通过getBean获取对象,调用对象方法即可