bean是工厂模式 beanFactory 实现是XmlBeanFactory 根据xml中定义加载beans
BeanFactory是什么时候调用bean,就什么时候创建。applicationContext是一次性创建好所有Bean
spring的作用域 <socpe>属性
默认是singleton(单例)
可选protype (多个实例) request(每次请求生成一个) session(同一个会话共享一个Bean) globe-session()
依赖注入: 我的理解就是类中参数值的设置非显示的代码中设置,而是通过xml文件设置。 A类中有参数B b,把这个看成参数理解就可以了。
<bean id="A" class="">
<!--根据name名称-->
<property name="name" value="crystal"></property> set注入
</bean>
<bean id="B" class="">
<!--必须与构造器中参数顺序一致-->
<constructor-arg value="hhh"></constructor-arg> 构造器注入
</bean>
AOP: 感觉就是对每个逻辑业务方法进行增强,添加执行前,和执行后的其他方法,如log。
servlet的匹配方式 /xxx/*(路径映射) / *.do(扩展名映射) 注意/xxx/*.do 这种方式是错误的,就是说扩展名映射和路径映射不能同时使用
servlet的生命周期:实例化,初始init,接收请求service,销毁destroy;
spring的生命周期:实例化Bean;设置对象属性(DI);处理aware接口: 实现了BeanName接口,则调用setBeanName()方法。实现了BeanFactoryAware接口,则调用setBeanFactory()方法。实现了ApplicationContextAware接口,则调用setApplicationContext()方法; BeanPostProcessor, 实现了BeanPostPrcesssor接口(功能是对Bean进行一些自定义),调用postProcessBeforeIntialization()方法。在初始化结束时调用;InitializingBean与Ini-method,
xml中配置了init-method属性,则会调用该方法;实现了BeanPostProcessor接口,那么调用postProcessAfterInitialization()方法;实现了DisposableBean接口,那么destory();配置了destory-method属性,那么调用销毁方法。
@auowired bytype自动装配
@Resource byname不行的话,再bytype
代理模式: 是对原有方法的扩展,原本返回什么,代理后还是返回什么
public Object invoke(MethodInvocation in) throws Throwable
{
in.proceed(); //原有方法在这里执行
}
spring aop的代理: <aop:aspectl-autoproxy>开启自动代理
@aspectj 开启aspectj的注解 @component生成bean
在log()方法上@Before(value="execution(表达式)")
AspectJ的静态代理: 编译时生成字节码
@aspectj 开启aspectj的注解
在log()方法上@Before(value="execution(表达式)")