一、Spring基础

一、Spring基础

    1、概述

        Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架。

        Spring的核心有两部分:IOC(控制反转);AOP(面向切面编程)

    2、Spring组成

        (1)、Spring Core

            核心容器提供Spring框架的基本功能,是框架的最基础部分,Spring以Bean的方式组织和管理Java应用中的各个组件及其关系。Spring使用BeanFactory来产生和管理Bean,它是工厂模式的实现。BeanFactory使用控制反转(IOC)模式将应用的配置和依赖性规范与实际的应用程序代码分开。BeanFactory使用依赖注入(DI)的方式提供给组件依赖。

        (2)、Spring Context

            Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,如JNDI、EJB、电子邮件、国际化、校验和调度功能。

        (3)、Spring AOP

            Spring AOP模块直接将面向切面的编程功能集成到了Spring框架中,可以有效的防止代码上功能的耦合,这个模块是在Spring应用中实现切面编程的基础。  

        (4)、Spring DAO

            DAO模块主要目的是将持久层相关问题与一般的的业务规则和工作流隔离开来,Spring的Dao模块对传统的JDBC进行了抽象,还提供了一种比编程性更好的声明性事务管理方法。Spring中的DAO提供一致的方式访问数据库,不管采用何种持久化技术,Spring都提供一直的编程模型。Spring还对不同的持久层技术提供一致的DAO方式的异常层次结构。

        (5)、Spring ORM

            Spring与所有的主要的ORM映射框架都集成的很好,包括Hibernate、JDO实现、TopLink和IBatis等。Spring为所有的这些框架提供了模板之类的辅助类进行“对象/关系”映射,达成了一致的编程风格。

        (6)、Spring Web

            Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。Web层使用Web层框架,可选的,可以是Spring自己的MVC框架,或者提供的Web框架,如Struts、Webwork、tapestry和jsf。

        (7)、Spring Web MVC

            MVC(Model-View-Controller)框架是一个全功能的构建Web应用程序的MVC实现。通过策略接口,MVC框架变成为高度可配置的。Spring的MVC框架提供清晰的角色划分:控制器、验证器、命令对象、表单对象和模型对象、分发器、处理器映射和视图解析器。Spring支持多种视图技术。

    3、定时任务

    @Scheduled(cron = "0 0/1 * * * ? ")

        (1)、参数cron

            该参数接收一个cron表达式,cron表达式是一个字符串,字符串以5或6个空格隔开,分开共6或7个域,每一个域代表一个含义。

            cron表达式语法:[秒] [分] [小时] [日] [月] [周] [年]

            注:[年]不是必须的域,可以省略[年],则一共6个域。

序号

说明

是否必填

值范围

允许的通配符

1

0-59

, - * /

2

0-59

, - * /

3

0-23

, - * /

4

1-31

, - * ? / L W

5

1-12

/ JAN-DEC  , - * /

6

1-7

or SUN-SAT  , - * ? / L #

7

1970-2099

, - * /

        (2)、 通配符说明

            ①、*

                表示所有值。 例如:在分的字段上设置 *,表示每一分钟都会触发。

            ②、?

                表示不指定值。使用的场景为不需要关心当前设置这个字段的值。例如:要在每月的10号触发一个操作,但不关心是周几,所以需要周位置的那个字段设置为”?” 具体设置为 0 0 0 10 * ?

            ③、-

                表示区间。例如 在小时上设置 “10-12”,表示 10,11,12点都会触发。

            ④、, 

                表示指定多个值,例如在周字段上设置 “MON,WED,FRI” 表示周一,周三和周五触发

            ⑤、/

                用于递增触发。如在秒上面设置”5/15” 表示从5秒开始,每增15秒触发(5,20,35,50)。 在月字段上设置’1/3’所示每月1号开始,每隔三天触发一次。

            ⑥、L

                表示最后的意思。在日字段设置上,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年[leap]),在周字段上表示星期六,相当于”7”或”SAT”。如果在”L”前加上数字,则表示该数据的最后一个。例如在周字段上设置”6L”这样的格式,则表示“本月最后一个星期五”。

            ⑦、W

                表示离指定日期的最近那个工作日(周一至周五)。例如在日字段上置”15W”,表示离每月15号最近的那个工作日触发。如果15号正好是周六,则找最近的周五(14号)触发,如果15号是周未,则找最近的下周一(16号)触发。如果15号正好在工作日(周一至周五),则就在该天触发。如果指定格式为 “1W”,它则表示每月1号往后最近的工作日触发。如果1号正是周六,则将在3号下周一触发。(注,”W”前只能设置具体的数字,不允许区间”-“)。

            ⑧、#

                序号(表示每月的第几个周几),例如在周字段上设置”6#3”表示在每月的第三个周六.注意如果指定”#5”,正好第五周没有周六,则不会触发该配置(用在母亲节和父亲节再合适不过了) ;小提示:’L’和 ‘W’可以一组合使用。如果在日字段上设置”LW”,则表示在本月的最后一个工作日触发;周字段的设置,若使用英文字母是不区分大小写的,即MON与mon相同。

        (3)、示例

            ①、每隔5秒执行一次:*/5 * * * * ?

            ②、每隔1分钟执行一次:0 */1 * * * ?

            ③、每天23点执行一次:0 0 23 * * ?

            ④、每天凌晨1点执行一次:0 0 1 * * ?

            ⑤、每月1号凌晨1点执行一次:0 0 1 1 * ?

            ⑥、每月最后一天23点执行一次:0 0 23 L * ?

            ⑦、每周星期六凌晨1点实行一次:0 0 1 ? * L

            ⑧、在26分、29分、33分执行一次:0 26,29,33 * * * ?

            ⑨、 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值