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.博客
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)
常用
@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简要概述
- 概述


