注解:代码里面特殊的标记,使用注解可以完成相关功能 注解写法:@注解名称(属性名.属性值) @Required 用在set方法上,一旦用了这个注解,那么容器在初始化bean的时候必须要进行set,也就是说必须对这个值进行依赖注入. 编写Student.java package com.example.spring; import org.springframework.beans.factory.annotation.Required; public class Student { privat…
在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderService { private OrderDao orderDao; public void setOrderDao(OrderDao orderDao) { this.orderDao = orderDao; } //调用dao的方法 //业务逻辑层,写转账业务 public void accou…
回见Java框架spring Boot学习笔记(十三):aop实例操作,这里介绍注解aop操作 首先编写一个切入点HelloWorld.java package com.example.spring; public class HelloWorld { public void printHello(){ System.out.println("Hello Aop."); } } 编写切面TimeHandler.java package com.example.spring; impor…
注解管理的方式要比xml配置方式要简单很多 只需在配置文件中添加事务注解 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="htt…
事务操作创建service和dao类,完成注入关系 service层叫业务逻辑层 dao层单纯对数据库操作层,在dao层不添加业务 假设现在有一个转账的需求,狗蛋有10000元,建国有20000元,狗蛋向建国转账1000元钱. 编写service层创建业务逻辑,OrderService.java import cn.dao.OrderDao; public class OrderService { private OrderDao orderDao; public void setOrderDa…
使用aop需要在网上下载两个jar包: aopalliance.jar aspectjweaver.jar 为idea添加jar包,快捷键ctrl+shift+alt+s,打开添加jar包的对话框,将刚才下载好的jar添加进去 前置增强实例 编写TimeHandler.java package com.example.spring; public class TimeHandler { public void beforTime() { System.out.println("前置增强:Curr…
配置文件和注解混合使用 创建对象操作使用配置文件方式实现 注入属性的操作使用注解方式实现 编写BookDao.java和OrderDao.java文件 BookDao.java package com.example.spring; public class BookDao { public void book(){ System.out.println("Book Dao."); } } OrderDao.java package com.example.spring; public…
连接池可以大大提高数据库的性能和连接速度,将那些已连接的数据库连接存放在一个连接池里,以后别人要连接数据库的时候,将不会重新建立数据库连接,直接从连接池中取出可用的连接,用户使用完毕后,会释放连接重新放到连接池中. 下载必要jar包mchange-commons-java-0.2.14.jar和c3p0-0.9.2.1.jar 快捷键ctrl+alt+shift+s导入jar包 编写UserDao.java package com.jdbc.c3p0; import org.springfram…
新建一个工程,添加对数据库的支持 下载mysql驱动包 mysql-connector-java-5.1.7-bin.jar,快捷键ctrl+alt+shift+s,添加jar包到工程 编写JdbcTemplateDemo.java package com.jdbc; import org.junit.Test; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowM…
属性注入:创建对象的时候,向类里面的属性设置值. Java属性注入有三种方法: 使用set方法注入 有参数构造注入 使用接口注入 Spring框架里面的属性注入方式 有参数构造属性注入 set方法属性注入 有参数构造属性注入 编写User.java package com.example.spring; public class User { private String name; private Integer age; private String country; //基于构造函数的属性…
当一个 bean 被实例化时,它可能需要执行一些初始化使它转换成可用状态.当bean不再需要,并且从容器中移除时,需要做一些清除工作.为了定义安装和拆卸一个 bean,我们只要声明init-method 和/或 destroy-method 参数.init-method 属性指定一个方法,在实例化 bean 时,立即调用该方法.同样,destroy-method 指定一个方法,只有从容器中移除 bean 之后,才能调用该方法. 编写HelloWorld.java package com.exam…
Spring 框架Bean支持以下五个作用域: 下面介绍两种作用域,singleton和protoype singleton作用域 singleton作用域为默认作用域,在同一个ioc容器内getBean是同一个bean,如果创建一个singleton作用域Bean定义的对象实例,该实例将存储在该Bean的缓存中,那么以后所有针对该 bean的请求和引用都返回缓存对象. 编写HelloWorld.java package com.example.spring; public class Hell…
Spring容器是Spring框架的核心,容器可以创建对象并创建的对象连接在一起,配置和管理他们的整个生命周期.Spring 容器使用依赖注入(DI)来作为管理应用程序的组件,被称为 Spring Beans. Spring提供两种不同类型的容器 ApplicationContext 容器 BeanFactory 容器 ApplicationContext 容器包括 BeanFactory 容器的所有功能,如果资源足够建议使用ApplicationContext,在资源宝贵的移动设备或者基于 a…
使用set方法注入对象属性 编写UserDao.java文件 package com.example.spring; public class UserDao { public void print(){ System.out.println("Dao print."); } } 编写UserService.java文件 package com.example.spring; public class UserService { //1.定义dao类型属性 private UserDa…
Spring是开源.轻量级.一站式框架. Spring核心主要两部分 aop:面向切面编程,扩展功能不是修改源代码实现. ioc:控制反转,把对象的创建交给Spring进行配置,比如一个类,在类里面有方法(不是静态的方法),想要调用类里面的方法,一般的方法是创建对象(new一个),通过new出来的这个对象调用方法.而使用Spring框架时,对象的创建不是通过new出来,而是交给Spring配置创建类对象. IOC和DI的区别 IOC:控制反转,把对象的创建交给Spring进行配置 DI:依赖注入…
子 bean 的定义继承父定义的配置数据.子定义可以根据需要重写一些值,或者添加其他值. 编写HelloWorld.java package com.example.spring; public class HelloWorld { private String message1; private String message2; public void setMessage1(String message){ this.message1 = message; } public void set…
如果我们需要在Spring容器完成Bean的实例化,配置和其他的初始化前后后添加一些自己的逻辑处理. 编写InitHelloWorld.java package com.example.spring; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; public class InitHelloWorld imple…
功能 日志功能,通过log4j可以看到程序运行过程的详细信息. 使用 导入log4j的jar包 复制log4j的配置文件,复制到src下面   3.设置日志级别 info:看到基本信息 debug:看到更详细的信息…
为什么要引入aop? 比如如下情景: 在父类的方法名称发送了变化,在子类调用的方法也需要变化,当工程规模越来越大的时候,维护起来相当不方便,于是就引入了横向切面aop. aop的相关概念: 连接点:类里面可以被增强的方法叫连接点 切入点:在类里面可以有很多的方法被增强,比如实际操作中,只是增强了某几个方法,这些实际被增强的方法叫切入点 通知/增强:增强的逻辑,称为增强,比如扩展了一个日志功能,这个日志功能称为增强 前置通知:在方法之前执行 后置通知:在方法之后执行 异常通知:在方法出现异常 最终…
目录 go微服务框架kratos学习笔记十(熔断器) 什么是熔断 熔断器逻辑 kratos Breaker kratos 熔断逻辑 kratos熔断器使用说明 bladmaster client breaker 配置说明 test go微服务框架kratos学习笔记十(熔断器) 什么是熔断 假设存在这样的调用链: 服务A -> 服务B -> 服务C 如果服C crash 或者一些原因导致不可用,服B可能会阻塞很多线程/协程,如果短时间内大量积压,导致系统资源耗尽服B也变的不可用,同时连带服A一…
python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法 同一台机器同时安装 python2.7 和 python3.4不会冲突.安装在不同目录,然后把python34目录下的python.exe和pythonw.exe重命名为python3.exe和pythonw3.exe环境变量配置:D:\Python27\;D:\Python27\Scripts;D:\Python34\;D:\Python34\Scripts; 在cmd命令行里面输入p…
十九. 模板 ● 模板的基本概念 模板(template) 函数模板:可以用来创建一个通用功能的函数,以支持多种不同形参,进一步简化重载函数的函数体设计. 语法: template <<模板的类型形参表>> <函数声明> 类模板:代表一簇类, 用户可以为类定义一种模式, 使得类中的某些数据成员, 某些成员函数的参数, 返回值或局部变量能取任意类型(包括系统预定义的和用户自定义的) 语法: template <<模板的类型形参表>> <类声明…
File IO概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了.那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把这些数据读出来继续使用呢?其实要把数据持久化存储,就需要把内存中的数据存储到内存以外的其他持久化设备(硬盘.光盘.U盘等)上. 当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作.当把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作.因此我们把这种输入和…
IO概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了.那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把这些数据读出来继续使用呢?其实要把数据持久化存储,就需要把内存中的数据存储到内存以外的其他持久化设备(硬盘.光盘.U盘等)上. 当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作.当把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作.因此我们把这种输入和输出动作称…
前述 ​ 这段时间在工作中碰到一个事务相关的问题.先说下这个问题的场景,我们是一个商城项目,正在开发优惠券模块,现在有一个需求是需要批量领取优惠券,而且在领券时,其中一张领取失败不能影响其他符合要求的券的领取.由于之前在开发时,在领券这一块一直做的是单张领取,所以在做批量的时候很简单的做了个循环,然后封装成一个批量领券的方法中.伪代码如下: ​ @Service @Transactional(rollbackFor = Exception.class) @Slf4j public class C…
Java中的访问控制修饰符 一:Java修饰符的种类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class HelloWorld { // ... } private boolean myFlag; static final double weeks = 9.5; protected static final int BOXWIDTH = 42; public static void main(String[] a…
在实战中学习Spring,本系列的最终目的是完成一个实现用户注册登录功能的项目. 预想的基本流程如下: 1.用户网站注册,填写用户名.密码.email.手机号信息,后台存入数据库后返回ok.(学习IOC,mybatis,SpringMVC的基础知识,表单数据验证,文件上传等) 2.服务器异步发送邮件给注册用户.(学习消息队列) 3.用户登录.(学习缓存.Spring Security) 4.其他. 边学习边总结,不定时更新.项目环境为Intellij + Spring4. 一.准备工作. 1.m…
在实战中学习Spring,本系列的最终目的是完成一个实现用户注册登录功能的项目. 预想的基本流程如下: 1.用户网站注册,填写用户名.密码.email.手机号信息,后台存入数据库后返回ok.(学习IOC,mybatis,SpringMVC的基础知识,表单数据验证,文件上传等) 2.服务器异步发送邮件给注册用户.(学习消息队列) 3.用户登录.(学习缓存.Spring Security) 4.其他. 边学习边总结,不定时更新.项目环境为Intellij + Spring4. 一.准备工作. 1.m…
标签库概要: 一.C标签库介绍 1.1.<c:> 核心标签库  JSTL 核心标签库(C标签)标签共有13个,功能上分为4类:1.表达式控制标签:out.set.remove.catch2.流程控制标签:if.choose.when.otherwise3.循环标签:forEach.forTokens4.URL操作标签:import.url.redirect 二.表达式控制标签 2.1.out标签 <c:out value="" escapeXml="&quo…
1.跨域指的是什么? URL 说明 是否允许通信 http://www.a.com/a.jshttp://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.jshttp://www.a.com/script/b.js 同一域名下不同文件夹 允许 http://www.a.com:8000/a.jshttp://www.a.com/b.js 同一域名,不同端口 不允许 http://www.a.com/a.jshttps://www.a.com/b.js…