spring

-------------------------------spring-----------------------------
1.IOC控制反转(DI依赖注入) ---Inversion of control(DI dependency Injection)
2.AOP面向切面编程 --- Aspect Oreinted Program:主次分离
用来整合其他框架,提供声明事务支持(MVC)
    什么是IOC?
            控制反转(就是不用new,进行一个反转直接注入文档中)
    什么是DI?
            依赖注入(对控制反转的一个补充,类与类之间的依赖关系)
    得到对象的方式(4种):
      new :spring不用new (高内聚低耦合)
     reflect<反射> <com.xx.entity.User>
     clone<克隆>  
     反序列化
Spring容器:不依赖服务器,可以独立运行
Servlet容器:必须在服务器上才能运行,jsp,servlet
耦合:
内聚:
          关系弱到强:      依赖   聚合   组合               实现  继承

spring对配置的文件名和位置没有要求
dtd:文档类型描述文件
xsd:xml模型类型描述文件


--spring<解耦>----
流程:1.导包jar
     2.配置*.xml<spring_ or allipactionContext>(路径与名字无关紧要,有规范)
     3.DI<IOC>依赖注入--四种方式:new reflect clone inverse-serializable
     4.spring DI产生一个bean的技术基础:reflect
    spring <bean>:涉及到一个模式:signleton(单列模式):lazy(懒汉模式)|hungry(饿汉模式)
            涉及到的属性-scope:signleton(单列)|prototype(多列)(Struts2 Action<pojo> struts.xml<默认状态下:prototype>)
                         init-method="?" destroy-method=""
    
注入方式:1.set方法注入,2.构造方法,3.直接给属性注入,需要使用注解4.自动织入 autowire(本质利用了set方法)
      1.byName<id="属性名">
    <property name="属性名" ref="即将注入的实体类对象">
    byType根据
    2.构造方法注入 autowire="constructor"    参数下标   引用id--------------------
    3.读取外部的*.properties文件  ${key :默认值}
        有三种路径:
                classpath:com/xx/property/test.propertity(编译文件)
                file:///D:/webproject/spring/src/com/...(绝对路径)
                http://www/spring(第三种url的形式)    

自定义转换器的配置
1.先写一个转换器类
2.继承propertyEditorsupport
3.@override
    方法
        SimplDateFormat sdf=new SimmplDateFormate("yyyy-MM-dd HH:mm:ss")
        Date da=sdf.parse(test)
        配置个bean
lazy----true 懒汉模式
    false饿汉模式


|--------------------------------------Web三大巨头----------------|
|NET(微软)    PHP(zend)    JAVA(sun,oracle)              |
|-----------------------------------------------------------------|
spring善用的模式:工厂模式,单列模式
工厂模式: 优点就是解耦,结构条理清晰,方便理解

Canledar接口
getInstance实例化
自定义类型转换
FactoryBean工厂豆
注解:------------------(原理就是利用的反射)
    @Component(value="dao")这个值指的是<bean id="dao">
    @Value(value&{})给属性赋值
    @Resource(name="dao")<bean id="dao">
反射:reflect
    反射最底层的class object 每一个类(class,abstract,interface,@interface)
可以有实现类实例化Instance,通常是new得到实例.(自己理解为:反射则为通过对象得到一个抽象的类
Class就是一个类模板
)
        在不同类中,私有属性可以访问到.
        setAccessible(true)是否访问私有属性
        set(dao,"1234")私有属性类对应的当前实现类的实例
注解就像是个类(写类)
@Target(ElementType.field)放在属性上
@Retention(RetentionPolicy.*)保留方针   SOURCE源码  runtime运行时有效 class二进制
完成后记得写个类继承beanpostprocessor,beanfactoryAware并实现方法
有三个返回值


----------------------------------AOP----------------------------------------
        Aspect Oriented programming<面向切面编程>
        AOP 是OOP<OBJECT ORIENTED PROGRMMING>升级<主业务和次要业务分离>
        做主要业务的类的TargetClass目标类,此业务的类<Advice>
AoP的优点:减少代码重复模块提高工作效率,降低模块间的耦合度,利于未来的可操作和可维护性.
AOP可以说是OOP面向对象编程的补充和完善
AOP把软件分为两个部分:核心关注点和横切关注点
            业务处理的是主要是核心关注点  增删改查
            关系不大的是横切关注点.   事务
AOP技术分两大类:一是动态代理技术(主要业务逻辑的类,目标类)---proxy(代理类)--->织入(weaver)
        二是采用静态织入方式(次要业务逻辑的类,通知类)
代理 proxy:其实也是一个类,但是这个类不是自己写的,是由代理API或第三包.class文件

----------------------------虚拟机---------------------------------
虚拟机加载器:JVM loader(他是个规范)
        计算机:硬件 CPU memory
        OS   <OprationSystem>
(java---跨平台,虚拟机是不跨平台的)
        
.class是二进制  也即是命令
命令两种:一是用jvm编译再执行(操作系统)
    二是直接执行(操作系统)
main方法是启动虚拟机的入口
    main()--->Load(加载)
        启动-->
        三种加载器
        --1.strapClassLoader 必须.jar
        --2.ExtClassLoader    拓展.jar
        --3.AppClassLoader    应用程序(自己写的)jar

代理:
    
    就是目标类执行方法
    代理类非现实写出来的,Spring AOP是动态生成的.class
    代理类与目标类要实现同一接口,或者是目标类的子类
    技术:反射
        类加载
        反射获取父类或父接口方法<Method>
    代理类生成的<.class>
        可用自带的proxy
            cglib
            javassist
----------------步骤:
            1.classpath:*.jar
            2.-spring
            3.*.xml
            4.-log配置
            5.*.properties
-Advice
1.前置通知:Targetclass的method执行之前的通知类,此通知implements MthodBeforeAdvice
2.常规(后置)通知:TargetClass的method return之后<即目标类方法执行完后执行的通知类,此通知要实现:implements         
3.异常通知:
4.环绕通知:
5.自定义通知(前,后通知,返回通知,异常通知):
order:越小越优先
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值