系列文章目录
第一章 基础知识、数据类型学习
第二章 万年历项目
第三章 代码逻辑训练习题
第四章 方法、数组学习
第五章 图书管理系统项目
第六章 面向对象编程:封装、继承、多态学习
第七章 封装继承多态习题
第八章 常用类、包装类、异常处理机制学习
第九章 集合学习
第十章 IO流、多线程学习
第十一章 仓库管理系统项目
第十二章 员工管理系统、多表查询、反射实现DBHelper学习
第十三章 DML、DDL、数据库对象学习
第十四章 网络编程、各种标签、CSS学习
第十五章 ECMAScript、BOM学习
第十六章 DOM、jQuery学习
第十七章 Servlet、jsp、Cookie、Ajax学习
第十八章 融资管理系统项目
第十九章 MyBatis框架学习
第二十章 逆向工程、Spring框架IOC学习
文章目录
前言
本文会讲述:
逆向工程介绍
Spring框架的介绍与使用
在下攸攸太上,我最近发现一个有可能是外星人的自诩心灵感应者的地球人类雌性,待我仔细辨别一二。
一、逆向工程
逆向工程在本文仅做介绍;
逆向工程,名字其实不太符合实际,因为实现的其实是使用代码编写代码,应该叫代码生成工程 ,但多半人类都这么叫,我一个外星人也没法跟他们争。
逆向工程需要配置文件generatorConfig.xml
1. 逆向工程的使用步骤
在配置文件中
1、设置数据库驱动
2、设置生成的pojo实体类的位置
3、设置生成的Mapper映射文件的位置
4、设置生成的Mapper接口的位置
5、根据数据库表生成pojo类
6、执行调用方法
二、初识Spring框架
1. Spring简介
Spring是一个敢于提出新想法的某个略微伟大的人类提出的,为了解决JavaEE项目臃肿低效的问题,Spring的理想是,以Spring调用三层架构,使三层架构关系更加紧密,代码量更少,可扩展性更佳。
Spring分为三个主要的部分IOC(DI)、AOP、TX,本文主要介绍IOC部分
IOC控制反转:帮助开发者创建对象,交给Spring容器控制
DL依赖注入:当前类依赖的对象,由Spring容器自动注入
AOP面向切面编程:提高代码的扩展性,有点像过滤器,针对方法
TX声明式事务管理:事务管理机制。事务过程不需要开发者编写,只需要声明出哪些方法需要进行事务管理。
2. IOC控制反转
2.1 IOC介绍
Inversion of Control:实现代码之间的解耦(降低耦合度)
控制:对类实例化的控制,指的是创建对象这个事情。
反转:以前由程序员实例化的过程,转交给Spring进行实例化。
可以想象一下:生成类交给逆向工程、生成对象就交给IOC、释放对象交给垃圾处理机制,此代码要我何用??
但Spring的目标就是这样,一切与逻辑无关的代码交给别人,开发者只管实现逻辑
2.2 IOC代码实现
2.2.1 Dept实体类
package entry;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Dept {
private Integer deptno;
private String dname;
private String loc;
}
2.2.2 DeptMapper数据持久层
package mapper;
public class DeptMapper {
public void selectAll(){
System.out.println("I am IronMan");
}
}
2.2.3 DeptService业务层
package service;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import mapper.DeptMapper;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DeptService {
private DeptMapper deptMapper;
public void selectAll(){
deptMapper.selectAll();
}
}
2.2.4 DeptTest控制层
package test;
import entry.Dept;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import service.DeptService;
public class DeptTest {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Dept dept = applicationContext.getBean("dept", Dept.class);
dept.setDeptno(100);
dept.setDname("原来如此");
dept.setLoc("原!来!如!此!");
System.out.println(dept);
Dept deptSet = applicationContext.getBean("deptSet", Dept.class);
System.out.println(deptSet);
DeptService deptService = applicationContext.getBean("deptService", DeptService.class);
deptService.selectAll();
}
}
2.2.5 applicationContext框架核心文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--设置使用dept的无参构造器创建对象-->
<bean id="dept" class="entry.Dept"/>
<!--设置使用dept的有参构造器创建对象-->
<bean id="deptSet" class="entry.Dept">
<constructor-arg name="deptno" value="199"/>
<constructor-arg index="1" value="客服部"/>
<constructor-arg name="loc" value="南京"/>
</bean>
<!--配置deptMAapper对象-->
<bean id="deptMapper" class="com.jr.mapper.DeptMapper"/>
<!--配置DeptService对象-->
<bean id="deptService" class="com.jr.service.DeptService" autowire="byType">
<!--Spring的属性方式自动注入-->
<!--<property name="deptMapper" ref="deptMapper"/>-->
<!--Spring的构造器方式自动注入-->
<!-- <constructor-arg name="deptMapper" ref="deptMapper"/>-->
</beans>
总结
今天讲述了
逆向工程
Spring框架的IOC部分
好着急,有外星人入侵,我先走了