1.Java学习路线
2.springquartz定时任务中注入的源码bean的方法不执行?
3.java学习路线
Java学习路线
根据个人实际的经历,结合多种书籍,源码特别整理出了下面的源码java学习路线:一、Java SE部分
1、源码java基础:基础语法;面向对象(重点);集合框架(重点);常见类库API;
2、源码java界面编程:AWT;事件机制;Swing;
3、源码悬赏推广源码java高级知识:Annotation;IO和NIO、源码AIO;多线程、源码线程池;阻塞、源码非阻塞、源码异步网络通信;反射、源码动态代理;
二、源码JDBC编程
4、源码SQL基础:基础SQL语句;基本查询;多表查询;子查询;结果集的源码交、并、源码差运算;
5、JDBC基础:常见数据库用法;JDBC操作常见数据库;RowSet与离线结果集;数据库连接池;事务管理、批处理;
6、JDBC进阶:存储过程、函数;触发器;理解JCBC的不足;掌握ORM工具优势和设计;
三、DHTML编程
7、HTML基础:基本HTML标签;常见表单标签;DIV+CSS布局;
8、JavaScript知识:javascript基本语法;javascript基本对象特征;Json语法;深刻理解javascript的动态特征;
9、Dom和事件机制:DOM操作、编程;常见浏览器事件机制;掌握用户交互技巧;
四、XML编程
、XML基础:XML基础规则;DTD和SCheme;XML和样式单;
、XML进阶:DOM、SAX和JAXP;dom4j、JDOM等工具;XQuery和XQJ;基于XML的oa手机端源码数据交换;
、Web Service:JAX_WS2、SAAJ规范;WSDL和SOAP协议;CXF框架、拦截器;CXF整合Spring;
五、Java Web编程
、Web编程基础:Tomcat服务器;Jsp语法、EL、内置对象;Servlet API;Servlet 3.0注解;Listener和Filter;
、Web编程进阶:自定义标签库;MVC和DAO、Servlet、标签的作用;JSTL、DisplayTag等常见标签库用法;
、Web编程原理:请求/响应、架构;Http协议;深刻理解Jsp运行原理;掌握Web容器底层的线程池、socket通信、调用Servlet的命令模式;
六、Ajax编程:
、Ajax编程:XML HttpRequest和异步请求;发送请求和处理响应;常见Ajax库(Prototype、Jquery、ExtJs、DWR)用法;结合Http协议、异步请求深入研究ajax库的设计;
七、Android开发
、Android基础:Android开发调试环境;Android应用结构;界面组件与界面编程;资源管理;四大组件;
、Android中级:文件IO和SQLite;图形、图像与动画;音频、视频的录制与播放;传感器编程;GPS应用;
、Android高级:网络编程与Web Service;OpenGL_ES 3D开发;整合Google服务;使用NDK开发;java和c相互调试;
八、轻量级Java EE
、Struts2:MVC与struts体系;Action和Result;国际化和标签库;文件上传、devexpress16.2源码下载;类型转换和输入检验;拦截器与插件开发;
、Hibernate:ORM与持久化映射;关系映射、继承映射;延迟加载、性能调优;HQL查询、条件查询、SQL查询;二级缓存和查询缓存;
、Spring:IoC与Bean配置、管理;Bean生命周期;SP、EL;AOP与事务权限控制;S2SH整合开发;Spring整合Jpa;
九、经典Java EE
、JSF<选学>:MVC与JSF设计理念;托管Bean与导航模型;JSF流程与事件机制;JSF标签库;类型转换与输入检验;
、EJB及相关技术:JNPI与RMI;会话Bean及其生命周期;IoC与EJB拦截器;JMS与MDB;会话Bean与Web Service;
、JPA:ORM框架与JPA规范;JPA注解与常用API;JTA事务与事务管理;JPQL查询;EJB、JPA整合;
十、Java 拓展、进阶:
、Java EE实践与架构:Ant+Ivy或Maven;SVN、CVS;深刻理解种以上设计模式;掌握各种Java EE架构及各自优势;
、Workflow:Workflow规范及功能;JBPM等workflow框架;多次重构、反复思考;大型项目经验;
、Java EE进阶:掌握各MVC框架运行原理、能开发类似框架;掌握Spring、HiveMind、AspectJ等框架原理、能开发类似工具;掌握Hibernate、iBatis等框架原理,能开发类似工具;深入研究EJB机制、大致了解应用服务器的实现;
希望对您有所帮助!~
springquartz定时任务中注入的jq ajax封装源码bean的方法不执行?
在日常开发中,定时任务是提高系统效率和自动化处理的关键工具。Spring的Schedule框架为开发者提供了便捷的手段来管理这些定时任务,但有时候开发者可能会遇到注入的bean在Spring中并未执行的问题。本篇文章旨在深入探讨这一现象及其解决方法。
首先,让我们回顾一下Spring和Quartz框架的基础知识。Spring Schedule依赖于Quartz来执行定时任务,这使得开发者能够利用Quartz的丰富功能来构建复杂的定时任务。为了更好地理解问题,我们将定时任务服务从现有项目中抽离出来,以便进行深入的源码分析。
在实际分析之前,重要的是理解Quartz的默认配置及其可配置性。例如,Quartz提供了自定义线程组数量的能力,以适应不同的业务需求。通过修改`quart.properties`文件,开发者可以根据项目的需求调整初始化参数,从而满足不同场景下的任务执行需求。
接下来,我们通过一个简单的示例来逐步解析问题。通常,开发者会使用注解或XML配置文件来定义定时任务,但在本文中,我们采用将任务配置抽离至单独的XML文件的方式,以便于更清晰地分析代码流程。
在本例中,我们定义了一个名为`DemoTask`的任务类,用于执行等待执行的早起打卡源码下载操作。同时,我们创建了一个测试类`MyTask`,用于验证从XML文件中配置的代码是否能够正常执行。通过简单的流程分析,我们能够观察到任务的执行流程,从`MethodInvokingJobDetailFactoryBean`的初始化到`CronTriggerFactoryBean`的配置,再到`SchedulerFactoryBean`的调度执行。
`MethodInvokingJobDetailFactoryBean`负责管理待执行的任务,通过配置必要的信息并调用`afterPropertiesSet()`方法来完成初始化。这一过程确保了Spring管理的类能够在加载配置信息后自动执行初始化逻辑。`CronTriggerFactoryBean`则负责定义任务的执行计划,通过`afterPropertiesSet()`和`getObject()`方法进行任务执行内容和计划的管理。
`SchedulerFactoryBean`作为调度器的管理器,负责从全局层面调度任务执行,包括线程池、任务存储方式、数据源等关键配置。调度器的初始化流程包括创建线程池、初始化任务存储方式、配置数据源以及其他相关组件,最终通过`afterPropertiesSet()`方法完成所有配置的整合。
在启动定时任务时,我们通常使用硬编码方式调用`schedulerFactoryBean.start()`来启动线程服务。这一过程中,核心代码包括`QuartzScheduler.start()`、`QuartzSchedulerThread.run()`等方法,它们通过协作机制确保任务的正确执行和调度。
综上所述,Spring中注入的bean未能执行的问题可能源于配置不当、代码逻辑错误或初始化流程中存在遗漏。通过深入分析上述关键组件和流程,开发者可以定位问题所在,并采取相应的措施解决。在实际开发中,确保Quartz与Spring的正确集成、合理配置任务执行参数、以及对任务执行流程的仔细审查是避免此类问题的关键。
java学习路线
目前在职Java开发,我给出的Java学习路线是:JavaSE--数据库--jdbc----前端基础--Javaweb--Spring--Mybatis--Maven--Springboot---Reids--Springcloud--Linux--Git。
JavaSE:java基础,既然是基础,那肯定是最重要的,所以学习的时候也是需要重点学习的地方。
数据库:为什么要学数据库呢,因为我们的web数据需要持久化到磁盘上统一管理,而数据库无疑就是最好工具。目前主流的关系型数据库有mysql 和oracle。我建议先学mysql。为什么呢mysql相比Oracle难度要低,而在国内应用场景又是最多的。
学会了mysql可以开发出一个完整的产品了,再学oracle都可以的。
前端基础:既然是做一个网站,那肯定不能是后台的数据,这样用户也是没办法看的,所以需要学习前端知识,把数据展示到页面上,而对于后台人员来说,学习阶段只需要学习前端基础就可以了。Html 、js、css、jquery就可以了。当然到离开后期你也可以学学专门为后端人员定制的前端框架,比如,layui,easyui。如果还觉得不够可以学学前端专用框架。比如vue element ,但是大前提是把自己的后台学到位了再学其他的。
Javaweb:jsp、servlet。为什么用了html还要学jsp呢。因为jsp和Java是无缝连接的。学了javaweb以后就可以自己做一个项目出来了,比如你想做一个个人网站。你可以给你们学校做一个教务管理系统都是可以的。
Spring:后台框架。为什么要用框架呢,可以快速开发,并且降低了耦合。Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用,Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问。
Mybatis:持久层框架,当然持久层还有一个框架应用也很广的,那就是hibernate,一个是半自动的一个是全自动,而在国内应用最多的是mybatis,在国外用得最多的是hibernate,具体原因,大家可以百度查查。持久层框架有什么好处呢?如果你用原始的jdbc做开发,那你得自己来管理每一个连接,连接的打开和关闭,都是有开发人员来操作的,而且jdbc也没有实体的映射,需要我们写代码把值set进去,而用了框架这些都交给框架去做了。
Maven:mavne是一个工具,他的核心是pom.xml,这个配置文件,pom的全英文是project object model,意思是对象管理模型,也就是把项目也看成一个对象来操作了。给我们带来最直观的好处就是依赖问题,以前我们需要自己下载jar包,在构建到项目中,但是有了maven只需要写jar的依赖就可以自动给我们下载了。
Springboot:springboot是基于maven的,springboot最明显的特点就是开箱即用,也就是构建了一个springboot项目 直接就可以做开发了,而不需要像我们自己配一个springmvc的框架一样的需要去配置大量的xml文件。让我们开发人员更着重于业务上的开发。
Redis:前面的mysql,oracle是关系型数据库,什么是关系型呢,就是一对一 一对多 多对多。有表与表之间有这些关系在,所以就叫关系型数据库,而redis就是非关系型数据库,也就是他存储数据之间是没有这些关系,他是以键值对 list set方式存储的。
对了,顺便在这里说一下,我目前是在职Java开发,如果你现在也在学习Java,了解Java,渴望成为一名合格的Java开发工程师,在入门学习Java的过程当中缺乏基础入门的视频教程,你都可以申请加入我的Java新手学习交流qun:前面输入是:前面输入是:七九八,中间输入是:八四四,最后输入是:六二零。里面聚集了很多正在学习Java技术的初学者,qun文件里面还有我做Java技术这段时间整理的一些学习手册,面试题,开发工具,PDF文档书籍教程,需要的话都可以来获取下载。
Springcloud:微服务框架,什么是微服务呢,就是把我们传统的单体服务拆分开了,就是将一个单体架构的应用按业务划分为一个个的独立运行的程序即服务,微服务架构其实就是一个分布式架构,具体的就不详细的讲了,因为这里面牵涉到的解决方案是灵活的。
Linux:linux的应用通常都是在底层,那我们上层开发人员为什么也要学它呢,其实我们的主要应用是在服务器上,也就是服务器的系统。当然系统也有Windows的,而Windows的和Linux的区别就是Windows服务器有问题是微软来解决,很方便:别人替你做,但也不方便:你遇到问题都得让他官方来解决漏洞,但是Linux就不一样,他是完全开源的,有问题自己马上就可以解决,只要开发人员能力够硬去改内核都是可以的。
Git:版本管理工具,与之对应的还有svn,最大的区别在于git是分布式系统,而svn不是分布式的,因为你们进企业以后都是协同开发 也就是一个项目小组里面几个小伙伴一起开发一个项目,所以就要有一个代码的管理工具来保证你们做的不同模块可以整合,所以说git也是需要学的。