Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

Spring AOP IOC源码笔记 PDF 下载


分享到:
时间:2020-05-09 14:39来源:http://www.java1234.com 作者:小锋  侵权举报
Spring AOP IOC源码笔记 PDF 下载
失效链接处理
Spring AOP IOC源码笔记 PDF 下载

本站整理下载:
 
相关截图:
 
主要内容:

Spring⼊⻔和IOC介绍
1. Spring介绍
Spring诞⽣:
创建Spring的⽬的就是⽤来替代更加重量级的的企业级Java技术
简化Java的开发
基于POJO轻量级和最⼩侵⼊式开发
通过依赖注⼊和⾯向接⼝实现松耦合 
基于切⾯和惯例进⾏声明式编程
通过切⾯和模板减少样板式代码
1.1侵⼊式概念
侵⼊式:对于EJB、Struts2等⼀些传统的框架,通常是要实现特定的接⼝,继承特定的类才能增强功能
改变了java类的结构
⾮侵⼊式:对于Hibernate、Spring等框架,对现有的类结构没有影响,就能够增强JavaBean的功能
1.2 松耦合概念
前⾯我们在写程序的时候,都是⾯向接⼝编程,通过DaoFactroy等⽅法来实现松耦合
代码如下:
private CategoryDao categoryDao =
DaoFactory.getInstance().createDao("zhongfucheng.dao.impl.CategoryDAOImpl",
CategoryDao.class);
private BookDao bookDao =
DaoFactory.getInstance().createDao("zhongfucheng.dao.impl.BookDaoImpl",
BookDao.class);
private UserDao userDao =
DaoFactory.getInstance().createDao("zhongfucheng.dao.impl.UserDaoImpl",
UserDao.class);
private OrderDao orderDao =
DaoFactory.getInstance().createDao("zhongfucheng.dao.impl.OrderDaoImpl",
OrderDao.class);
DAO层和Service层通过DaoFactory来实现松耦合,如果Serivce层直接 new DaoBook() ,那么DAO和
Service就紧耦合了【Service层依赖紧紧依赖于Dao】。
⽽Spring给我们更加合适的⽅法来实现松耦合,并且更加灵活、功能更加强⼤!---->IOC控制反转(这
个后⾯会说)
1.3 切⾯编程
切⾯编程也就是AOP编程,其实我们在之前也接触过...动态代理就是⼀种切⾯编程了...
当时我们使⽤动态代理+注解的⽅式给Service层的⽅法添加权限.
 @Override
 @permission("添加分类")
 /*添加分类*/
 public void addCategory(Category category) {
 categoryDao.addCategory(category);
 }
 /*查找分类*/
 @Override
 public void findCategory(String id) {
 categoryDao.findCategory(id);
 }
 @Override
 @permission("查找分类")
Controller调⽤Service的时候,Service返回的是⼀个代理对象,代理对象得到Controller想要调⽤的⽅
法,通过反射来看看该⽅法上有没有注解
如果有注解的话,那么就判断该⽤户是否有权限来调⽤ 此⽅法,如果没有权限,就抛出异常给
Controller,Controller接收到异常,就可以提示⽤户没有权限了。
AOP编程可以简单理解成:在执⾏某些代码前,执⾏另外的代码(Struts2的拦截器也是⾯向切⾯编程
【在执⾏Action业务⽅法之前执⾏拦截器】)
Spring也为我们提供更好地⽅式来实现⾯向切⾯编程!
2. 引出Spring
我们试着回顾⼀下没学Spring的时候,是怎么开发Web项⽬的
1. 实体类--->class User{ }
2. daoclass--> UserDao{ .. 访问db}
3. service--->class UserService{ UserDao userDao = new UserDao();}
4. actionclass UserAction{UserService userService = new UserService();}
⽤户访问:Tomcat->servlet->service->dao
我们来思考⼏个问题:
①:对象创建创建能否写死?
②:对象创建细节
对象数量
action 多个 【维护成员变量】
service ⼀个 【不需要维护公共变量】
dao ⼀个 【不需要维护公共变量】
 /*查看分类*/
 public List<Category> getAllCategory() {
 return categoryDao.getAllCategory();
 }
 /*添加图书*/
 @Override
 public void addBook(Book book) {
 bookDao.addBook(book);
 }
创建时间
action 访问时候创建
service 启动时候创建
dao 启动时候创建
③:对象的依赖关系
action 依赖 service
service依赖 dao
对于第⼀个问题和第三个问题,我们可以通过DaoFactory解决掉(虽然不是⽐较好的解决⽅法)
对于第⼆个问题,我们要控制对象的数量和创建时间就有点麻烦了....
⽽Spring框架通过IOC就很好地可以解决上⾯的问题....
 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐