重新整理springboot笔记:

 

重新整理springboot笔记:

 

第一节:springboot属性配置文件详解:

    

    a、自定义属性: 

            配置文件:application.yml

            配置属性:属性 foo,list集合post,list对象posts

                    重新整理springboot笔记:

            取值:

                    1、ConfigurationProperties 属性前缀com.didispace。里面的属性名字应该跟yml文件里面的属性一直。

                        重新整理springboot笔记:

                    2、@Value("${属性名}") 注解来加载对应的配置属性。不需要写getset方法。可以赋值。

                        重新整理springboot笔记:

        b、参数之间的引用:

                1、通过${属性}来进行引用

                重新整理springboot笔记:

 

        c、使用随机数:

                重新整理springboot笔记:

        d、通过命令行设置属性值:

                1、springboot程序运行命令:java -jar xxx.jar --server.port=8888 

        e、多环境配置:

                1.配置文件格式满足:application-{profile}.properties.

                2.在application.properties文件中通过spring.profiles.active 的属性值来这是profile值。

                运行命令: java - jar xxx.jar --spring.profile.active=test;

 

第二节:springboot中 Web应用的统一异常处理:

 

        a、springboot针对于处理中的发生的异常会有一个默认的映射:/error,当处理抛出异常之后,会转到改请求进行处理,并且改请求会有一个全局错误的页面来展示异常内容。

        b、自定义全局异常错误处理页面:

                1、创建全局异常类,通过@ControllerAdvice定义统一的异常类,@ExceptionHandler用来定义函数针对的异常类型,

                     重新整理springboot笔记:

                2、请求Controller异常 :

                     重新整理springboot笔记:

        c、json全局异常错误处理:

                1、创建全局异常类,与b不同之处多加了一个@ResponseBody标签。

                    重新整理springboot笔记:

                    重新整理springboot笔记:

 

第三节:springboot中 拓展XML请求和响应的支持:

 

            a、主要依赖于springmvc中的一个消息转换器(Message Converter)。接口 HttpMessageConverter。抽象了消息转化器对类型的判断,对读写的判断与操作。

                Jackson是Springmvc默认的一套实现的消息转换器的实现。

                 实现方式:

                    1、添加pom.xml依赖:

                        重新整理springboot笔记:

                    2、定义对象跟XML的对应关系 ,localName 如果不配置的话 默认已属性名为准。

                        重新整理springboot笔记:

                    3、controller请求:

                        重新整理springboot笔记:

                    

第四节:springboot中 使用Redis数据库:

 

            a、简单使用redis存储字符串,获取字符串。

                1.配置Redis引入依赖  低版本的springboot引入spring-boot-starter-redis,高版本的springboot引入下面的pom。

                    重新整理springboot笔记:

                    重新整理springboot笔记:

                2.配置application.yml,这个redis前配置的是spring。

                    重新整理springboot笔记:

                3.使用RedisTemplate进行数据操作。opsForValue的set方法如果不设置过期时间的话 默认是永远存在。

                    重新整理springboot笔记:

            b、使用redis存储对象。

                    1.创建对象

                    重新整理springboot笔记:

                    2.实现对象的序列化

                    重新整理springboot笔记:

                    3.针对User的RedisTemplate实例

                    重新整理springboot笔记:

                    4.test

                    重新整理springboot笔记:

 

 

第五节:springboot多数据源配置与使用:

            

        a.主要配置一个项目连接多个数据库的配置。

            1.在mysql数据库中建立两个数据库,world,world2。

                重新整理springboot笔记:

            2.配置文件配置:url 或者jdbc-url 配置 因为不同版本的springboot这个配置是不一样的 。

                重新整理springboot笔记:

            3.创建Spring配置文件:

                    注解:1、@Quelifier注解:当spring容器里面有多个同类型的bean的时候选择名字为"primaryDataSource"。避免因为多个同类型的bean而报错。

                              2、@Primary注解:优先配置该bean。

                重新整理springboot笔记:

            4.创建spring jdbcTemplate类的配置 :

                重新整理springboot笔记:

            5.测试test:

                重新整理springboot笔记:

 

 

第六节:springboot使用@Scheduled创建定时任务:

    

            a.遇到一定的业务场景,需要定时发送短信,邮件之类的操作,或者检查和监控标志,参数等。

                1、springBoot主类加入@EnableScheduling注解,启用定时任务配置:

                        重新整理springboot笔记:

                 2、创建一个task任务的 类,定时输出时间:

                        注解:

      •   2.1、fixedRate = 5000 : 上次开始执行时间之后5s在执行。

      •   2.2、fixedDelay =  5000 : 上次执行完毕时间点之后5秒在执行。

      •   2.3、(initialDelay = 1000, fixedRate = 5000) : 第一次执行延迟1秒后执行,之后按fixedRate的规则每5秒执行一次。

      •   2.4、cron="*/5 *****" :通过cron表达式定义规则。

                        重新整理springboot笔记:

 

第七节:springboot使用@Async实现异步调用:

        a、简单实现异步调用

            1、在方法上添加@Async注解:

                重新整理springboot笔记:

            2、需要在springboot主程序中文件里面配置@EnableAsync:

                重新整理springboot笔记:

        b、想要获取完整的子线程的输出需要在改造一下方法。

            1、返回值换成Future。

                重新整理springboot笔记:

 

            2、测试类。

                重新整理springboot笔记:

 

第七节:springboot日志管理:

 

    a、日志格式大致形式:时间日期 日志级别 进程ID 分隔符 线程名 Logger名 日志内容

          1、控制台输出[不会影响到日志]设置日志级别的两种方法:

                1.1、运行命令java -jar map.jar --debug。

                1.2、在application.yml配置debug=true。

          2、文件输出。Springboot默认配置只会输出到控制台不会输出到文件中。

                1、需要在application.yml文件中配置logging.file或logging.path属性。日志文件会在10Mb大小的时候被截断。

                2、级别控制 logging.level.*=LEVEL :LEVEL可以是:TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF。

          3、分类输出。

                重新整理springboot笔记:

 

第七节:springboot使用AOP统一处理web请求日志:

 

    a、AOP 面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的是一种技术。

         1、准备工作 pom.xml

            重新整理springboot笔记:

         2、不需要添加@EnableAspectJAutoProxy注解。

                实现aop切面的主要几大要素:

                    [email protected]注解将一个java类定义为切面类。

                    [email protected]定义一个切入点,可以是一个规则表达式

                    [email protected]在切入点开始处切入内容

                    [email protected]在切入点结尾处切入内容

                    [email protected]在切入点return内容之后切入内容

                    [email protected]在切入点前后切入内容,并自己控制何时切入自身的内容。

                    [email protected]用来处理当切入内容部分抛出异常之后的处理逻辑。

        3、aop切面优先级

                @Order(i)注解来标识切面的优先级,i的值越小,优先级越高。

 

第七节:springboot中的缓存支持注解配置与EhCache使用:

 

    a、提升性能使用缓存。

        使用步骤:

            1、配置文件添加配置:application.yml:开启sql打印,开始调试阶段。

                重新整理springboot笔记:

            2、在pom.xml配置中引入cache依赖,添加如下内容:

                重新整理springboot笔记:

            3、Spring Boot主类中增加 @EnableCaching注解开启缓存功能。

                重新整理springboot笔记:

            4、在类上面添加@CacheConfig注解,在方法上添加@Cacheable注解。

                    注解:

                        4.1:@CacheConfig:主要用于配置该类中会用到的一些公用的缓存配置。cacheNames = “users”给缓存添加key。Cacheable自己配置缓存级的名字定义。

                        4.2:@Cacheable:配置了findByName函数的返回值将被加入缓存,同事在查询时候,会先从缓存中获取,若不存在才会发起对数据库的访问。

                                        两个等同的参数:value,cacheNames:制定缓存存储的集合名字。

                                        key:缓存对象存储在map集合中的key值。非必须,缺省按照函数的所有参数的组合作为key值。

                                        condition:缓存对象的条件,满足什么条件开始缓存。

                                        unless:另一个缓存条件参数,为必须,函数被调用之后才被判断,他可以通过result进行判断。

                                        keyGenerator: 用于指定key生成器,非必须。若需要指定一个自定义key生成器。我们需要实现KeyGenerator接口,并使用该参数来指定,他与key是互斥的。

                        4.3:@CachePut:配置用于函数上,根据参数定义条件才缓存,与@Cacheable不同的是,他每次都会调用函数,所以主要是用于数据新增和修改操作上,参数

                                                    与@Cacheable类似。

                        4.4:@CacheEvict:配置于函数上,通常用于在删除方法上,使用从缓存中移除响应的数据,除了同@Cacheable一样的参数外,还有两个参数:

                                         allEntries:非必须,默认为false,当为true时,会移除所有数据。

                                         beforeInvocation:非必须:默认false,会在调用方法之后移除数据,true时,会在调用方法之前移除数据。

                      重新整理springboot笔记: