
SSM
文章平均质量分 93
记录一些有关SSM的知识
十八岁讨厌编程
没事就喜欢画思维导图
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[MyBatisPlus]乐观锁、代码生成器
所以要想实现乐观锁,首先第一步应该是拿到表中的version,然后拿version当条件在将version加1更新回到数据库表中,所以我们在查询的时候,需要对其进行查询。大概分析完乐观锁的实现步骤以后,我们来模拟一种加锁的情况,看看能不能实现多个人修改同一个数据的时候,只能有一个人修改成功。所以我们会发现,做任何模块的开发,对于这段代码,基本上都是对红色部分的调整,所以我们把去掉红色内容的东西称之为。你会发现,我们传递的是1,MP会将1进行加1,然后,更新回到数据库表中。......原创 2022-07-29 17:00:00 · 1144 阅读 · 9 评论 -
[MyBatisPlus]DML编程控制(多记录操作、逻辑删除、更新操作)
很简单删除掉,但是一个个删除的话还是比较慢和费事的,所以一般会给用户一个批量操作,也就是前面有一个复选框,用户一次可以勾选多个也可以进行全选,然后删一次就可以将购物车清空,这个就需要用到。如果只删除员工不删除合同表数据,那么合同的员工编号对应的员工信息不存在,那么就会出现垃圾数据,就会出现无主合同,根本不知道有张业绩这个人的存在。可想而知,MP的逻辑删除会将所有的查询都添加一个未被删除的条件,也就是已经被删除的数据是不应该被查询出来的。执行成功后,数据库表中的数据就会按照指定的id进行删除。......原创 2022-07-29 11:27:12 · 1101 阅读 · 2 评论 -
[MyBatisPlus]id生成策略控制
主键类型设置为varchar,长度要大于32,因为UUID生成的主键为32位,如果长度小的话就会导致插入失败。不同的业务采用的ID生成方式应该是不一样的,那么在MP中都提供了哪些主键生成策略,以及我们该如何进行选择?因为之前生成主键ID的值比较长,会把MySQL的自动增长的值变的很大,所以需要将其调整为目前最新的id值。综上所述,每一种主键策略都有自己的优缺点,根据自己项目业务的实际情况来选择使用才是最明智的选择。**注意**这种生成策略,不需要手动设置ID,如果手动设置ID,则会使用自己设置的值。....原创 2022-07-28 21:46:47 · 1637 阅读 · 0 评论 -
[MyBatisPlus]映射匹配兼容性
Unknowncolumn‘多出来的字段名称’in‘fieldlist’具体的解决方案用到的还是注解,它有一个属性叫exist,设置该字段是否在数据库表中存在,如果设置为false则不存在,生成sql语句查询的时候,就不会再查询该字段了。......原创 2022-07-28 21:23:07 · 1321 阅读 · 0 评论 -
[MyBatisPlus]DQL编程控制②(查询投影、查询条件)
前面我们只使用了lt()和gt(),除了这两个方法外,MP还封装了很多条件对应的方法,这一节我们重点把MP提供的查询条件方法进行学习下。目前我们在查询数据的时候,什么都没有做默认就是查询表中所有字段的内容,我们所说的查询投影即不查询所有字段,只查询出指定内容的数据。需求对年龄进行范围查询,使用lt()、le()、gt()、ge()、between()进行范围查询。需求聚合函数查询,完成count、max、min、avg、sum的使用。需求分组查询,完成groupby的查询使用。......原创 2022-07-28 16:54:36 · 702 阅读 · 5 评论 -
[MyBatisPlus]DQL编程控制①(条件查询)
学完了三种构建查询对象的方式,每一种都有自己的特点,所以用哪一种都行,刚才都是一个条件,那如果有多个条件该如何构建呢?第一种方式介绍完后,有个小问题就是在写条件的时候,容易出错,比如age写错,就会导致查询不成功。此时我们再次编写条件的时候,就不会存在写错名称的情况,但是qw后面多了一层lambda()调用。condition为boolean类型,返回true,则添加条件,返回false则不添加条件。logback.xml的配置内容,不是我们学习的重点,如果有兴趣可以自行百度查询。......原创 2022-07-28 12:33:20 · 637 阅读 · 7 评论 -
[MyBatisPlus]标准数据层开发(CRUD、分页)
我们更想要的是主键自增,应该是5才对,这个是我们后面要学习的主键ID生成策略,这块的这个问题,我们暂时先放放。就是我们接下来要学习的Lombok。Lombok只是简化模型类的编写,我们之前的方法也能用,比如有人会问我如果只想要有name和password的构造函数,该如何编写?IPage是一个接口,我们需要找到它的实现类来构建它,具体的实现类,可以进入到IPage类中按ctrl+h,会找到其有一个实现类为。Lombok的注解还有很多,上面标红的三个是比较常用的,其他的大家后期用到了,再去补充学习。.....原创 2022-07-28 00:25:32 · 649 阅读 · 3 评论 -
[MyBatisPlus]MyBatisPlus简介、入门案例
MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率通过刚才的案例,相信大家能够体会简化开发和提高效率这两个方面的优点。https如果你去访问试图去访问https//mybatis.plus,那么可能会失败。因为这个域名是别人捐赠的。无侵入只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作强大的CRUD操作httpshttpshttpshttps。......原创 2022-07-27 18:12:48 · 591 阅读 · 4 评论 -
[Maven进阶]分模块开发与设计
将抽取后的项目进行运行,测试之前的增删改查功能依然能够使用。所以对于项目的拆分,大致会有如下几个步骤(1)创建Maven模块(2)书写模块代码分模块开发需要先针对模块功能进行设计,再进行编码。不会先将工程开发完毕,然后进行拆分。拆分方式可以按照功能拆也可以按照模块拆。(3)通过maven指令安装模块到本地仓库(install指令)团队内部开发需要发布模块功能到团队内部可共享的仓库中(私服),私服我们后面会讲解。httpshttpshttpshttpshttpshttps。......原创 2022-07-24 10:21:59 · 673 阅读 · 0 评论 -
[SpringMVC]拦截器②(拦截器参数、拦截器链配置)
在这个方法中可以通过返回值来决定是否要进行放行,我们可以把业务逻辑放在该方法中,如果满足业务则返回true放行,不满足则返回false拦截。modelAndView如果处理器执行完成具有返回结果,可以读取到对应数据与页面信息,并进行调整。目前,我们在项目中只添加了一个拦截器,如果有多个,该如何配置?使用request对象可以获取请求数据中的内容,如获取请求头的。原始方法运行后运行,如果原始方法被拦截,则不执行。拦截器最后执行的方法,无论原始方法是否执行。这三个方法中,最常用的是。......原创 2022-07-23 23:39:33 · 766 阅读 · 1 评论 -
[SpringMVC]拦截器①(概述、入门案例)
讲解拦截器的概念之前,我们先看一张图(1)浏览器发送一个请求会先到Tomcat的web服务器(2)Tomcat服务器接收到请求以后,会去判断请求的是静态资源还是动态资源(3)如果是静态资源,会直接到Tomcat的项目部署目录下去直接访问(4)如果是动态资源,就需要交给项目的后台代码进行处理(5)在找到具体的方法之前,我们可以去配置过滤器(可以配置多个),按照顺序进行执行(6)然后进入到到中央处理器(SpringMVC中的内容),SpringMVC会根据配置的规则进行拦截?归属不同。......原创 2022-07-23 23:21:53 · 668 阅读 · 0 评论 -
[SSM]前后台协议联调②
需求:完成图书信息的修改功能找到页面中的按钮,该按钮绑定了在method的方法中发送异步请求根据ID查询图书信息根据后台返回的结果,判断是否查询成功,如果查询成功打开修改面板回显数据,如果失败提示错误信息修改完成后找到修改面板的按钮,该按钮绑定了在method的方法中发送异步请求提交修改数据根据后台返回的结果,判断是否修改成功。如果成功提示错误信息,关闭修改面板,重新查询数据,如果失败提示错误信息scope.row代表的是当前行的行数据,也就是说,scope.row就是选中行对应的json数据,如下:修改原创 2022-07-23 22:29:51 · 630 阅读 · 0 评论 -
[SSM]前后台协议联调①
3)在BookServiceImpl中,增删改方法根据DAO的返回值来决定返回true/false。按钮会发现之前的数据还存在,这个时候就需要在新增的时候将表单内容清空。需求新增成功是关闭面板,重新查询数据,那么新增失败以后该如何处理?1.在handlerAdd方法中根据后台返回的数据来进行不同的处理。在方法中发送请求和数据,响应成功后将新增面板关闭并重新查询数据。(2)后台返回操作结果,将Dao层的增删改方法返回值从。2.如果后台返回的是成功,则提示成功信息,并关闭面板。方法发送异步请求并携带数据。...原创 2022-07-23 22:26:12 · 637 阅读 · 0 评论 -
[SSM]异常处理
名称类型类注解位置Rest风格开发的控制器增强类定义上方作用为Rest风格开发的控制器类做增强说明此注解自带@ResponseBody注解与@Component注解,具备对应的功能我们可以单独创建一个文件夹,专门放我们的自定义异常;//自定义异常处理器,用于封装异常信息,对异常进行分类publicclassSystemExceptionextendsRuntimeException{让自定义异常类继承code属性的原因是为了更好的区分异常是来自哪个业务的上面为了使。......原创 2022-07-22 22:49:23 · 2392 阅读 · 0 评论 -
[SSM]统一结果封装
SSM整合以及功能模块开发完成后,接下来,我们在上述案例的基础上分析下有哪些问题需要我们去解决下。首先第一个问题是在Controller层增删改返回给前端的是boolean类型数据在Controller层查询单个返回给前端的是对象在Controller层查询所有返回给前端的是集合对象目前我们就已经有三种数据类型返回给前端,如果随着业务的增长,我们需要返回的数据类型会越来越多。创建结果模型类,封装数据到data属性中封装操作结果到code属性中封装特殊消息到message(msg)属性中}......原创 2022-07-22 19:41:13 · 708 阅读 · 1 评论 -
[SSM]SSM整合③(接口测试)
到这里我们后台的功能算是做完了。在开发中其实我们有两个环节要停下来做测试: - 在开发完业务层接口后,使用Junit去做业务层接口的测试工作 - 在开发完表现层接口后,使用Postman去做表现层接口的测试工作接下来我们详细讲解这两次测试工作。......原创 2022-07-22 01:32:53 · 948 阅读 · 5 评论 -
[SSM]SSM整合②(功能模块的开发)
功能模块[与具体的业务模块有关]创建数据库表根据数据库表创建对应的模型类通过Dao层完成数据库表的增删改查(接口+自动代理)编写Service层[Service接口+实现类]@Service整合Junit对业务层进行单元测试@RunWith@Test编写Controller层接收请求@RequestMapping@GetMapping@PostMapping@PutMapping@DeleteMappinghttpshttpshttpshttps。.........原创 2022-07-21 23:39:49 · 980 阅读 · 0 评论 -
[SSM]SSM整合①(整合配置)
1)创建工程创建一个Maven的web工程pom.xml添加SSM需要的依赖jar包编写Web项目的入口配置类,实现重写以下方法返回Spring的配置类->需要配置类返回SpringMVC的配置类->需要配置类设置SpringMVC请求拦截路径规则设置过滤器,解决POST请求中文乱码问题(2)SSM整合[重点是各个配置的编写]标识该类为配置类@Configuration扫描Service所在的包@ComponentScanhttpshttpshttps。............原创 2022-07-21 22:18:41 · 1125 阅读 · 2 评论 -
[SpringMVC]基于RESTful页面数据交互案例
需求一:图片列表查询,从后台返回数据,将数据展示在页面上需求二:新增图片,将新增图书的数据传递到后台,并在控制台打印说明:此次案例的重点是在SpringMVC中如何使用RESTful实现前后台交互,所以本案例并没有和数据库进行交互,所有数据使用数据来完成开发。我们的基本步骤:搭建项目导入jar包编写Controller类,提供两个方法,一个用来做列表查询,一个用来做新增在方法上使用RESTful进行路径设置完成请求、参数的接收和结果的响应使用PostMan进行测试将前端页面拷贝到项目中页面发送aja原创 2022-07-20 23:08:55 · 928 阅读 · 2 评论 -
[SpringMVC]REST入门案例与优化
RESTful入门案例,我们需要学习的内容如下(1)设定Http请求动作(动词)method)(2)设定请求参数(路径变量){id}Integerid){}名称类型类注解位置基于SpringMVC的RESTful开发控制器类定义上方作用设置当前控制器类为RESTful风格,等同于@Controller与@ResponseBody两个注解组合功能。......原创 2022-07-20 12:36:21 · 631 阅读 · 2 评论 -
[SpringMVC]什么是REST风格?
REST(RepresentationalStateTransfer),表现形式状态转换,它是一种软件架构风格传统风格资源描述形式httpid=1查询id为1的用户信息http保存用户信息REST风格描述形式httphttp传统方式一般是一个请求url对应一种操作,这样做不仅麻烦,也不安全,因为会程序的人读取了你的请求url地址,就大概知道该url实现的是一个什么样的操作。查看REST风格的描述,你会发现请求地址变的简单了,并且光看请求URL并不是很能猜出来该URL的具体功能,,......原创 2022-07-20 10:27:26 · 558 阅读 · 0 评论 -
[SpringMVC]请求与响应④(响应)
名称类型方法\类注解位置SpringMVC控制器方法定义上方和控制类上作用设置当前控制器返回值作为响应体,写在类上,该类的所有方法都有该注解功能相关属性pattern指定日期时间格式字符串该注解可以写在类上或者方法上写在类上就是该类下的所有方法都有@ReponseBody功能当方法上有@ReponseBody注解后方法的返回值为字符串,会将其作为文本内容直接响应给前端方法的返回值为对象,会将对象转换成JSON响应给前端对象转Json数据(POJO->json)......原创 2022-07-19 14:36:46 · 589 阅读 · 7 评论 -
[SpringMVC]请求与响应③(JSON数据传输参数、日期类型参数传递、内部实现原理)
前面我们处理过简单数据类型、POJO数据类型、数组和集合数据类型以及JSON数据类型,接下来我们还得处理一种开发中比较常见的一种数据类型,在SpringMVC的配置类中开启SpringMVC的注解支持,这里面就包含了将JSON转换成对象的功能。JSON普通数组的数据就已经传递完成,下面针对JSON对象数据和JSON对象数组的数据该如何传递呢?转换成日期类型的时候失败了,原因是SpringMVC默认支持的字符串转日期的格式为。这个时候,我们就想如果把日期参数的格式改成其他的,SpringMVC还能处理么?..原创 2022-07-19 13:26:24 · 2494 阅读 · 1 评论 -
[SpringMVC]请求与响应②(五种类型参数传递)
错误的原因是SpringMVC将List看做是一个POJO对象来处理,将其创建一个对象并准备把前端的数据封装到对象中,但是List是一个接口无法创建对象,所以报错。简单数据类型一般处理的是参数个数比较少的请求,如果参数比较多,那么后台接收参数的时候就比较复杂,这个时候我们可以考虑使用POJO数据类型。举个简单的例子,如果前端需要获取用户的爱好,爱好绝大多数情况下都是多个,如何发送请求数据和接收数据呢?这些参数如何发送,后台改如何接收?如果POJO对象中嵌套了其他的POJO类,如。......原创 2022-07-19 10:46:59 · 1073 阅读 · 1 评论 -
[SpringMVC]请求与响应①(映射路径、请求参数)
请求路径设置好后,只要确保页面发送请求地址和后台Controller类中配置的路径一致,就可以接收到前端的请求,接收到请求后,如何接收页面传递的参数?GETPOST针对于不同的请求前端如何发送,后端如何接收?.........原创 2022-07-18 23:51:19 · 1443 阅读 · 8 评论 -
[SpringMVC]bean加载控制
名称类型类注解位置类定义上方作用设置spring配置类扫描路径,用于加载使用注解格式定义的bean相关属性排除扫描路径中加载的bean,需要指定类别(type)和具体项(classes)加载指定的bean,需要指定类别(type)和具体项(classes)httpshttpshttpshttpshttpshttpshttpshttps。............原创 2022-07-18 15:21:43 · 895 阅读 · 4 评论 -
SpringMVC初识
SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装。不难看出MVC对应的就是三层架构我们先来回顾下现在web程序是如何做的,咱们现在web程序大都基于三层架构来实现。浏览器发送一个请求给后端服务器,后端服务器现在是使用Servlet来接收请求和数据如果所有的处理都交给Servlet来处理的话,所有的东西都耦合在一起,对后期的维护和扩展极为不利将后端服务器Servlet拆分成三层,分别是web、service和daocontroller、和。......原创 2022-07-18 13:03:58 · 1338 阅读 · 4 评论 -
[Spring Framework]Spring事务角色与事务属性
思考出现异常事务会自动回滚,这个是我们之前就已经知道的,noRollbackFor是设定对于指定的异常不回滚,这个好理解rollbackFor是指定回滚异常,对于异常事务不应该都回滚么,为什么还要指定?及其子类进行事务回顾,其他的异常类型是不会回滚的,对应IOException不符合上述条件所以不回滚。介绍完上述属性后,还有最后一个事务的传播行为,为了讲解该属性的设置,我们需要完成下面的案例。运行后,就能实现我们想要的结果,不管转账是否成功,都会记录日志。这个结果和我们想要的不一样,什么原因?......原创 2022-07-17 23:19:18 · 642 阅读 · 16 评论 -
[Spring Framework]Spring事务管理与@Transactional注解源码解析
事务作用在数据层保障一系列的数据库操作同成功同失败Spring事务作用在数据层或业务层保障一系列的数据库操作同成功同失败数据层有事务我们可以理解,为什么业务层也需要处理事务呢?举个简单的例子,转账业务会有两次数据层的调用,一次是加钱一次是减钱把事务放在数据层,加钱和减钱就有两个事务没办法保证加钱和减钱同时成功或者同时失败这个时候就需要将事务放在业务层进行处理。Spring为了管理事务,提供了一个平台事务管理器commit是用来提交事务,rollback是用来回滚事务。名称类型。......原创 2022-07-17 17:51:24 · 676 阅读 · 1 评论 -
[Spring Framework]AOP经典案例、AOP总结
概念AOP(AspectOrientedProgramming)面向切面编程,一种编程范式作用在不惊动原始设计的基础上为方法进行功能增强核心概念代理(Proxy)SpringAOP的核心本质是采用代理模式实现的连接点(JoinPoint)在SpringAOP中,理解为任意方法的执行切入点(Pointcut)匹配连接点的式子,也是具有共性功能的方法描述通知(Advice)若干个方法的共性功能,在切入点处执行,最终体现为一个方法切面(Aspect).........原创 2022-07-17 13:49:54 · 768 阅读 · 2 评论 -
[Spring Framework]AOP配置管理③(AOP通知获取数据)
有了这个特性后,我们就可以在环绕通知中对原始方法的参数进行拦截过滤,避免由于参数的问题导致程序无法正确运行,保证代码的健壮性。在catch方法中就可以获取到异常,至于获取到异常以后该如何处理,这个就和你的业务需求有关了。这块比较简单,以前我们是抛出异常,现在只需要将异常捕获,就可以获取到原始方法的异常信息了。就是方法的返回值,我们是可以直接获取,不但可以获取,如果需要还可以进行修改。调用无参数的proceed,当原始方法有参数,会在调用的过程中自动传入参数。这两个通知类型可以获取,具体如何获取?......原创 2022-07-16 23:43:46 · 606 阅读 · 7 评论 -
[Spring Framework]AOP配置管理②(AOP通知类型)
我们前面的案例中,出现过@Before,这个就属于通知类型。它所代表的含义是将通知添加到切入点方法执行的前面。那么我们很自然地就想到,有没有可以添加到其他位置的?AOP通知描述了抽取的共性功能,根据共性功能抽取的位置不同,最终运行代码时要将其加入到合理的位置通知具体要添加到切入点的哪里?前置通知后置通知环绕通知(重点)返回后通知(了解)抛出异常后通知(了解)前置通知,追加功能到方法执行前,类似于在代码1或者代码2添加内容后置通知返回后通知抛出异常后通知环绕通知,}}............原创 2022-07-16 17:53:22 · 887 阅读 · 6 评论 -
[Spring Framework]AOP配置管理①(AOP切入点表达式)
切入点表达式就是要找到需要增强的方法,所以它就是对一个具体方法的描述,但是方法的定义会有很多,所以如果每一个方法对应一个切入点表达式,想想这块就会觉得将来编写起来会比较麻烦,有没有更简单的方式呢?这个使用率较低,描述子类的,咱们做JavaEE开发,继承机会就一次,使用都很慎重,所以很少用它。我们使用通配符描述切入点,主要的目的就是简化之前的配置,具体都有哪些通配符可以使用?单个独立的任意符号,可以独立出现,也可以作为前缀或者后缀的匹配符出现。)代表参数可以没有,可以一个,可以多个,不限制类型。.......原创 2022-07-16 13:03:17 · 522 阅读 · 2 评论 -
[Spring Framework]AOP工作流程
所以要对原始对象进行增强,就需要对原始对象创建代理对象,在代理对象中的方法把通知[如MyAdvice中的method方法]内容加进去,就实现了增强,这就是我们所说的代理(Proxy)。目标对象就是要增强的类[如BookServiceImpl类]对应的对象,也叫原始对象,不能说它不能运行,只能说它在运行的过程中对于要增强的内容是缺失的。注意第1步在容器启动的时候,bean对象还没有被创建成功。要被实例化bean对象的类中的方法和切入点进行匹配。判定bean对应的类中的方法是否匹配到任意切入点。......原创 2022-07-16 11:57:22 · 685 阅读 · 0 评论 -
[Spring Framework]AOP初识
Spring有两个核心的概念,一个是IOC/DI,一个是就是AOP。AOP是在不改原有代码的前提下对其进行增强。面向切面编程,一种编程范式,指导开发者如何组织程序结构。面向对象编程我们都知道OOP是一种编程思想,那么AOP也是一种编程思想,编程思想主要的内容就是指导程序员该如何编写程序,所以它们两个是不同的编程范式。AOP的作用在不惊动原始设计的基础上为其进行功能增强,前面咱们有技术就可以实现这样的功能即代理模式。名称类型配置类注解位置配置类定义上方作用开启注解格式AOP功能。......原创 2022-07-16 01:12:38 · 592 阅读 · 4 评论 -
[Spring Framework]Spring整合Junit
名称@RunWith类型测试类注解位置测试类定义上方作用设置JUnit运行器属性value(默认)运行所使用的运行期。原创 2022-07-15 22:15:42 · 752 阅读 · 2 评论 -
[Spring Framework]Spring整合MyBatis
这里的AccountDao,Mybatis已经使用mapper动态代理为我们自动生成了实现类,这个实现类已经存在于容器中,所以我们可以直接用用类型自动装配依赖。Mybatis的基础环境我们已经准备好了,接下来就得分析下在上述的内容中,哪些对象可以交给Spring来管理?注意我们没有写实现类,因为使用的是mapper动态代理,Mybatis会自动帮我们创建实现类。整合Mybatis,就是将Mybatis用到的内容交给Spring管理,分析下配置文件。从图中可以获取到,真正需要交给Spring管理的是。....原创 2022-07-15 20:33:42 · 1184 阅读 · 3 评论 -
[Spring Framework]注解开发④(第三方bean管理)
名称@Bean类型方法注解位置方法定义上方作用设置该方法的返回值作为spring管理的bean属性value(默认)定义bean的idhttpshttpshttpshttpshttpshttpshttpshttps。原创 2022-07-14 23:32:29 · 793 阅读 · 12 评论 -
[Spring Framework]注解开发③(依赖注入)
Spring为了使用注解简化开发,并没有提供、对应的注解,只提供了自动装配的注解实现。我们有一个Spring配置类:另个接口,两个实现类,且他们均在impl文件夹中:工程结构:在BookServiceImpl类的bookDao属性上添加注解然后我们运行测试demo:结果成功:为什么setter方法可以删除呢?这是因为自动装配基于反射设计创建对象并通过暴力反射为私有属性进行设值,普通反射只能获取public修饰的内容,暴力反射除了获取public修饰的内容还可以获取private修改的内容,所以此原创 2022-07-14 16:55:02 · 910 阅读 · 8 评论 -
[Spring Framework]注解开发②(注解配置scope、生命周期钩子)
首先我们描述一下项目背景:有一个配置类,用来扫描对应impl包中的注解:有一个实现类BookDaoImpl3(在impl包中):接下来我们就说说如何用注解实现:@Scope我们可以运行一个demo来试验一下:结果:然后我们将它变为非单例模式:再运行结果,结果为:(1)在BookDaoImpl中添加两个方法,和,方法名可以任意(2)如何对方法进行标识,哪个是初始化方法,哪个是销毁方法?只需要在对应的方法上添加和注解即可。(3)要想看到两个方法执行,需要注意的是只有在容器关闭的时候,才会执行,原创 2022-07-14 13:48:30 · 532 阅读 · 1 评论