理解框架不易,最佳的方式是:1. 从简单总结中体会精髓;2. 在执行的环境中感受运行魅力,加深精髓理解;3. 对理论的全面研究,加上实验,自己总结。通过这三驾马车的同时奋进,一定能够高效的完成学习任务。
先是总结体会:
一、Spring的Bean自动装配机制:
1.基于XML机制装配; 2.基于Annotation装配;3.自动装配;
首先,明确一下Spring中重要的配置文件:***.xml,它是在Spring中最常用的方式,作用是对Bean的属性进行详细的定义。简单地说,就是Spring容器通过读取这个配置文件(***.xml),从而知道容器需要管理哪些Bean。而管理这些Bean的目的,就是代替非Spring方式的耦合式的实例化Bean的方式。
1. 基于XML机制的装配方式,就是在Spring的配置文件中,即在***.XML文件中,把这些需要使用到的Bean,准确地写出来。包括:Bean的id、class、property、constructor。其中property,可以是普通的数据类型,也可以是bean(是bean可以在Spring的持久化开发中找到例子);
怎么使用呢?使用ClassPathXmlApplicationContext()对象获取一个ApplicationContext对象,然后通过ApplicationContext对象的getBean()方法获得到对应的Bean,即可;
2. 基于Annotation装配方式,对需要由Spring来管理的Bean使用相应的注释进行标注:@Component、@Repository、@Controller、@Service。需要依赖的对象,用响应的注释进行标注:@Resource、@Autowired。如此之后,在***.XML文件中仍然需要把Bean的配置信息写出来,但是不需要有依赖注入的信息,即不需要准确地写出来。依赖关系由注释来完成;
怎么使用呢?同上;
3. 自动装配方式,这种方式不需要使用注释,也不需要再XML文件中准确地写出相应Bean的依赖关系。要求只有两个:第一,在有依赖其他对象的地方,需要对该成员变量有相应的setter方法;第二,在XML文件的Bean信息的那一条,加上autowire="byName"属性。这个属性表示Bean由Spring的IOC容器根据Name去查找。其中byName是可变的;
怎么使用呢?同上;
二、Spring的持久化原理:
核心类:
数据源:org.springframework.jdbc.datasource.DriverManagerDataSource;
JDBC模板:org.springframework.jdbc.core.JdbcTemplate;
tips:类型的完整路径很长,刚开始我也很反感。但是这样是不行的,因为反感多了就会陌生,一旦陌生的多了,就会导致未知,恐惧源自于未知。所以习惯就好。数据源简称:dataSource,JDBC模板简称JdbcTemplate。
dataSource是配置数据源环境的,即四个基本点:驱动类、数据库连接url、登录数据用户名、登录数据库密码。这四个点需要通过Spring的IOC机制注入到dataSource中(即dataSource依赖于这四点)。
JdbcTemplate是负责执行SQL语句的。它提供了几个常用的方法,execute()、update()、query()。JdbcTemplate需要注入dataSource(即JdbcTemplate依赖dataSource)。
怎么使用呢?在Spring的***.XML文件中体现上述依赖注入关系,准备好实体类,通过JdbcTemplate类的对象执行SQL语句即可以在数据库中执行增删改查以及建表删表的操作了。
三、MyBatis的使用原理:
核心文件:
MyBatis配置文件:mybatis-config.xml
映射文件:mapper***.xml
核心类:
会话工厂:org.apache.ibatis.session.SqlSessionFactory;
会话对象:org.apache.ibatis.session.SqlSession;
会话工厂构造器:org.apache.ibatis.session.SqlSessionFactoryBuilder;
mybatis-config.xml:配置environment环境,配置mapper环境;
mapper***.xml:编写获取客户信息的SQL语句;
SqlSessionFactory:是单个数据库映射关系经过编译后的内存镜像,主要的作用是创建SqlSession;
SqlSession:是应用程序与持久层之间执行交互操作的一个单线程对象,主要作用是执行持久化操作,封装了JDBC连接,可以执行SQL操作的方法;
操作步骤:
1. 使用Resource类,获取mybatis配置文件的InputStream对象;
2. 使用SqlSessionFactoryBuild对象的build方法,根据mybatis配置文件的InputStream对象,获取SqlSessionFactory;
3. 使用SqlSessionFactory的openSession方法获取SqlSession对象;
4. 使用SqlSession对象的selectOne方法执行映射文件中定义的SQL语句;
后续预告:
Spring的全部代码;
MyBatis的全部代码;
Spring与Mybatis的integration(集成);
Spring与MyBatis的integration(集成)全部代码;
SpringMVC框架;
SpringMVC框架全部代码;