2、Servlet和容器出现(纯Servlet开发) java 为了应对上述需求,就必然推出一种技术来支持动态需求,因此servlet技术诞生。 因而出现了Spring框架。 自 2004 年 1.0 版本发布以来,Spring 框架迅速发展。Spring 2.0 于 2006 年 10 月发布,到那时,Spring的下载量超过了 100 万。 6、 Spring boot 发展史介绍(2019年转载) 1)Spring 框架的历史 起点 2002 年 10 月,Rod Johnson 撰写了一本名为 Expert One-on-One J2EE Spring 框架的快速增长 自 2004 年 1.0 版本发布以来,Spring 框架迅速发展。Spring 2.0 于 2006 年 10 月发布,到那时,Spring的下载量超过了 100 万。 Spring 3.0 具有许多重要特性,如重组模块系统,支持 Spring 表达式语言,基于 Java 的 bean 配置(JavaConfig),支持嵌入式数据库(如 HSQL,H2 和 Derby)
从事java语言开发的人员,spring是一个绕不开的话题。这里我就简述下spring的发展。语句尽量用最通俗,最浅显的话语表述,不完整处还请谅解,请自行查询补全。 (随时可以横插一杠而对方无感知,你说这个有多爽) 可以说正是有了spring,java语言才能被普通开发者广泛接受,而spring也仿佛成了java的代名词。 这个时候spring还需要其他组件的辅助才能更好完成一个完整的项目,最经典的框架就是SSH,spring+Struts2(Struts2和Struts差距很大)+hibernate。经典的三层模型。 Arthas:开源的Java动态追踪工具,基于字节码增强技术,功能非常强大。 这两大公司把开发中的关键组件都实现了。 开发语言的流行壮大依靠组件的发展,而组件的发展类似于人类语言的发展历程。 而其中java标准的制定就像文字的出现,虽然口音不同,但大家还是能根据书面语言相互沟通,而spring可能就是中文里的普通话,能一统java市场。
正是由于java解决方案的大热,才催生了J2EE 说白了,java出现了之后,提供了针对web基于java语言解决方案实现,然后各大厂家发现很好,所以一拥而上,大力发展 然后发展的太快了,为了避免走歪了路 作为一个科技公司,java作为一种跨平台的语言,也是一种网络语言,Java语言也在迅速发展 涉足web是必然的事情 servlet的出现其实比J2EE标准的出台要早,正是servlet才是java涉足web spring struts和Spring的整合,URL都要在struts配置文件中配置 当bean很多和URL对应的请求很多的时候,配置文件无疑会是很庞大的,这个就会使得配置起来很麻烦的费力 Spring 完整内容点击标题进入 1.计算机发展阶段 2.计算机组成-数字逻辑电路 3.操作系统简单介绍 4.计算机启动过程的简单介绍 5.计算机发展个人理解-电路终究是电路 6.计算机语言的发展 7.计算机网络的发展 8.web的发展 9.java web的发展
2. 项目结构分层 在一个工业级的项目里,我们需要对项目进行一个合理的分层。这样有利于开发和后期维护。 引入公共依赖 Spring boot和Spring Cloud建立了对应的依赖包,可以让我们在开发过程中不用过多的担心一些常见项目与Spring boot和Spring Cloud的版本冲突问题。 先在根目录下的pom.xml文件中声明引入的 Spring boot版本号和Spring Cloud版本号: <spring-boot.version>2.2.5.RELEASE</spring-boot.version > <spring-cloud.version>Hoxton.SR3</spring-cloud.version> 创建依赖管理节点,并添加 Spring boot 和Spring Cloud依赖包: <dependencies> </dependencies> 试着添加lombok包(这个包是一个Java中很著名的包,可以省略Java中的get/set等方法的创建)。
1.IoC(控制反转) 1.1 Spring Ioc VS Servlet 在上文:Java外功基础(1)——Spring Web MVC中,很形象地模拟出使用Spring"建造房子"的大概流程。 Service("fileFunc")//设置Bean的名称为fileFunc class FileFunc implements Func { } 1.5.2 通过Bean的名称(ID)获取 在Java 中,Bean的命名规范如下: Bean命名约定 约定是在命名bean时使用标准的Java约定作为实例字段名。 = (UserObject)context.getBean("getUserObject2"); System.out.println(getUserObject2); } } 的五大注解,那么即使它位于扫描路径下,它也不会被注册为Spring容器中的Bean 2.DI(依赖注入) 2.1 概述 依赖注入是一种设计模式,它将对象的依赖关系(即它所需要的其他对象)从外部注入,而不是由对象自己在内部创建
sql2java是我几年年开始写的一个sql2java是一个轻量级数据库(SQL)访问代码(java)生成器。这几年一直在根据工作需要维护升级。 本文接续上一篇博客《sql2java-pagehelper:参照Mybatis-PageHelper实现分页查询》介绍Sql2java-pagehelper提供的分页查询(PageHelper)和动态SQL 启用aspect PageHelper及WhereHelper支持Spring AOP(切面),需要如下在@ComponentScan注解中增加包名gu.sql2java.pagehelper.aspect navigatepageNums int[] 所有导航页号 navigateFirstPage int 导航条上的第一页 navigateLastPage int 导航条上的最后一页 关于sql2java PageHelper的简单使用示例,参见上一篇博客《sql2java-pagehelper:参照Mybatis-PageHelper实现分页查询》
1993 电视机顶盒 1993年2月 FirstPerson试图从时代华纳获得一个电视机顶盒交互系统的一揽子订单。在那时,由于绿色计划不是很成功,随即失去了时代华纳的订单。 1996 1.0版本发布 1996年1月 JDK1.0版本发布 1997 1.1版本发布 1997年2月 JDK1.1版本发布。主要特点是JDBC、RMI、内部类。 该版本通常被称为Java 2版本,是见证重大转变的最流行版本。主要特点是集合框架、JIT编译器、策略工具、Java基础类、Java二维类库和JDBC改进。 2002 1.4版本发布 2002年2月 J2SE1.4版本发布,代号Merlin。主要特点是XML处理、Java打印、支持日志、JDBC 3.0、断言和正则表达式处理。 2004 5.0版本发布 2004年9月 J2SE5.0发布,代号Tiger。主要特点是支持泛型、自动装箱、注释处理、Instrumentation。
但是以前发展出来的复杂的密码法却没有这个保证,必须要 Alice加密 --- Bob 加密 -- Bob 解密 -- Alice 解密才行。即使是最简单的一般替代法也是不符合要求的。 Y Z 密文2 D F A B C E G .... Y Z 现在要加密a, Alice使用密文1 加密为 B,Bob 使用密文2 将 B 加密为 F,Alice 按照密文1 将 f 解密为 F, Bob 收到后再用密文2 解密为 E,却不是最初的字母 a
这个计划的产品就是Java语言的前身:Oak(橡树)。Oak当时在消费品市场上并不算成功,但随着1995年互联网潮流的兴起,Oak 迅速找到了最适合自己发展的市场定位并蜕变成为 Java 语言。 JDK 1.2(Playground - 竞技场) 1998年12月4号,JDK 1.2 发布,这个版本把 Java 技术体系分为三个部分,即 J2SE(面向桌面应用开发)、J2EE(面向企业级开发)、 J2ME(面向移动终端开发)。 JDK 1.4(Merlin - 灰背隼) 2002年2月13日,JDK 1.4 发布,这是 Java 真正走向成熟的一个版本,代表技术包括:正则表达式、异常链、NIO、日志类、XML 解析器和 XSLT (正式开源的版本是 JDK 6) JDK 6(Mustang - 野马) 2006年12月11号,JDK 6 发布,从这个版本开始,J2SE、J2EE、J2ME 的称呼将不在使用,启用 Java SE、
commons-configuration2是apache基金会旗下的开源库,提供了强大的配置文件管理功能,使 Java 应用程序能够从各种来源读取配置数据,可以从以下来源加载配置参数: Properties 总的来说功能要比spring内置的yaml提供更丰富的配置支持, commons-configuration2还很贴心的提供了与Spring集成的实现。 commons-configuration2提供ConfigurationPropertySource类,直接将一个commons-configuration2的Configuration接口实例封装为 Spring的PropertySource实例(yaml文件最终也是被封装为该实例),这样就可以将它无差别的装卸到Spring框架。 commons-configuration2的Configuration实例注入Spring后,在各种Spring场景下可以以与application.yml中定义的配置参数一致的方式进行访问。
使用注解配置spring 开启使用注解代理配置文件
maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>TestDataBaseGroup2< /groupId> <artifactId>TestDataBaseArt2</artifactId> <packaging>war</packaging> <version>1.0 -- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId >mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.5</version -- https://mvnrepository.com/artifact/com.h2database/h2 --> <dependency> <groupId>com.h2database
在进行了数字化学习平台的引入后,接下来的问题就是平台的运营,以及平台如何结合线下的学习助推公司的人才发展和战略支持。首先我们面对的是平台内容的生成问题。 1、 培训课程的录制 我们平时都有很多线下的课程,可以对线下的课程进行现象的视频录制,然后进行编辑剪辑,可以作为线上的课程素材 2、 在线课程的设计 培训人员可以根据课程规划,进行微课的设计,一般微课都是以多媒体的形式呈现
Spring Security OAuth2.0 OAuth2 介绍 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用 Spring Security OAuth2 自定义授权服务器 引入 Maven 依赖 pom.xml <! <artifactId>spring-security-oauth2-core</artifactId> </dependency> <! > <artifactId>spring-security-oauth2-client</artifactId> </dependency> <! Security OAuth2 客户端 Spring Security OAuth2 客户端是用于代理我们对所谓的 OAuth2 授权服务器进行访问的工具。
J2SE:整个Java技术的核心和基础,它是J2ME、J2EE编程的基础。J2EE:Java技术中应用最广泛的部分,J2EE提供了企业应用开发相关的完整解决方案。 J2ME:主要用于控制移动设备和信息家电等有限存储的设备。图片JDK 1.4 百家争鸣2002年,太阳公司发布了JDK历史上最成熟、发展最快的一个JDK版本 - JDK 1.4。 Java语言在企业应用领域大放异彩,涌现出大量基于java语言的开源框架,Struts、WebWork、Hibernate、Spring等。 大量企业应用服务也开始涌现,WebLogic、WebSphere、JBoss等,这些都标志着Java语言进入了飞速发展时期。 图片图片总结以上就是Java发展史的简单总结,而一种语言如果想要长久的发展,就要不断的进行更新,保持行业领先,并且Java使用前景也比较广阔,许多企业都在使用,而如果要学习的同学们,可以选择长期支持版本进行学习
Java领域的调度最早一般认为是Timer,接着由Quratz创造调度器(Scheduler)、任务(Job)和触发器(Trigger)三个核心概念后开始发展,接着在JDK1.5时ScheduledThreadPoolExecutor 出现,逐渐成为主流的单机定时调度方式,Spring的定时任务底层适配了Quratz以及ScheduledThreadPoolExecutor,提供更加方便的使用形式,并没有提供新的调度器实现,再接着发展则是抽离出来任务触发部分 清单2:小根堆示意 针对固定频率任务比如每5分钟一次,如何实现循环呢?答案是当一个任务执行结束前,计算出下次执行时间,然后重新添加到队列,队列则自动根据优先级调整顺序。 上述的调度实际上都是依赖于优先级队列,除此之外还有time wheel算法,如下图所示,原理是把时间按照bucket进行分配,比如下面一轮8个格子,假设一个格子1秒,指针从0开始走,当走到1时,发现其对应两个任务需要分别走2轮和 文章标题: Spring -- 定时任务调度的发展 文章链接: https://mrdear.cn/2019/09/22/framework/spring/Spring--schedule/
:Cannot convert value of type 'java.lang.String' to required type 'com.kailong.pojo.Clazz' for property -- MySQL驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId "); User user1 = ac.getBean(User.class); User user2 = ac.getBean(User.class); System.out.println (user1==user2); } 测试结果: bean的生命周期 具体的生命周期过程 bean对象创建(调用无参构造器) 给bean对象设置属性 bean对象初始化之前操作(由bean的后置处理器负责 getId() { return id; } public void setId(Integer id) { System.out.println("生命周期:2、
@Configuration 用于指定当前类是一个 spring 配置类,当创建容器时会从该类上加载注解。 作用和在 spring 的 xml 配置文件中的:<context:component-scan base-package="com.xx"/>是一样的。 @Bean 该注解只能写在方法上,用于把当前方法的返回值放入spring的IOC容器中。 如果注解的方法有参数的时,spring框架回去容器中查找有没有可以匹配的bean对象,与Autowired注解的作用是一样的 属性:name 指定当前bean的id,默认值是当前方法的名称。 "dataSource"> </constructor-arg> </bean> <bean id="dataSource" class="com.mchange.v<em>2</em>.
:Cannot convert value of type 'java.lang.String' to required type 'com.kailong.pojo.Clazz' for property -- MySQL驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId "); User user1 = ac.getBean(User.class); User user2 = ac.getBean(User.class); System.out.println (user1==user2); } 测试结果: 图片 bean的生命周期 具体的生命周期过程 bean对象创建(调用无参构造器) 给bean对象设置属性 bean对象初始化之前操作(由bean的后置处理器负责 getId() { return id; } public void setId(Integer id) { System.out.println("生命周期:2、
DEFAULT CHARSET=utf8 COLLATE=utf8_bin; /spring_struts2/src/com/b510/app/action/LoginAction.java 1 package /src/com/b510/dao/PersonDAO.java 1 package com.b510.dao; 2 3 import java.util.List; 4 5 import 1 package com.b510.dao.impl; 2 3 import java.sql.Connection; 4 import java.sql.ResultSet; 5 import 8 minIdle=1 /spring_struts2/src/struts.xml 1 <? 1 <%@ page contentType="text/html; charset=GBK" language="<em>java</em>" errorPage="" %> 2 <!