spring学习笔记
文章平均质量分 57
丘丘用户思思澪
这个作者很懒,什么都没留下…
展开
-
DML编程控制
MP会默认将模型类的类名名首字母小写作为表名使用,假如数据库表的名称都以tbl_开头,那么我们就需要将所有的模型类上添加。这种生成策略,不需要手动设置ID,如果手动设置ID,则会使用自己设置的值。AUTO的作用是使用数据库ID自增,在使用该策略的时候一定要确保对应的数据库表设置了ID主键自增,否则无效。可想而知,MP的逻辑删除会将所有的查询都添加一个未被删除的条件,也就是已经被删除的数据是不应该被查询出来的。设置表的前缀内容,这样MP就会拿 tbl_加上模型类的首字母小写,就刚好组装成数据库的表名。原创 2023-03-23 16:31:30 · 334 阅读 · 0 评论 -
mybatis-plus CRUD DQL编程控制
例: and(i -> i.lt(User::getAge, 10).gt(User::getAge, 30)) —> and (age > 10 and age < 30)例: or(i -> i.lt(User::getAge, 10).gt(User::getAge, 30)) —> or (age > 10 and age < 30)例: nest(i -> i.lt(User::getAge, 10).gt(User::getAge, 30)) —> (age > 10 and。原创 2023-03-23 10:35:53 · 326 阅读 · 0 评论 -
maven依赖设置
如果想更全面的查看Maven中各个坐标的依赖关系,可以点击Maven面板中的show Dependencies。情况一:特殊优先:在一个pom.xml中添加两个不同版本的Junit依赖:后配置的覆盖先配置的。情况二:路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高。情况三:声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的。A依赖于B、C,而B、C又有各自的依赖,那么A是否依赖于B、C的依赖呢?如果出于某些原因,我不想使用传递依赖下的某个包,怎么办呢?原创 2023-01-17 10:31:30 · 741 阅读 · 0 评论 -
分模块开发
通过将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享。这样的话,项目中的每一层都可以单独维护,也可以很方便的被别人使用。只需在拆分之后建立依赖后maven install即可。原创 2023-01-17 09:57:33 · 95 阅读 · 0 评论 -
RESTful快速开发
之前说过用REST风格描述网络资源,虽然能够隐藏资源的访问行为,并且相较于传统风格稍微简化了一些,但是仍然需要重复设置路径,method属性,那么是否能够更加简化呢?原创 2023-01-16 16:32:14 · 68 阅读 · 0 评论 -
Spring REST风格
当我们想要表示一个网络资源时,传统方式通常是用一个请求url表示一个操作。这样既不方便,也不安全,因为操作对于用户是透明的,可以通过地址得知要实现的是什么操作。上述行为是约定方式,约定不是规范,可以打破,所以称REST风格,而不是REST规范。描述模块的名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源,例。这样请求地址变的简单了,并且光看请求URL并不是很能猜出来该URL的具体功能。但是我们的需求不只有保存,我们目标实现增删改查,而url只有一个,怎么办呢?原创 2023-01-16 14:15:05 · 506 阅读 · 0 评论 -
springMVC的响应
SpringMVC接收到请求和数据后,进行一些了的处理,当然这个处理可以是转发给Service,Service层再调用Dao层完成的,不管怎样,处理完以后,都需要将结果告知给用户。返回值为实体类对象,设置返回值为实体类类型,即可实现返回对应对象的json数据,需要依赖@ResponseBody注解和@EnableWebMvc注解。此处又使用到了类型转换,内部还是通过Converter接口的实现类完成的,所以Converter除了前面。3,响应json数据。响应POJO集合对象。原创 2023-01-13 15:15:57 · 476 阅读 · 0 评论 -
SpringMVC的请求参数传递
注解的话,SpringMVC会将List看做是一个POJO对象来处理,将其创建一个对象并准备把前端的数据封装到对象中,但是List是一个接口无法创建对象,所以会报错。简单数据类型一般处理的是参数个数比较少的请求,如果参数比较多,那么后台接收参数的时候就比较复杂,这个时候我们可以考虑使用POJO数据类型。在SpringMVC的配置类中开启SpringMVC的注解支持,这里面就包含了将JSON转换成对象的功能。嵌套POJO参数:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数。原创 2023-01-04 16:22:49 · 450 阅读 · 0 评论 -
SpringMVC中的bean加载控制
加载业务bean(service),功能bean(DataSource,SqlSessionFactoryBean,MapperScannerConfigurer等)。:加载其相关bean(表现层bean),也就是controller包下的类。在之前的实例中,一个SpringMVC项目由两个需要加载的配置类。注解,也会被Spring扫描到,这样又会扫描到。因为Spring配置类扫描的包是。,SpringMVC的配置类。:设置更精细的扫描范围,在。配置类,设定扫描范围排除掉。:测试的时候,需要把。原创 2023-01-04 14:48:06 · 573 阅读 · 0 评论 -
新建一个SpringMVC项目
出错的原因是,如果方法直接返回字符串,springmvc会把字符串当成页面的名称在项目中进行查找返回,因为不存在对应返回值名称的页面,所以会报404错误,找不到资源。provided代表的是该包只在编译和测试的时候用,运行的时候无效直接使用tomcat中的,就避。页面报错的原因是后台没有指定返回的页面,目前只需要关注控制台看user save …再次重启tomcat服务器,然后重新通过浏览器测试访问,会发现还是会报错,这次的错是404。因为使用骨架创建的项目结构不完整,需要手动补全。原创 2023-01-04 09:53:24 · 281 阅读 · 0 评论 -
AOP事务管理(下)
注解可以设置参数。:true只读事务,false读写事务,增删改要设为false,查询设为true。设置超时时间单位秒,在多长时间之内事务没有提交成功就自动回滚,-1表示不设置超时时间。:当出现指定异常进行事务回滚。:当出现指定异常不进行事务回滚。注意:Spring的事务只会对和及其子类进行事务回顾,其他的异常类型是不会回滚的。设置事务的隔离级别: :默认隔离级别, 会采用数据库的隔离级别 : 读未提交 : 读已提交 : 重复读取: 串行化属性设置事务的传播。比如:在前面的转案例的原创 2022-12-05 09:10:53 · 267 阅读 · 0 评论 -
AOP事务管理
接口注解/类注解/方法注解,业务层接口上方/业务层实现类上方/业务方法上方,为当前业务层方法添加事务(如果设置在类或接口上方则类或接口中所有方法均添加事务)所以,当程序出问题后,我们需要让事务进行回滚,而且这个事务应该是加在业务层上,而Spring的事务管理就是用来解决这类问题的。可以写在接口类上、接口方法上、实现类上和实现类方法上。写在接口类上,该接口的所有实现类的所有方法都会有事务。写在接口方法上,该接口的所有实现类的该方法都会有事务。写在实现类方法上,该方法上有事务。原创 2022-12-02 17:00:06 · 512 阅读 · 0 评论 -
AOP通知获取数据
之前说到了AOP可以对原始方法进行增强,那么AOP是否可以获取到原始方法的数据并对原始方法的数据利用增强方法进行处理呢?我们将从获取参数、获取返回值和获取异常三个方面来研究。JoinPoint:适用于前置、后置、返回后、抛出异常后通知。:适用于环绕通知。对于获取返回值,前置和抛出异常后通知不存在返回值,后置通知返回值可有可无。获取切入点方法运行异常信息,前置和返回后通知是不会有,后置通知可有可无。原创 2022-12-02 16:39:32 · 1797 阅读 · 0 评论 -
AOP通知类型
返回后通知是需要在原始方法select正常执行后才会被执行,如果select()方法执行的过程中出现了异常,那么返回后通知是不会被执行。,追加功能到方法执行后,只有方法正常执行结束后才进行,类似于在代码3添加内容,如果方法执行抛出异常,返回后通知将不会被添加。,环绕通知功能比较强大,它可以追加功能到方法执行的前后,这也是比较常用的方式,它可以实现其他四种通知类型的功能。,追加功能到方法抛出异常后,只有方法执行出异常才进行,类似于在代码4添加内容,只有方法抛出异常后才会被添加。原创 2022-12-02 16:12:26 · 543 阅读 · 0 评论 -
AOP切入点表达式
切入点表达式标准格式:动作关键字(访问修饰符 返回值 包名.类/接口名.方法名(参数) 异常名)。:动作关键字,描述切入点的行为动作,例如execution表示执行到指定切入点。描述切入点通常描述接口,而不描述实现类,如果描述到实现类,就出现紧耦合了。返回值类型对于增删改类使用精准类型加速匹配,对于查询类使用*通配快速描述。:单个独立的任意符号,可以独立出现,也可以作为前缀或者后缀的匹配符出现。:多个连续的任意符号,可以独立出现,常用于简化包名与参数的书写。:参数,直接写参数的类型,多个类型用逗号隔开。原创 2022-12-02 15:35:21 · 237 阅读 · 0 评论 -
AOP简单示例
Before,方法注解,通知方法定义上方,设置当前通知方法与切入点之间的绑定关系,当前通知方法在原始切入点方法前运行。@Pointcut,方法注解,切入点方法定义上方,设置切入点方法,属性value(默认):切入点表达式。@EnableAspectJAutoProxy,配置类注解,配置类定义上方,开启注解格式AOP功能。定义update需要增强,切入点名称为pt,无参数,无返回值,方法无实际逻辑。@Aspect,类注解,切面类定义上方,设置当前类为AOP切面类。3.制作共性功能(通知类与通知)原创 2022-12-02 11:07:52 · 532 阅读 · 0 评论 -
AOP工作流程
上面这个例子中有两个切入点的配置,但是第一个ptx()并没有被使用,所以不会被读取,只会读取使用了的切入点pt()。获取的bean是代理对象时,根据代理对象的运行模式运行原始方法与增强的内容,完成操作。因为要对目标对象进行功能增强,而采用的技术是动态代理,所以会为其创建一个代理对象。匹配成功,创建原始对象(目标对象)的代理对象,如: BookDao。最终运行的是代理对象的方法,在该方法中会对原始方法进行功能增强。获取的bean是原始对象时,调用方法并执行,完成操作。注意此时bean对象还没有创建成功。原创 2022-12-02 10:49:20 · 479 阅读 · 0 评论 -
AOP简要介绍
AOP(Aspect Oriented Programming)面向切面编程,在不改原有代码的前提下对其进行功能增强。连接点:程序执行过程中的任意位置,可以用来增强的方法。切入点:匹配连接点的式子,需要被增强的方法。通知:在切入点处执行的操作,共有的增强方法。通知类:通知方法不能单独存在,其所在的类。切面:描述通知与切入点之间的关系。原创 2022-12-02 10:39:21 · 92 阅读 · 0 评论 -
IOC/DI注解开发中的注解定义
类型为属性注解或方法注解或方法形参注解,位置在属性定义上方或标准set方法上方或类set方法上方或方法形参前面,作用为引用类型属性设置值,属性为required:true/false,定义该属性是否允许为null。类注解,位置在类定义的上方,设置该类创建对象的作用范围,可用于设置创建出的bean是否为单例对象,属性为定义bean作用范围,默认值singleton(单例),可选值prototype(非单例)。如果有多个bean要被Spring管理,直接在配置类中多些几个方法,方法上添加@Bean注解即可。原创 2022-11-30 17:00:46 · 134 阅读 · 0 评论 -
bean一些配置
通过scope标签实现,定义bean的作用范围的配置。通过name标签实现,定义bean的别名。singleton表示单例(默认)prototype表示多例。原创 2022-11-25 09:35:03 · 86 阅读 · 0 评论 -
bean实例化的几种方法
【代码】bean实例化的几种方法。原创 2022-11-25 10:33:39 · 118 阅读 · 0 评论 -
Spring DI实现案例
bean配置文件xml文件applicationContxet.xml。业务层 BookServiceImpl.java。数据层 BookDaoImpl.java。原创 2022-11-25 08:50:38 · 266 阅读 · 0 评论 -
spring IOC实现示例
Spring提供了一个IoC容器,用来充当IoC思想的外部。IoC容器负责对象的创建,初始化等工作,被创建管理的对象称为Bean。IoC,控制反转,在程序中不主动使用new产生对象,将对象的创建控制权转移到由程序转移到外部,降低代码耦合度。bean标签标识配置bean,id表示给配置的bean起名字,class属性表示给bean确定类型。xml文件applicationContxet.xml。业务层 BookServiceImpl.java。数据层 BookDaoImpl.java。原创 2022-11-25 08:31:56 · 154 阅读 · 0 评论 -
DI注入的几种方法
在bean中定义引用类型属性,并提供可访问的set方法配置中使用property标签ref属性注入引用类型对象对于多个注入对于引用数据类型使用的是对于简单数据类型使用的是app.javaBookDaoImpl.java标准注入根据参数类型注入根据位置注入三.自动装配需要提供setter方法按照类型装配按照名称装配自动装配用于引用类型依赖注入,不能对简单类型进行操作使用按类型装配时(byType)必须保障容器中相同类型的bean唯一,推荐使用使用按名称装配时(byName)原创 2022-11-29 08:54:47 · 507 阅读 · 0 评论 -
bean的生命周期
运行main方法后,JVM启动,Spring加载配置文件生成IOC容器,从容器获取bean对象,然后调方法执行main方法执行完后,JVM退出,这个时候IOC容器中的bean还没有来得及销毁就已经结束了,所以没有调用对应的destroy方法。在BookServiceImpl完成这两个接口的使用,修改BookServiceImpl类,添加两个接口InitializingBean, DisposableBean并实现接口中的两个方法afterPropertiesSet和destroy。2.注册钩子关闭容器。原创 2022-11-28 16:25:49 · 73 阅读 · 0 评论