获得徽章 0
- 自学Java第128天
springMVC框架最后一天了
一口气干脆直接把它学完了
-
知识点其实是挺多的,这几天都多
光注解一共就接触了十几个
你说一下子要完全学会那肯定很困难
-
我所打算的是先把这些知识点过一遍
先有一个大致的印象
再去用SSM框架改造下前段时间做的项目
-
如果有哪个知识点忘记了或者很模糊
就翻下笔记做一个集中的回顾
算是这么一个学习计划吧
-
当然计划是不确定的,只是有一个方向
毕竟今天晚上学啥我还没来得及看
最终还是得跟着教程走
-
并且有些知识点因为时间关系被我省略了
比如实体类对象的接受,集合的接受
你说单独再写一篇吧,内容又太少了
并且同一个小的知识点被拆分挺难受的
-
没办法,只能先就这样了
就当是自己想偷懒了吧
-
不过我倒是打算做一个知识点的长篇合集
毕竟关于思维导图都被我落下太久了
这些自己欠下的,全部都得一一重新拾起来
-
哦,对了,学了拦截器和文件上传
还有json,转发重定向的使用
以及Jstl标签的学习
Jstl既然又提到了还是学下吧
反正又不是很难,也没废太多时间展开赞过53 - 自学Java第127天
今天的知识点有点多了,想一下记住太难
注解一下子接触了好多个
-
就像有人问我:你写的这些记得下来么?
我当然记不下来了,我经常会忘记
但正是因为如此,不是更应该记笔记么?
-
好记性还不如烂笔头呢
-
我以后哪块知识点忘记了想不起来
回头翻下自己的博客不就好了
还能将整个知识点做个回顾
-
并且文章有历史记录,搜索也方便
有时还能检查出自己以前犯的一些错误
何乐而不为呢?
-
当然今天的注解虽然非常多
但是最常用最重要的就那么几个
想记下来也不算太难
-
@RequestMapping的使用
它是用在方法上的,并说明请求路径
就是一个类中可以创建很多方法
每一个方法都可以接受一个请求
-
这个我太有印象了,当初学servlet时
因为一个类只能接受一个请求很不方便
所以当时我们创建了一个BaseServlet
再使用反射将方法和请求对应了起来
-
所以我大胆地猜测下该注解底层也是使用反射
当然就不深入研究了,主要也看不懂
并且免得又要被人吐槽一个新手还研究底层
虽然我一直都觉得自己只是在学基础知识点
-
非常重要的还有下面两个注解:
@RequestParam
@PathVariable
-
都是获取请求参数,后者是请求路径中的参数
我们知道POST请求参数并没在请求路径中
那么就可以使用@RequestParam展开等人赞过410 - 自学Java第126天
学了springMVC框架
用去医院看病的例子来理解它的运行流程
-
医院根据病人情况判断是否能接受病人
这里医院就相当于控制器
根据用户请求路径判断是否接受请求
-
医院先要挂号确定病人是哪个科目
对应着控制器要找映射器确认哪个处理器
这个映射器就相当于在医院挂号的作用
只能确定要找谁,但并不能解决问题
-
病人挂号后要根据凭条信息?
找到对应的门诊房间的医生看病
这个找到对应医生的过程就是适配器的事情
适配器要调用对应的处理器,让处理器工作
-
医生给病人看完病后会开一个药方
处理器就相当于医生,处理完具体的业务逻辑后
会返回ModelAndView给适配器
这个ModelAndView就相当于是药方
-
拿到药方后根据医院的指示去药房付钱取药
这个药房就相当于视图解析器
它可以把医生开的药方解析成具体的药
-
最后病人也就拿到能治病的药了
也就相当于用户看到了响应的页面
-
以上就是对springMVC的流程说明
本质上和我们以前学的servlet是一回事
只不过该框架更加地专业,也更强大
-
以前的就相当于是一个小门诊
挂号、看病、取药,都是大夫来完成
现在更加的专业了,都交由对应人员处理
医院就起到了一个调度的作用
-
当然关于代码编写可以进一步优化的
不用像今天编写的这么麻烦
不过时间有限,今天理解下其整个运行流程
明天学习使用注解如何编写,应该简单很多展开赞过评论2 - 自学Java第125天
spring框架学习的最后一天
学了使用spring后的数据库操作以及事务
-
老实说,spring学的确实有些吃力
IOC容器都还好,AOP切面编程就有点懵了
好像学会了,又好像没学会
懵懵懂懂,是学习中最大的障碍之一
-
这个东西,感觉一次性想把它吃透太难了
得跟随项目多实战多使用几次才行
所以我也不会过于纠结这个
-
先把它弄出来,在一步步优化
怕的是自己恐惧,不敢接触,甚至放弃
这就跟做计划一样:
-
想一开始就做一个完美的计划,不太可能
极有可能会一直拖着,永远也不开始做
而开始做了,刚开始做的可能差的要死
但都是一步一步优化过来的
-
就好比今天学的这个事务管理
以前初次学的时候还不是学得脑壳疼
尤其是那个事务的四大隔离级别
-
后来多应用几次,现在用spring再次接触事务时
发现其实还好,虽然也不能说特简单
但对比初次接触事务时确实好理解了不少
-
spring框架学了6天
明天就开始学springMVC啦展开等人赞过58 - 自学Java第124天
学了切面编程的实现步骤
传统的spring配置和Aspectj配置
-
无外乎都是核心三步骤:
确定要增强谁?
确定增强什么功能?
确定需要增强的方法有哪些?
-
切入点也就是需要增强的方法
通知也就是增强什么功能
而如何将它们对应起来就需要配置切面
-
其中最重要的就是这个通知,把它弄懂了
无论是xml还是注解就都很简单了
其有前置通知、后置通知,环绕通知等
这个代表的就是增强功能出现的位置
-
前置通知就是说先运行增强的功能
再运行原有对象本身的方法
以此类比,也很好理解
-
如果是传统的spring配置的话
需要事先确认是什么类型的通知
再实现对应的通知接口
-
使用Aspectj就不需要实现对应接口
只需要在XML中配置说明即可
也比传统的更加地灵活
-
将这几种通知类型搞清楚了
配置起来也就非常简单了
当然注解的话就更加地方便一些了
只需要在对应方法上说明是什么通知即可
-
@Before表示就是前置通知
@AfterReturning也就是后置通知
……等等还有好几个
-
其实XML和注解可以说是对应的
xml会配置的话,使用注解就不要太简单了
而会注解,不一定会xml,可能都忘了
展开等人赞过评论4 - 自学Java第123天
AOP面向切面编程的学习
-
以前也学过很多种面向XX编程
比如面向过程编程,面向对象编程
这两种也就是C语言和Java语言的区别
-
后面Java又学了面向接口编程
今天又学到了面向切面编程
说来说去最终还是得面向搜索引擎编程:
面向百度编程、面向谷歌编程
-
面向开发文档编程
面向老板的口述编程
……等等等等,各种各样的吐槽都有
-
那这个面向切面编程到底是干嘛的呢?
通俗简单小白式的理解就是:
能够对某个对象的某个方法功能增强
同时对这个方法本身没有任何修改
-
大概举一个例子说明下:
比如吃汉堡,里面有生菜、肉片…等等
但是我发现这个生菜不好吃
-
于是我把这个汉堡给切开
将生菜取了出来,加了点老干妈
再将生菜放回去,发现好吃了不少
-
这个过程就是面向切面编程:
汉堡就是一个目标对象
生菜就是对象的方法中需要增强的方法
给它增强了一个什么功能呢?
给它加了点老干妈,更好吃了
-
但是对生菜本身并没有产生修改
这个要这么理解,不能太严谨
什么叫对生菜本身产生修改?
-
比如我把它拿出来用油炸了一下
同时加了佐料,也更好吃了
但是这样对生菜本身也产生修改了
-
当然这个例子可能不太准确
但大致就是这么个意思
我学这块知识点的时候就是这么理解的
不然太抽象了,比较难弄懂
-
说白了就是对方法的增强
继承也可以实现该功能
但是继承会对方法本身产生修改
-
而面向切面编程不仅增强了方法
同时还没对方法本身产生修改
那它是怎么实现的呢?就是利用动态代理
-
对动态代理也进行了全方位的再次回顾
当初学的时候觉得难的不行
现在回头来看确实好理解了不少
-
本质上就是Proxy类中的一个静态方法
newProxyInstance(),其有三个参数
将这些参数完全弄懂了,动态代理也就差不多了
展开等人赞过44 - 自学Java第122天
学了spring注解的使用
不得不说使用起来还是蛮方便的
-
本来以为要花一些时间来学的
结果两个标签一配置基本就完了
当然目前还只是IOC容器的学习
后面还有一个AOP面向切面编程
-
@Component即将对象交给spring管理
就相当于xml中的bean标签的使用
该注释根据三层架构还有进一步的细分
-
@Autowired即根据类型实现依赖注入
也就相当于xml中的class属性
如果有相同类型的,可以根据id实现
加入@Qualifier(id名)进一步说明
-
此外还搭建了一个JavaWeb项目
在项目中使用spring框架
在配置项目环境的时候出了点问题
-
以前都是直接配置Tomcat并使用
这次我想使用maven工程中的Tomcat插件
结果就出问题了,浪费了一些时间才解决
导致学习进度又落下了一点
-
本来要学的spring监听器的使用以及
spring的Junit测试集成都没时间弄了
早睡早起就这点不好,时间不可控
稍稍遇到一点意外,计划就被打破了
-
不过晚上确实又容易犯困,效率更低
并且熬夜确实不好,还不如凌晨起来学呢
不过还好这些都还好说
毕竟马上要学的AOP面向切面编程是重点
展开赞过评论1 - 自学Java第121天
spring之IOC容器的进一步学习
-
关于注释明天就会学,目前还是xml
还是那个道理:我用注释,我希望的是
我在选择用注释而不是我只会用注释
-
前者是我的选择、后者是我没得选
任何事我都希望是我的选择而不是我没得选
学Java也是一样的道理,它是我的选择
-
当然很多事都不可能完全顺着自己的心意来
这只是我的价值观,我会朝着这个方向努力
话不多说,开始今天的学习梳理:
-
spring有一个非常重要的概念叫容器
我们以前创建一个对象都是直接new
现在可以将对象交给spring容器管理
-
需要的时候通过spring工厂获取即可
配置文件中的bean标签就是
用来管理spring容器存放的对象的
-
仅仅关于这个bean标签就涉及到很多知识点
比如Bean属性的依赖注入
通过构造器参数和setXXX方法可以给对象赋值
以及p名称空间,spElL表达式的使用
-
再比如Bean的作用域问题
Bean的生命周期
好吧关于生命周期没时间学了……
-
最后还引入了一个idea插件Lombok
该插件的作用就好比让类成为标准Javabean
这样的话,那一堆getset方法,都不用写了
展开评论点赞 - 自学Java第120天
终于学到spring框架了
在Java基础阶段就经常听说到这个框架
-
毕竟太重要了,无论是SSH、SSM都有它
据说很难,但又经常用,难着难着也就习惯了
-
今天主要就是spring IoC控制反转
spring IoC的使用无外乎还是为了:
代码的可拓展性、保证代码低耦合
-
其实现思路是大同小异的,这里就是:
工厂设计模式+反射+xml配置文件
又用到反射了,上次谁说反射不重要来着
-
我们平时直接new对象,调用方法
这个代码都是写死的,也叫做硬编码
-
反射厉害的地方在于:
类名也好、方法名也罢,亦或是属性名
它们都是以字符串的形式作为参数存在的
-
既然是字符串的形式,也就意味着:
可以将它们封装成一个配置文件
使用的时候读取配置文件即可
-
这样也就实现了代码的低耦合
出现了变化,只需要修改配置文件即可
-
而spring比我们以前普通配置文件更强大
其有一个核心配置文件,大致说下其作用:
-
比如说dao层以前是一个接口对应一个实现类
然后实例化接口时就new其实现类对象
现在在spring配置文件中直接就可以实现
-
这还不是最厉害的,依赖注入更加厉害:
可以将一个对象注入到另一个对象中
这是个什么意思呢?
-
比如说service层的接口userService
要使用dao层接口userDao,同时调用其方法
这样的话我们就需要给userDao初始化赋值
-
如果不给userDao初始化就会出现空指针
这个时候使用依赖注入的话
相当于在spring中实现userService实例化时
就会根据依赖注入信息自动给userDao初始化
-
大致也就是这么个意思
具体内容我整理在我的学习笔记中了
图文搭配看上去也能够更加地清楚一点
展开1点赞