设计模式(Designpattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个
跨域一个资源会发起一个跨域HTTP请求(CrosssiteHTTPrequest),当它请求的一个资源是从一个与它本身提供的第一个资源的不同的域名时。比如说,域名A(http://domaina.example)的某Web应用程序中通过标签引入了域名B(http://domainb.foo)站点的某图片资源(http://domainb.foo/image.jpg),域名A的那Web应用就会导致浏
全局配置文件全局配置文件能够对一些默认配置值进行修改。SpringBoot使用一个application.properties或者application.yaml的文件作为全局配置文件,该文件存放在src/main/resource目录或者类路径的/config,一般会选择resource目录。接下来,将针对这两种全局配置文件进行讲解∶application.properties配置文件使用Spr
约定优于配置BuildAnythingwithSpringBoot:SpringBootisthestartingpointforbuildingallspringbasedapplications.SpringBootisdesignedtogetyouupandrunningasquicklyaspossible,withminimalupfrontconfigurationofSpring.
框架端定义数据源配置和映射语句实体Configurationjava@DatapublicclassConfiguration{privateDataSourcedataSource;/key:statementIdvalue:封装好的mappedStatement对象/Map<String,MappedStatementmappedStatementMap=newHashMap<();}Mapp
框架端1.读取配置⽂件读取完成以后以流的形式存在,我们不能将读取到的配置信息以流的形式存放在内存中,不好操作,可以创建javaBean来存储Configuration:存放数据库基本信息、Map<唯⼀标识,Mapper唯⼀标识:namespace+"."+idMappedStatement:sql语句、statement类型、输⼊参数java类型、输出参数java类型2.解析配置⽂件创建SqlSe
JDBC连接查询数据库sqlpackagecom.zjq.jdbc;importcom.zjq.entity.User;importjava.sql.;importjava.util.ArrayList;importjava.util.List;/通过JDBC连接数据库@authorzjq@date2022/3/14/publicclassJDBCConnect{publicstaticvoidm
JDBC回顾和问题分析!image.png(https://s2.51cto.com/images/blog/202207/19092917_62d608ede5efc64627.png?xossprocess=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type
什么是延迟加载?在开发过程中很多时候我们并不需要总是在加载⽤户信息时就⼀定要加载他的订单信息。此时就是我们所说的延迟加载。举个栗⼦:在⼀对多中,当我们有⼀个⽤户,它有个100个订单在查询⽤户的时候,要不要把关联的订单查出来?在查询订单的时候,要不要把关联的⽤户查出来?回答在查询⽤户时,⽤户下的订单应该是,什么时候⽤,什么时候查询。在查询订单时,订单所属的⽤户信息应该是随着订单⼀起查询出来。延迟加载
⼆级缓存构建在⼀级缓存之上,在收到查询请求时,MyBatis⾸先会查询⼆级缓存,若⼆级缓存未命中,再去查询⼀级缓存,⼀级缓存没有,再查询数据库。⼆级缓存》⼀级缓存》数据库与⼀级缓存不同,⼆级缓存和具体的命名空间绑定,⼀个Mapper中有⼀个Cache,相同Mapper中的MappedStatement共⽤⼀个Cache,⼀级缓存则是和SqlSession绑定。启用二级缓存分为三步⾛:1.开启全局⼆
具体代码如下:java//前三步都相同InputStreamresourceAsStream=Resources.getResourceAsStream("sqlMapConfig.xml");SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(resourceAsStream);SqlSessionsqlS
源码剖析初始化java//获得核心配置文件InputStreamresourceAsStream=Resources.getResourceAsStream("sqlMapConfig.xml");//获得session工厂对象,正是初始化⼯作的开始。SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(res
架构设计!image.png(https://s2.51cto.com/images/blog/202207/16102158_62d220c62f62c12966.png?xossprocess=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3
插件简介⼀般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者⾃⾏拓展。这样的好处是显⽽易⻅的,⼀是增加了框架的灵活性。⼆是开发者可以结合实际需求,对框架进⾏拓展,使其能够更好的⼯作。以MyBatis为例,我们可基于MyBatis插件机制实现分⻚、分表,监控等功能。由于插件和业务⽆关,业务也⽆法感知插件的存在。因此可以⽆感植⼊插件,在⽆形中增强功能。Mybatis插件介绍Mybatis作为⼀
⼀级缓存缓存验证在⼀个sqlSession中,对user表根据username进⾏两次查询,查看他们发出sql语句的情况java@Testpublicvoidtest1()throwsIOException{InputStreamresourceAsStream=Resources.getResourceAsStream("sqlMapConfig.xml");SqlSessionFactorys
Mybatis多表查询一对一查询一对一查询的模型MapperScannerConfigurer用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户一对一查询的需求:查询一个订单,与此同时查询出该订单所属的用户!图片1.png(https://s2.51cto.com/images/blog/202207/14092417_62cf7041cce5497773.png?xosspro
Mybatis的Dao层实现传统开发方式编写UserDao接口javapublicinterfaceUserDao{List<UserfindAll()throwsIOException;}编写UserDaoImpl实现javapublicclassUserDaoImplimplementsUserDao{publicList<UserfindAll()throwsIOException{Inpu
Mybatis简介原始jdbc操作(查询数据)!图片1.png(https://s2.51cto.com/images/blog/202207/12093252_62cccf443557075695.png?xossprocess=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shad
spring事务的传播级别PROPAGATION_REQUIRED:Spring的默认传播级别,如果上下文中存在事务则加入当前事务,如果不存在事务则新建事务执行。PROPAGATION_SUPPORTS:如果上下文中存在事务则加入当前事务,如果没有事务则以非事务方式执行。PROPAGATION_MANDATORY:该传播级别要求上下文中必须存在事务,否则抛出异常。PROPAGATION_REQUI
JdbcTemplate基本使用概述JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的JdbcAPI对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和HibernateTemplate,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。开发步骤①导入springjdbc和s
设计模式(Designpattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。Spring框架中广泛使用了不同类型的设计模式。工厂模式Spring使用工厂模式可以通过BeanFactory或ApplicationContext创建bean对象。两者对比:BeanFactory:延迟注入(使用到某个bean的时候才
BeanFactory接⼝是容器的顶级接⼝,定义了容器的⼀些基础⾏为,负责⽣产和管理Bean的⼀个⼯⼚,具体使⽤它下⾯的⼦接⼝类型,⽐如ApplicationContext;此处我们重点分析FactoryBean。Spring中Bean有两种,⼀种是普通Bean,⼀种是⼯⼚Bean(FactoryBean),FactoryBean可以⽣成某⼀个类型的Bean实例(返回给我们),也就是说我们可以借助
Bean的延迟加载(延迟创建)ApplicationContext容器的默认⾏为是在启动服务器时将所有singletonbean提前进⾏实例化。提前实例化意味着作为初始化过程的⼀部分,ApplicationContext实例会创建并配置所有的singletonbean。比如:xml<beanid="testBean"class="com.zjq.TestBean"/该bean默认的设置为:<bea
Spring原始注解Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率。Spring原始注解主要是替代的配置注解说明对应xml标签@Component使用在类上用于实例化Bean<bean/@Controller使用在web控制层类上用于实例化Bean<bean/@Service使用在service层类上用于实例
Bean标签基本配置用于配置对象交由Spring来创建。默认情况下它调用的是类中的无参构造函数,如果没有无参构造函数则不能创建成功。基本属性:id:Bean实例在Spring容器中的唯一标识class:Bean的全限定名称Bean标签范围配置scope:指对象的作用范围,取值如下:取值范围说明singleton默认值,单例的prototype多例的requestWEB 项目中,Spring 创建一
使用无参构造方法实例化在默认情况下,它会通过反射调⽤⽆参构造函数来创建对象。如果bean中没有默认无参构造函数,将会创建失败xml<beanid="userDao"class="com.zjq.dao.impl.UserDaoImpl"/工厂静态方法实例化工厂的静态方法返回Bean实例在实际开发中,我们使⽤的对象有些时候并不是直接通过构造函数就可以创建出来的,它可能在创建的过程中会做很多额外的操作
Spring程序开发步骤①导入Spring开发的基本包坐标②编写Dao接口和实现类③创建Spring核心配置文件④在Spring配置文件中配置UserDaoImpl⑤使用Spring的API获得Bean实例导入Spring开发的基本包坐标xml<properties<spring.version5.0.5.RELEASE</spring.version</properties<!导入spring的
BeanFactory是Spring框架中IoC容器的顶层接⼝,它只是⽤来定义⼀些基础功能,定义⼀些基础规范,⽽ApplicationContext是它的⼀个⼦接⼝,所以ApplicationContext是具备BeanFactory提供的全部功能的。通常,我们称BeanFactory为SpringIOC的基础容器,ApplicationContext是容器的⾼级接⼝,⽐BeanFactory要拥
什么是AOPAOP:AspectorientedProgramming⾯向切⾯编程AOP是OOP的延续,从OOP说起。OOP三⼤特征:封装、继承和多态OOP是⼀种垂直继承体系。!image.png(https://s2.51cto.com/images/blog/202207/04093117_62c242e52bb1534106.png?xossprocess=image/watermark,s
IOC和AOP不是Spring提出的,在spring之前就已经存在,只不过更偏向于理论化,spring在技术层次把这两个思想做了⾮常好的实现(Java)。什么是IoC?IoCInversionofControl(控制反转/反转控制),注意它是⼀个技术思想,不是⼀个技术实现。描述的事情:Java开发领域对象的创建,管理的问题传统开发⽅式:⽐如类A依赖于类B,往往会在类A中new⼀个B的对象IoC思想
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号