0%

Java进阶

Spring

  • spring3和spring4的架构图对比

spring3结构图:

spring4架构图:

  • Spring4架构解析

Spring4的5层架构

1.core
2.aop
3.data access
4.web
5.test

下载spring4的jar包将其归类:

  • 1.core Container部分包含4个模块(spring核心容器)

      spring-core:依赖注入IoC与DI的最基本实现
      spring-beans:Bean工厂与bean的装配
      spring-context:spring的context上下文即IoC容器
      spring-context-support:spring额外支持包,比如邮件服务、视图解析等
      spring-expression:spring表达式语言
    
  • 2.aop部分包含5个模块(AOP & Instrumentation & Messaging)

      spring-aop:面向切面编程
      spring-aspects:集成AspectJ
      spring-instrument:提供一些类级的工具支持和ClassLoader级的实现,用于服务器
      spring-instrument-tomcat:针对tomcat的instrument实现
      spring-messaging:用于构建基于消息的应用程序
    
  • 3.data access部分包含5个模块

      spring-jdbc:jdbc的支持
      spring-tx:事务控制
      spring-orm:对象关系映射,集成orm框架
      spring-oxm:对象xml映射
      spring-jms:java消息服务
    
  • 4.web部分包含4个模块

      spring-web:基础web功能,如文件上传
      spring-webmvc:mvc实现
      spring-webmvc-portlet:基于portlet的mvc实现
      spring-websocket:为web应用提供的高效通信工具
    
  • 5.test部分只有一个模块,将spring-context-support也放在这吧

    spring-test:spring测试,提供junit与mock测试功能

  • 注:

    org.springframework.beans和org.springframework.context包是Spring框架IoC容器的基础

注:摘自以下地址>

1.博客

http://www.cnblogs.com/ywlaker/p/6136625.html

2.spring官方文档

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/index.html

查看各个jar的以来关系,请访问上述地址。

Maven的BOM清单统一管理spring版本

<!--统一spring各组件的版本-->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-framework-bom</artifactId>
            <version>4.3.10.RELEASE</version>
            <type>pom</type>
             <!--继承一个父模块,然后再引入相应的依赖-->
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <!--junit-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>

    <!--spring-context(IOC容器)-->
    <!--由于上面统一管理了spring的版本,因此此处不必指定context的版本-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
    </dependency>

</dependencies>

剔除commons-logging使用log4j

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.1.3.RELEASE</version>
        <exclusions>
            <!--排除commons-logging-->
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.5.8</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.5.8</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.5.8</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
    </dependency>
</dependencies>

IOC

该接口org.springframework.context.ApplicationContext代表Spring IoC容器,并负责实例化,配置和组装上述bean

ApplicationContext,BeanFactory, IOC 的关系

  • 关系

    ApplicationContext是比Beanfactory更加先进的IOC容器的一种实现

  • ApplicationContext类型容器提供的集中实现

    FileSystemXmlApplicationContext:从文件中加载bean定义以及相关资源的ApplicationContext实现。

    ClassPathXmlApplicatonContext:从Classpath加载bean定义以及相关资源的Applicationcontext的实现。

    XmlWebApplicationContext:用于web应用程序的ApplicationContext的实现。

  • ApplicationContext与BeanFactory的联系

    接口ApplicationContext继承了ListableBeanFactory和HierarchicalBeanFactory这两个接口,
    而这两个接口都是继承自BeanFactory接口,BeanFactory接口中有方法getBean(),返回类型为Object.

http://www.cnblogs.com/Qbright/archive/2012/07/18/2597184.html

beans

javaBeans,POJOs和spring bean

  • javaBeans:

    包含默认(无参数)的构造函数
    允许通过访问器(getter和setter方法)来访问类的成员属性
    实现java.io.Serializable接口

  • POJO

    POJO是 Plain Old Java Object(简单的Java对象)的缩写,作为一种花式的对普通Java对象的称呼.

  • Spring beans

    Spring bean 表示受到Spring管理的对象。具体说来,它是被Spring框架容器初始化、配置和管理的对象

    每一个Bean对应Spring容器里的一个Java实例,定义Bean时通常需要指定两个属性。

    在Spring中,被Spring IoC 容器 管理的这些来自于应用主干的这些对象称作 beans 。bean是一个由Spring IoC容器进行实例化、装配和管理的对象。此外,bean只是你应用中许多对象中的一个

spring常用注解(annotation)

http://www.cnblogs.com/xiaoxi/p/5935009.html

  • 常用

      @Component:@Component是所有受Spring 管理组件的通用形式,@Component注解可以放在类的头上,@Component不推荐使用。
      @Controller:@Controller对应表现层的Bean,也就是Action。
          @Controller注解标识UserAction之后,就表示要把UserAction交给Spring容器管理,在Spring容器中会存在一个名字为"userAction"的action。
          这里的UserAction还使用了@Scope注解,spring 默认scope 是单例模式(scope="singleton"),这样只会创建一个Action对象,每次访问都是同一Action对象,数据不安全,struts2 是要求每次次访问都对应不同的Action,scope="prototype" 可以保证当有请求的时候都创建一个Action对象。
      @Service:@Service对应的是业务层Bean
      @Repository:@Repository对应数据访问层Bean
      @Autowired:自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property
          @Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:
          @Autowired @Qualifier("personDaoBean") 存在多个实例配合使用
      @Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。
      @Scope("prototype"):Spring默认产生的bean是单例的,"prototype"表示原型即每次都会new一个新的出来。
      @Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。
    
  • 一般

      @Scope注解 作用域
      @Lazy(true) 表示延迟初始化
      @PostConstruct用于指定初始化方法(用在方法上)
      @PreDestory用于指定销毁方法(用在方法上)
      @DependsOn:定义Bean初始化及销毁时的顺序
      @Primary:自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常
      @PostConstruct 初始化注解
      @PreDestroy 摧毁注解 默认 单例  启动就加载
      @Async异步方法调用
    

sqlSessionTemplate
sqlSessionFactory
sqlSessionTemplateBeanName
sqlSessionFactoryBeanName

SpringMVC

  • 待续…

MyBatis

  • 待续…

SSM简要概述

  • 概述