Mybatis的默认事务管理器是JDBC,连接池是Pooled
创建一个基础工程
1.导包
2.编写配置文件
3.编写实体类
4.编写实体类对应的Mapper接口和Mapper.xml文件
或者:
1.编写实体类
2.编写核心配置文件
3.编写Mapper接口
4.编写Mapper.xml
5.注册Mapper接口--否则出现绑定异常
6.测试
Spring优点
1、Spring是一个开源免费的框架 , 容器 .
2、Spring是一个轻量级的框架 , 非侵入式的 .
3、控制反转 IoC , 面向切面 Aop
4、对事物的支持 , 对框架的支持
.......
一句话概括:
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)。
IOC原型:
以前所有东西都是由程序去进行控制创建 , 而现在是由我们自行控制创建对象 , 把主动权
交给了调用者 . 程序不用去管怎么创建,怎么实现了 . 它只负责提供一个接口 .
这种思想 , 从本质上解决了问题 , 我们程序员不再去管理对象的创建了 , 更多的去关注业务的实现 . 耦合性大大降低 . 这也就是IOC的原型 !
个人认为所谓控制反转就是:获得依赖对象的方式反转了。
比如狂神说的那两个对比的噬菌体
(之前主动权在程序猿,程序控制调用什么---业务层
现在主动权在用户,用户选择调用什么--用户层)
控制反转
控制:谁来控制对象的创建,传统应用程序的对象是由程序本身控制创建的(new),
使用Spring之后,对象是由Spring来创建的
反转:程序本身不创建对象,而变为被动的接收对象
依赖注入 : 就是利用set方法来进行注入的.
IOC是一种编程思想,由主动的编程变成被动的接收
OK , 到了现在 , 我们彻底不用再程序中去改动了 ,
要实现不同的操作 , 只需要在xml配置文件中进行修改 ,
所谓的IoC,一句话搞定 : 对象由Spring 来创建 , 管理 , 装配 !
spring的三个核心:
所有的类都需要装配到bean里边
所有的bean都需要通过容器去取
容器里取出的bean拿出来就是一个对象,再调用这个对象即可
//获取ApplicationContext,拿到Spring容器
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
//容器在手,天下我有,需要什么,就直接get什么
UserServiceImpl userServiceImpl = (UserServiceImpl) context.getBean("UserServiceImpl");
userServiceImpl.getUser();
在配置文件加载的时候,容器(spring中的bean)中管理的对象就已经初始化了
配置中:
id:bean的唯一标识符,也就是相当于我们学的对象名
class:bean对象所对应的全限定名:包名+类型
name:也是别名,而且name可同时取多个别名,而alias只能一对一起别名
Hello hello =new Hello()
类型 变量名=new 类型()
id=变量名
class=new 的对象
property相当于给对象中的属性设置一个值;
autowire自动装配Bean
byName:需要保证所有bean的id唯一,并且这个bean需要和自动注入的属性的set方法的值一致
byType:需要保证所有bean的class唯一,和自己对象属性类型相同的bean
Spring的注解开发
@Component三个衍生注解
为了更好的进行分层,Spring可以使用其它三个注解,功能一样,目前使用哪一个功能都一样。
@Controller:web层
@Service:service层
@Repository:dao层
这四个注解功能都是一样的,都代表将某个类注册到Spring中,装配Bean.
写上这些注解,就相当于将这个类交给Spring管理装配了!
自动装配注解:
@Autowired
Bean的作用域:
@Scope(singleton) 单例模式,默认的,Spring会采用单例模式创建这个对象。
关闭工厂 ,所有的对象都会销毁。
@Scope(prototype) 原型模式,多例模式。关闭工厂 ,所有的对象不会销毁。
内部的垃圾回收机制会回收
XML与注解比较
XML可以适用任何场景 ,结构清晰,维护方便
注解不是自己提供的类使用不了,开发简单方便
xml与注解整合开发 :推荐最佳实践
xml管理Bean
注解完成属性注入
xml配置注释的快捷键 CTRL + SHIFT + /”
查看方法的实现类,用快捷键 ctrl+h
在 service 调用 dao 里面的方法
UserDao userDao=new UserDaoImpl();
接口=new他的实现类的对象,这过程叫多态。
IOC 操作 Bean 管理(概念)
1 、什么是 Bean 管理
(0)Bean 管理指的是两个操作
(1)Spring 创建对象
(2)Spirng 注入属性
2、Bean 管理操作有两种方式
(1)基于 xml 配置文件方式实现
(2)基于注解方式实现
context.getBean("userService",UserService.class)后面输入.var即可自动补全
UserService userService = context.getBean("userService", UserService.class);
代理模式:
静态代理
动态代理
AOP的底层机制就是动态代理
AOP中最核心的思想:我们在不改变原来的代码的情况下,实现了对原有功能的增强
JDK的动态代理需要了解两个类
核心 : InvocationHandler 和 Proxy
InvocationHandler:调用处理程序
Proxy:调用该方法的代理实例
AOP的理解:
Spring的Aop就是将公共的业务 (日志 , 安全等) 和领域业务结合起来 , 当执行领域业务时 , 将会把公共业务加进来 . 实现公共业务的重复利用 . 领域业务更纯粹 , 程序猿专注领域业务 , 其本质还是动态代理 .
使用spring实现Aop
第一种方式:使用spring的API接口【主要SpringAPI接口实现】
第二种方式:自定义类实现AOP【主要是切面定义】
第三种方式:使用注解