10 2020 档案

摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] expose-proxy是用来配置是否暴露代理bean的。在注解方式中已经解释过这个属性。 这里稍微说一下。 如果有下面的情况: 在业务类内部的方法printMessage中调用formatMessage方法,那么两个方法 阅读全文
posted @ 2020-10-30 17:35 戴着假发的程序员0-1 阅读(794) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 业务类非常简单,这里不做赘述。 [1]Aspect类 配置中的Aspect类和注解中的Aspect类完全一致,只是没有任何注解而已。就是一个普通的javaBean。 在其中声明一个普通的方法,作为通知的方法,当然我们不需要 阅读全文
posted @ 2020-10-30 17:34 戴着假发的程序员0-1 阅读(161) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 关于SprngAOP的概念和思想我们在springAOP(Annotation)章节已经全部解释过了,所以本章节主要讲解SpringAOP的XML配置方式。不再赘述概念。 好的,让我们开始搭建springAOP的XML-H 阅读全文
posted @ 2020-10-30 17:31 戴着假发的程序员0-1 阅读(167) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 前面我们以及解释完了AOP的所有配置和使用方式。 现在我们来看看下面的案例: 我们准备一个业务类:在业务类中我们有两个方法showMessage和formartMsg。我们再showMessage中调用formartMsg 阅读全文
posted @ 2020-10-28 17:36 戴着假发的程序员0-1 阅读(2481) 评论(2) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 我们查看@Aspect注解的源代码: 1 package org.aspectj.lang.annotation; 2 3 @java.lang.annotation.Retention(java.lang.annotat 阅读全文
posted @ 2020-10-28 17:34 戴着假发的程序员0-1 阅读(251) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 有时我们可能在我们的业务上会增加多个相同类型的切面。这时就会有一个先后顺序问题。那么spring如何解决顺序问题呢? 在使用注解方式的环境下,我们可以通过@Order注解给切面排序,当然在没有@Order注解的情况下,多个 阅读全文
posted @ 2020-10-28 17:31 戴着假发的程序员0-1 阅读(822) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 所谓环绕通知就是在目标方法的前后可以通知增强,正因为这样的情况,所以环绕通知可以阻止方法的执行,或者修改方法的返回值。 环绕通知也可以传入一个参数ProceedingJoinPoint,ProceedingJoinPoin 阅读全文
posted @ 2020-10-28 17:29 戴着假发的程序员0-1 阅读(227) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 异常通知就专门用于处理异常的,一旦被增强方法出现异常就会进入异常通知的增强业务。同样的异常通知也可以传入JoinPoint,这里作用和前置通知的一致,就不在赘述。异常通知除过可以传入JoinPoint外,还可以传入一个异常 阅读全文
posted @ 2020-10-28 17:27 戴着假发的程序员0-1 阅读(173) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 最终通知也是在被增强方法完全执行结束之后执行,最终通知和后置通知的区别在于即使程序中途出现异常,中断之前也会先执行最终通知。就类似于finallly代码块。最终通知同样可以传入JoinPoint,作用和前置通知的一致,这里 阅读全文
posted @ 2020-10-28 17:26 戴着假发的程序员0-1 阅读(118) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 所谓后置通知,就是在方法执行结束之后增强。这里的执行结束是彻底结束,如果方法没有返回值,则正常执行结束,如果有返回值则表示返回结束之后。 如果方法在执行过程中出现异常中断,或者进入其他逻辑,那么后置通知就不会再执行。 我们 阅读全文
posted @ 2020-10-28 17:25 戴着假发的程序员0-1 阅读(179) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 前置通知的意思是在目标方法执行之前执行增强程序。前面的例子我们也写过潜质通知。 注意,前置通知仅仅就是前置增强,前置通知并不能改变目标方法的执行。更不能阻止目标方法的执行。 现在我们来仔细分析以下前置通知的案例: 我们准备 阅读全文
posted @ 2020-10-28 17:22 戴着假发的程序员0-1 阅读(194) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 任何通知方法都可以声明一个类型为org.aspectj.lang.JoinPoint的参数作为其第一个参数(请注意,需要使用 around 通知声明ProceedingJoinPoint类型的第一个参数,它是JoinPoi 阅读全文
posted @ 2020-10-28 17:20 戴着假发的程序员0-1 阅读(272) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 在@Pointcut中spring还提供了逻辑运算,主要就是逻辑非 “!”逻辑与"&&" 逻辑或"||"。这个非常好理解,直接看官方的案例就可以立刻理解: 以下 example 显示了三个切入点表达式: 1 @Pointc 阅读全文
posted @ 2020-10-18 16:51 戴着假发的程序员0-1 阅读(531) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 此 PCD 允许您将连接点的匹配限制为特定的名为 Spring bean 或一组名为 Spring beans(使用通配符时)。 官方给出的案例: 名为tradeService的 Spring bean 上的任何连接点(仅 阅读全文
posted @ 2020-10-18 16:49 戴着假发的程序员0-1 阅读(452) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 限制连接点的匹配,其中连接点的主题(在 Spring AOP 中执行的方法)具有给定的 annotation。 官方案例: 任何连接点(仅在 Spring AOP 中执行方法),其中执行方法具有@Transactional 阅读全文
posted @ 2020-10-18 16:47 戴着假发的程序员0-1 阅读(6948) 评论(1) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 限制匹配到具有给定 annotation 的类型中的连接点(使用 Spring AOP 时执行在具有给定 annotation 的类型中声明的方法)。 官方给出的案例: 任何连接点(仅在 Spring AOP 中执行方法) 阅读全文
posted @ 2020-10-18 16:45 戴着假发的程序员0-1 阅读(5672) 评论(0) 推荐(1)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 限制与连接点的匹配(使用 Spring AOP 时执行方法),其中传递的实际 arguments 的运行时类型具有给定类型的注释。 看看官方给的例子: 任何连接点(仅在 Spring AOP 中执行方法),它接受一个参数, 阅读全文
posted @ 2020-10-18 16:43 戴着假发的程序员0-1 阅读(916) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 限制与连接点的匹配(使用 Spring AOP 时执行方法),其中执行 object 的 class 具有给定类型的 annotation。 我的解释就是:@target会匹配所有拥有@target指定注解类型的目标类。 阅读全文
posted @ 2020-10-18 16:40 戴着假发的程序员0-1 阅读(1169) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 限制匹配连接点(使用 Spring AOP 时执行方法),其中 arguments 是给定类型的实例。 这个很好理解,就是在所有的joint point (连接点)中匹配指定参数类型和个数的方法进行匹配。 官方案例: 1 阅读全文
posted @ 2020-10-18 16:38 戴着假发的程序员0-1 阅读(891) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 限制与连接点的匹配,其中目标 object(application object 被代理)是给定类型的实例。 target和this的使用上基本相同,target中配置的也是全限定类名。也有很多程序猿无法分清出target 阅读全文
posted @ 2020-10-18 16:36 戴着假发的程序员0-1 阅读(618) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 限制与连接点的匹配,其中 bean reference(Spring AOP 代理)是给定的具体类型。 就是说在this中我们配置的都是具体的类型,也就是全限定类名。注意This中不支持通配符。 官方给出的案例: this 阅读全文
posted @ 2020-10-17 17:24 戴着假发的程序员0-1 阅读(415) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 限制匹配某些类型中的连接点(使用 Spring AOP 时执行在匹配类型中声明的方法)。 spring官方给出的案例: service包中的任何连接点(仅在 Spring AOP 中执行方法): within(com.st 阅读全文
posted @ 2020-10-17 17:20 戴着假发的程序员0-1 阅读(2075) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 上一章我们讲解@Pointcut的含义和用法,这一章我将详细讲解和罗列spring中的@Pointcut中表达式的写法。 Spring AOP 支持以下 AspectJ 切入点指示符(PCD)用于切入点表达式: 用于匹配方 阅读全文
posted @ 2020-10-17 17:17 戴着假发的程序员0-1 阅读(2675) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] Pointcut表示切入点,我们在Hellowrold中使用的是内联式的切入点配置: 1 @Before("execution(* com.st.dk.demo7.service.BookService.saveBook( 阅读全文
posted @ 2020-10-17 17:15 戴着假发的程序员0-1 阅读(787) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 曾经有人问过我,springAOP到低是JDK代理还是CGLib代理。现在我们就来聊聊这个问题。 其实默认情况下spring不确定使用什么方式实现动态代理,如果你的目标类实现了任何一个或者多个接口,那么spring默认使用 阅读全文
posted @ 2020-10-17 17:13 戴着假发的程序员0-1 阅读(142) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] [1]配置类 我们在配置类中添加了如下的注解: 1 @EnableAspectJAutoProxy //开启@AspectJ 支持 主要用于开启@AspectJ的支持。否则无法完成代理。在spring5.x之前,如果要使用 阅读全文
posted @ 2020-10-14 08:29 戴着假发的程序员0-1 阅读(150) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 我们写一个简单的AOP的Hellowrld程序,这里我们采用前置通知作为案例。 我们准备一个业务类BookService,添加一个SaveBook的方法: 1 /** 2 * @author 戴着假发的程序员 3 * 4 阅读全文
posted @ 2020-10-14 08:27 戴着假发的程序员0-1 阅读(170) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 首先说明几个概念: AOP只是一个概念或者思想,就类似于面向对象的思想,MVC等等。我们不能说springAOP就是AOP,就像我们不能说java语言就是面向对象,应该说java语言是一种面向对象的语言或者说是面向对象的实 阅读全文
posted @ 2020-10-14 08:25 戴着假发的程序员0-1 阅读(151) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] [1]Aspect(切面) Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。 [2]Joint point(连接点) 表示在程序中明确定义的点, 阅读全文
posted @ 2020-10-14 08:23 戴着假发的程序员0-1 阅读(166) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架 阅读全文
posted @ 2020-10-14 08:22 戴着假发的程序员0-1 阅读(237) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 我们已经知道ComponentScan的配置可以通知spring扫描拥有spring标准注解的类。这些标注大致是:@Component、@Controller、@Service、@Repository。我们也可通过excl 阅读全文
posted @ 2020-10-13 08:21 戴着假发的程序员0-1 阅读(4137) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 这里的includeFilters和context:include-filter标签的作用完全一致。 我们已经知道ComponentScan的配置可以通知spring扫描拥有spring标准注解的类。这些标注大致是:@Co 阅读全文
posted @ 2020-10-13 08:19 戴着假发的程序员0-1 阅读(1807) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 这里的scopeResolver也是和 context:component-scan的scope-resolver属性完全一致: 注意这个属性和scoped-proxy是互斥的。 这个属性跟name-generator有点 阅读全文
posted @ 2020-10-13 08:14 戴着假发的程序员0-1 阅读(327) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 这里的scopedProxy属性和context:component-scan的scoped-proxy属性作用完全一致。 scoped-proxy 往往是使用在web工程中,比如下面的场景: 我们有一个Bean的scor 阅读全文
posted @ 2020-10-13 08:13 戴着假发的程序员0-1 阅读(330) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] nameGenerator和contentx:component-sacn的属性name-generator作用一致: 这个属性指定你的构造型注解,注册为Bean的ID生成策略,这个生成器基于接口BeanNameGener 阅读全文
posted @ 2020-10-13 08:12 戴着假发的程序员0-1 阅读(1506) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] lazyInit用于通知spring对扫描的类是要延迟初始化。默认是false,就是不延迟。我们可以修改为true测试一下: 修改配置类,将lazyInit修改为true。 1 /** 2 * @author 戴着假发的程 阅读全文
posted @ 2020-10-13 08:10 戴着假发的程序员0-1 阅读(539) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 这里的resourcePattern和配置contentx:component-sacn的属性resourcePattern有一样的作用。 是用来配置要扫描的资源的正则表达式的,一般这里都是一个粗略的配置。 默认的配置是” 阅读全文
posted @ 2020-10-13 08:08 戴着假发的程序员0-1 阅读(476) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 这里的useDefaultFilters和配置contentx:component-sacn的属性useDefaultFilters有一样的作用。默认是true。表示使用默认的过滤器。spring的默认Filter就会处理 阅读全文
posted @ 2020-10-12 08:28 戴着假发的程序员0-1 阅读(223) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] basePackageClasses 用来指定某个类所在包下的所有组件。springboot中的主应用类就是一个BasePackageClass。 看案例: 我们准备如下结构的类: 其中每个类源码: Person类:在be 阅读全文
posted @ 2020-10-12 08:27 戴着假发的程序员0-1 阅读(5656) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] @ComponentScan往往是注解在@Configuration的类中,用于添加自动扫描的包。我们可以通过属性basePackages或者value指定一个或者多个要扫描的包。 简单案例如下: 1 /** 2 * @a 阅读全文
posted @ 2020-10-12 08:25 戴着假发的程序员0-1 阅读(3422) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 源码: 1 @Documented 2 @Retention (RUNTIME) 3 @Target(METHOD) 4 public @interface PreDestroy { 5 } @PreDestroy和bea 阅读全文
posted @ 2020-10-12 08:23 戴着假发的程序员0-1 阅读(195) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 源码: 1 @Documented 2 @Retention (RUNTIME) 3 @Target(METHOD) 4 public @interface PostConstruct { 5 } @PostConstru 阅读全文
posted @ 2020-10-12 08:21 戴着假发的程序员0-1 阅读(151) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] @Resource是 JSR-250标准。可以注解在bean的成员变量或者setter方法上。主要也是用于通知spring当前的属性应该注入哪个bean。 @Resource和@Autowired不同的是@Resource 阅读全文
posted @ 2020-10-10 08:29 戴着假发的程序员0-1 阅读(225) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 查看源码: 1 package org.springframework.beans.factory.annotation; 2 3 @java.lang.annotation.Target({java.lang.annot 阅读全文
posted @ 2020-10-10 08:27 戴着假发的程序员0-1 阅读(316) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 查看@Autowired注解源码: 1 package org.springframework.beans.factory.annotation; 2 3 @java.lang.annotation.Target({jav 阅读全文
posted @ 2020-10-10 08:25 戴着假发的程序员0-1 阅读(139) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 1 package org.springframework.context.annotation; 2 3 @java.lang.annotation.Target({java.lang.annotation.Elemen 阅读全文
posted @ 2020-10-10 08:23 戴着假发的程序员0-1 阅读(197) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 1 package org.springframework.context.annotation; 2 3 @java.lang.annotation.Target({java.lang.annotation.Elemen 阅读全文
posted @ 2020-10-09 08:11 戴着假发的程序员0-1 阅读(201) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 源码: 1 package org.springframework.context.annotation; 2 3 @java.lang.annotation.Target({java.lang.annotation.El 阅读全文
posted @ 2020-10-09 08:10 戴着假发的程序员0-1 阅读(198) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] @DependsOn可以注解在某个交给spring管理的类上方,也可以注解在@Bean注解的方法上方。作用和配置文件中bean标签的DependsOn属性一致。主要是来配置当前类的依赖类。 spring会在实例化当前类之前 阅读全文
posted @ 2020-10-09 08:07 戴着假发的程序员0-1 阅读(467) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] @Lazy注解,是用来配置bean是否延迟加载,默认是true,但是配置了才生效,不配置就不生效。 @Lazy源码: 1 package org.springframework.context.annotation; 2 阅读全文
posted @ 2020-10-09 08:05 戴着假发的程序员0-1 阅读(423) 评论(1) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] proxyMode是用来配置当前类的代理模式的。主要用于scope非singleton的情况。因为非singleton的bean spring并不会立刻创建对象,如果需要注入时就产生一个代理对象,这时代理模式就起作用了。 阅读全文
posted @ 2020-10-09 08:03 戴着假发的程序员0-1 阅读(1617) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] @Scope注解源码: 1 package org.springframework.context.annotation; 2 3 @java.lang.annotation.Target({java.lang.annot 阅读全文
posted @ 2020-10-09 08:02 戴着假发的程序员0-1 阅读(258) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 这三个注解是我们在开发中经常用到的注解,我们来看看这些注解的源码。 1 package org.springframework.stereotype; 2 3 @java.lang.annotation.Target({j 阅读全文
posted @ 2020-10-09 08:01 戴着假发的程序员0-1 阅读(303) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] @Component是spring的一个标准注解 1 @java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE}) 2 @java.lang.a 阅读全文
posted @ 2020-10-08 09:59 戴着假发的程序员0-1 阅读(574) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 我们可以通过配置basePackages让spring自动扫面有spring标准注释(参见对应的标准注释)的bean。 查看AnnotationConfigApplicationContext构造方法: 1 public 阅读全文
posted @ 2020-10-08 09:57 戴着假发的程序员0-1 阅读(196) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 1 java.lang.String destroyMethod() default "(inferred)"; destroyMethod和bean标签的destroyMethod属性一样,是用来配置释放资源的回调方法。 阅读全文
posted @ 2020-10-08 09:54 戴着假发的程序员0-1 阅读(5120) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 1 java.lang.String initMethod() default ""; initMethod属性通过bean标签中的initMethod属性一样,也是来配置实例化之后的初始化方法的。 参照spring的be 阅读全文
posted @ 2020-10-08 09:52 戴着假发的程序员0-1 阅读(4021) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] boolean autowireCandidate() default true; autowireCandidate和配置文件bean标签的autowireCandidate属性一样,就是让其他的bean在按照类型注入时 阅读全文
posted @ 2020-10-07 08:59 戴着假发的程序员0-1 阅读(1109) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 源码: 1 @java.lang.Deprecated 2 org.springframework.beans.factory.annotation.Autowire autowire() default org.spri 阅读全文
posted @ 2020-10-07 08:57 戴着假发的程序员0-1 阅读(451) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] 源码: 1 @org.springframework.core.annotation.AliasFor("name") 2 java.lang.String[] value() default {}; 3 4 @org.s 阅读全文
posted @ 2020-10-07 08:54 戴着假发的程序员0-1 阅读(2129) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] [1]@Configuration @Configuration注解表示要给类为配置类。 我们在AppConfig类上方添加@Configuration注解,表示当前类是一个配置类。配置类本身也是spring容器中的一个元 阅读全文
posted @ 2020-10-07 08:52 戴着假发的程序员0-1 阅读(245) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 抖音ID:戴着假发的程序员 欢迎关注 [查看视频教程] [1]创建maven项目,添加依赖: 1 <dependency> 2 <groupId>org.springframework</groupId> 3 <artifactId>spring-context</artifa 阅读全文
posted @ 2020-10-07 08:49 戴着假发的程序员0-1 阅读(194) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] 我们已经知道context:component-scan的配置可以通知spring扫描拥有spring标准注解的类。这些标注大致是:@Component、@Controller、@Service、@Repository。我们也可通过context:exclud 阅读全文
posted @ 2020-10-06 09:29 戴着假发的程序员0-1 阅读(1746) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] 我们已经知道context:component-scan的配置可以通知spring扫描拥有spring标准注解的类。这些标注大致是:@Component、@Controller、@Service、@Repository。但是我们也可以通过context:inc 阅读全文
posted @ 2020-10-06 09:28 戴着假发的程序员0-1 阅读(1705) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] 注意这个属性和scoped-proxy是互斥的。 这个属性跟name-generator有点类似,它是基于接口ScopeMetadataResolver的,实现resolveScopeMetadata方法,目的是为了将@Scope(value="",proxy 阅读全文
posted @ 2020-10-06 09:20 戴着假发的程序员0-1 阅读(255) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] scoped-proxy 往往是使用在web工程中,比如下面的场景: 我们有一个Bean的score是session,那么就是每一个回话都会创建一个Bean。spring容器在初始化时不会创建这个Bean对象。 但是如果我们将这个Bean注入到其他的单利的be 阅读全文
posted @ 2020-10-06 09:18 戴着假发的程序员0-1 阅读(277) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] resource-pattern是用来配置要扫描的资源的正则表达式的,一般这里都是一个粗略的配置。 默认的配置是”**.*class“ 表示扫描配置包下的所有class文件。 我们可以修改测试以下。 准备两个类: 1 /** 2 * @author 戴着假发的 阅读全文
posted @ 2020-10-06 09:15 戴着假发的程序员0-1 阅读(398) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] 这个属性指定你的构造型注解,注册为Bean的ID生成策略,这个生成器基于接口BeanNameGenerator实现generateBeanName方法,你可以自己写个类去自定义策略。这边,我们可不显示配置,它是默认使用org.springframework.c 阅读全文
posted @ 2020-10-06 09:12 戴着假发的程序员0-1 阅读(291) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] annotation-config默认是true,完成了context:annotation-config元素的工作,如果是true就开启了属性自动注入的功能,如果是false就是关闭属性自动注入的功能。 案例: 我们创建两个类Person和Student,并 阅读全文
posted @ 2020-10-06 09:09 戴着假发的程序员0-1 阅读(228) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] context:component-scan是用来通知spring自动扫描指定的包中的类文件的。 use-default-filters属性是用来通知spring是否启用默认的Filter。这个配置默认是true,spring的默认Filter就会处理@Com 阅读全文
posted @ 2020-10-06 09:04 戴着假发的程序员0-1 阅读(217) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] context:component-scan用于通知spring自动扫描的class 的包。 我们可以通过context:component-scan标签的base-package配置一个或者多个包名,spring会根据我们的配置自动扫描这些包下的所有类以及他 阅读全文
posted @ 2020-10-05 09:59 戴着假发的程序员0-1 阅读(444) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] props标签是用来注入java中的Properties类型的。我们知道Properties其实是继承了Hashtable,所以它也是双列集合,所以注入方式和map几乎相同,只是key和value的类型都是String,所以注入方式略有不同。看案例: 准备gr 阅读全文
posted @ 2020-10-05 09:58 戴着假发的程序员0-1 阅读(291) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] map集合和list、set的不同是,map是双列集合。所以注入时稍有不同,但是大致一样。 要使用标签 map 和 entry。 我们看案例: 准备Account类。拥有属性account,有参和无参构造方法。 1 /** 2 * @author 戴着假发的程 阅读全文
posted @ 2020-10-05 09:56 戴着假发的程序员0-1 阅读(318) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] list集合的注入和set集合的注入基本完全相同。 案例 我们修改上面案例中的类型即可: 准备账户类,拥有属性account,有参和无参构造方法 1 /** 2 * @author 戴着假发的程序员 3 * 4 * @description 账户 5 */ 6 阅读全文
posted @ 2020-10-05 09:52 戴着假发的程序员0-1 阅读(350) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] 我们可以通过set标签对类中的set属性进行注入,无论属性是简单类型和引用类型。 案例: 准备账户类,拥有属性account,有参和无参构造方法 1 /** 2 * @author 戴着假发的程序员 3 * 4 * @description 账户 5 */ 6 阅读全文
posted @ 2020-10-05 09:50 戴着假发的程序员0-1 阅读(183) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] 当我们通知spring帮我们注入某个引用来行的对象时,我们可以使用ref通知spring注入bean的beanName。 案例: 我们有AccountDAO和AccountService类: 1 /** 2 * @author 戴着假发的程序员 3 * 4 * 阅读全文
posted @ 2020-10-05 09:47 戴着假发的程序员0-1 阅读(305) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] 我们在使用property和constructor-arg为bean注入属性时,如果属性是简单类型,我们可以通过value直接注入。 这里简单类型主要是指java的基本类型和String类型。 案例: 我们有一个Service类: 1 /** 2 * @aut 阅读全文
posted @ 2020-10-05 09:44 戴着假发的程序员0-1 阅读(228) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] replaced-method可以让我们通过配置完成对原有的bean中的方法实现进行重新替换。 看案例: 我们有一个service类,其中有一个save方法的实现 1 /** 2 * @author 戴着假发的程序员 3 * 4 * @description 阅读全文
posted @ 2020-10-05 09:37 戴着假发的程序员0-1 阅读(503) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] lookup-method是spring实现的一种特殊的通过方法注入的方式。 我们看下面的案例: 我们有两个IAccountDAO接口的实现类: 接口: 1 /** 2 * @author 戴着假发的程序员 3 * 4 * @description 5 */ 阅读全文
posted @ 2020-10-05 09:33 戴着假发的程序员0-1 阅读(334) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] constructor-arg标签和property一样可以通知spring帮我们注入属性。 只不过constructor-arg的配置,spring会通过构造方法注入,这时就需要我们的类中有对应的构造方法。 案例如下: 1 /** 2 * @author 戴 阅读全文
posted @ 2020-10-05 09:30 戴着假发的程序员0-1 阅读(716) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] property是用来给bean的属性配置要注入的值的。这些值可以是bean或者简单值(基本类型和Stirng)。 案例: 1 /** 2 * @author 戴着假发的程序员 3 * @description 4 */ 5 public class Acco 阅读全文
posted @ 2020-10-04 10:51 戴着假发的程序员0-1 阅读(188) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] profile用于配置spring的多环境配置。 我们可以通过profile配置多个不同环境下的配置属性。 案例: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans default-autowire="byNa 阅读全文
posted @ 2020-10-04 10:49 戴着假发的程序员0-1 阅读(1095) 评论(0) 推荐(0)
摘要:戴着假的程序员出品 [查看视频教程] alias从字面意思理解就是别名。而这个标签的实际作用就是给bean添加别名。 看下面案例: 1 <!-- 注册accountService --> 2 <bean id="accountService" name="a_service" 3 autowire= 阅读全文
posted @ 2020-10-04 10:46 戴着假发的程序员0-1 阅读(248) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] destroy-method和init-method一样,只是它是用来配置释放资源的方法,spring会在销毁当前bean对象之前调用destroy-method制定的方法。 我们在OtherUtil中添加方法: 1 public void destory() 阅读全文
posted @ 2020-10-04 10:44 戴着假发的程序员0-1 阅读(320) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] init-method用于指定bean的初始化方法。 我们知道spring会帮我们实例化对象,实例化对象之后,spring就会查找我们是否配置了init-method如果配置了,spring就会调用我们配置的initmethod方法,进行bean的初始化。 我 阅读全文
posted @ 2020-10-04 10:42 戴着假发的程序员0-1 阅读(1715) 评论(0) 推荐(1)
摘要:戴着假发的程序员出品 [查看视频教程] depends-on属性主要配置当前bean的依赖。当然大部分情况下我们都是使用ref标签完成属性依赖。 但是ref是属性的注入。depends-on仅仅是表示依赖,不一定会注入。 depends-on表现情况就是:如果A 的depends-on配置的是B,则 阅读全文
posted @ 2020-10-04 10:40 戴着假发的程序员0-1 阅读(439) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] parent属性可以让当前的bean继承指定的目标bean的属性值。 案例:我们添加要给SubAccountService类。 1 /** 2 * @author 戴着假发的程序员 3 * @company http:// 4 * @description 5 阅读全文
posted @ 2020-10-04 10:38 戴着假发的程序员0-1 阅读(251) 评论(0) 推荐(0)
摘要:戴着假发的程序员出品 [查看视频教程] abstract属性为true表示该类是抽象类,当然实际上可以不是抽象类。但是无论如何,spring不会为该类创建对象。 1 <!-- 注册accountService --> 2 <bean id="accountService" abstract="tru 阅读全文
posted @ 2020-10-04 10:34 戴着假发的程序员0-1 阅读(231) 评论(0) 推荐(0)
摘要:戴着假发的程序员 出品 [查看视频教程] primary属性和autowire-candidate可以解决同样的问题。 当容器中存在多个同类型的bean时,我们可以在其中一个bean上配置primary为true,这是spring在注入时会优先选择当前bean。 当然primary为true的同类型 阅读全文
posted @ 2020-10-04 10:32 戴着假发的程序员0-1 阅读(280) 评论(0) 推荐(0)
摘要:戴着假发的程序员 出品 [查看视频教程] autowire-candidate是用来标记当前bean是否会被作为注入的候选bean。 默认值 true:表示其他bean可以把当前bean作为属性注入。 false:表示其他bean选在注入属性 bean时将忽略当前bean。 案例: 我们有两个acc 阅读全文
posted @ 2020-10-04 10:30 戴着假发的程序员0-1 阅读(526) 评论(0) 推荐(0)
摘要:戴着假发的程序员 出品 [查看视频讲解] spring可以帮我们的bean注入属性。比如给accountServer注入accountDAO属性。我们可以通过property属性配置。 我们也可以通过Autowire让spring自动注入。 Autowrire的几个值: No:不启用自动装配,这也是 阅读全文
posted @ 2020-10-03 20:23 戴着假发的程序员0-1 阅读(796) 评论(0) 推荐(0)
摘要:戴着假发的程序员 出品 [查看视频讲解] lazy-init属性用于配置当前的springbean是否延迟加载。所谓延迟加载就是创建spring容器的时候是不创建对象的,当第一次获取该对象时才会实例化该对象。 lazy-init属性的默认值是false,也就是不延迟加载。 当修改为true时就会延迟 阅读全文
posted @ 2020-10-03 20:16 戴着假发的程序员0-1 阅读(418) 评论(0) 推荐(0)
摘要:戴着假发的程序员 出品 [查看视频讲解] scope属性用于指定bean的作用域。可以取一下几个值: singleton:单例模式(默认); prototype:多例模式; request:作用于web应用的请求范围; session:作用于web应用的会话范围 global-session:作用于 阅读全文
posted @ 2020-10-03 20:09 戴着假发的程序员0-1 阅读(262) 评论(0) 推荐(0)
摘要:戴着假发的程序员 出品 [查看视频讲解] name属性是给bean设置别名的。 我们通过spring的getBean获取bean对象时,可以通过id,同样也可以通过别名。 name的配置方式有如下几种: 1 name="aserver,a@service,a+service" 1 <!-- 注册ac 阅读全文
posted @ 2020-10-03 20:06 戴着假发的程序员0-1 阅读(617) 评论(0) 推荐(0)
摘要:戴着假发的程序员 出品 [查看视频讲解] id属性在helloworld程序中已经做过解释,这里简单解释一下。 id属性 spring会把每一个配置的类都翻译成BeanDefinition,存储在缓存中,这个缓存是一个map,存储对应的BeanDefinition的可以用的就是这里配置的ID,所以我 阅读全文
posted @ 2020-10-03 19:56 戴着假发的程序员0-1 阅读(369) 评论(0) 推荐(0)
摘要:戴着假发的程序员 出品 [查看视频讲解] Spring 作为 Ioc 框架,实现了依赖注入,由一个中心化的 Bean 工厂来负责各个 Bean 的实例化和依赖管理。各个 Bean 可以不需要关心各自的复杂的创建过程,达到了很好的解耦效果。 springBean的加载过程大致分为两个过程:解析注册,实 阅读全文
posted @ 2020-10-02 21:44 戴着假发的程序员0-1 阅读(586) 评论(0) 推荐(0)
摘要:戴着假发的程序员 出品 [查看视频讲解] 我们可以通过import在一个配置文件中引入其他的配置文件。 例如: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/bea 阅读全文
posted @ 2020-10-02 21:41 戴着假发的程序员0-1 阅读(192) 评论(0) 推荐(0)
摘要:戴着假发的程序员 出品 [查看视频讲解] [1]概述 spring是一个对象工厂(容器),我可以将我们的编写的类交给spring管理,spring最终会将我们的类创建好对象存在一个map缓存中。并且为每一个对象设置一个对应的key。 我们可以通过spring工厂提供的api(getBean)获取sp 阅读全文
posted @ 2020-10-02 21:38 戴着假发的程序员0-1 阅读(279) 评论(0) 推荐(0)
摘要:戴着假发的程序员 出品 [查看视频讲解] [1]准备 创建项目:spring-st 添加依赖: 1 <dependencies> 2 <dependency> 3 <groupId>org.springframework</groupId> 4 <artifactId>spring-context< 阅读全文
posted @ 2020-10-02 21:34 戴着假发的程序员0-1 阅读(206) 评论(0) 推荐(0)
摘要:戴着假发的程序员 出品 [查看视频说明] IoC 也称为依赖注入(DI)。它是一个 process,其中 objects 仅通过构造函数 arguments,工厂方法的 arguments 或者属性的 properties 来定义它们的依赖项(即,它们使用的其他 objects)。在构造或从工厂方法 阅读全文
posted @ 2020-10-02 21:30 戴着假发的程序员0-1 阅读(271) 评论(0) 推荐(0)