spring
文章平均质量分 58
小鲁班-JAVA开发
java项目开发
展开
-
Spring AOP中Introduction的使用
Introduction是啥?在Spring中如果有一个已经存在的service,我们想对其进行增强,但是又不想改变其代码,这个时候就可以使用Introduction来处理。具体怎么实现,看下面的详细例子。引入jar包 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>原创 2021-11-13 21:45:40 · 791 阅读 · 0 评论 -
Spring中Lookup注解的使用
我们知道在spring容器中单独的一个抽象类是不能成为一个bean的,那么有没有办法呢?这个时候我们可以使用Lookup注解,我们可以看下spring的扫描bean部分逻辑。我们知道在spring中要想成为一个bean,必须先生成BeanDefinition对象,如果一个抽象类中没有含有Lookup注解的方法,在spring扫描时就会被排除掉。 /** * 1、判断是不是独立的类,非静态内部类则无法生成bean, * 2、判断是不是接口或者抽象类(有一种特殊情况),是则无法生成 * 3、判原创 2021-10-26 11:32:24 · 903 阅读 · 0 评论 -
简单模拟手写Spring框架
只是简单的按照Spring的执行流程写了一下代码,当然跟Spring源码是有很大的差别,可以拿来学习,不喜勿碰。支持单例和原型的bean,以及初始化前、初始化、初始化后的方法执行,可以解析各种定义的注解执行流程工程机构关键代码,代码路径:xqc-structure: 模拟手写springpackage com.xqc.context;import com.xqc.annotation.*;import com.xqc.aware.XqcBeanAware;impor..原创 2021-10-17 11:06:17 · 149 阅读 · 0 评论 -
Spring推断构造方法和应用场景初步分析
1.工程结构依赖jar包<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.4.RELEASE</version> </dependency>2、将Ord.原创 2021-10-15 09:59:42 · 150 阅读 · 0 评论 -
spring framework源码编译步骤
最近又在重新系统地研究spring源码,避免不了需要偶自己看源码和调试,所以总结了spring源码编译的方法和步骤1.源码github下载地址:https://github.com/spring-projects/spring-framework可以选择不同的分支下载2、本文以5.3版本为例,在idea中导入源码...原创 2021-10-18 19:57:19 · 353 阅读 · 1 评论 -
Spring循环依赖问题分析和解决
项目路径:https://gitee.com/wuhan1/spring-parent.git下的spring-10循环依赖出现的三种情况1、构造器参数循环依赖2、setter方式单例,singleton3、setter方式原型模式,prototype一、构造参数依赖,新建StuServiceA和StuServiceB,之间相互引用public class StuServiceA { private StuServiceB stuServiceB; public Stu.原创 2020-10-12 23:09:49 · 195 阅读 · 0 评论 -
Spring源码日志分析
1.jdk自带的java util logging,即jul日志输出格式:从源码可以看到jul的Logger是个具体的类2.apache的commons-logging,即jcl输出结果,没有任何配置从表面看起来是使用的jul,实际上是什么样的,查看源码Log是一个接口,而不是具体的实现类看LogFactory.getLog源码,实际上是有一个数组,里面放了4种日志打印方式然后通过反射获取数组里的对象 private Log createLogFromClass(String lo原创 2020-10-09 23:38:26 · 382 阅读 · 0 评论 -
Spring bean的生命周期总结
bean的行为模式分两种:单例模式:由ioc容器负责非单例模式:spring ioc容器不负责此种模式的生命周期,只负责创建初始化bean生命周期最简单的一种情况:实例化——》设置属性——》使用复杂的情况(实际可能只会用到其中的几步):1.实例化2.设置属性3.如果实现了BeanNameAware接口(bean名字关注接口),则可以获取正在实例化的bean的名字(bean id)4.如果实现了BeanFactoryAware接口(bean 工厂关注接口),则可以获取bean工厂5.如果实原创 2020-09-20 21:10:59 · 286 阅读 · 0 评论 -
Spring 组件开发利器Aware接口
我们可以使用的组件,Aware及其子接口。原创 2020-09-19 20:06:29 · 112 阅读 · 0 评论 -
Spring @Autowired注解使用总结
1.Autowired 属性注入不会调用set方法2.Autowired注解标注在set方法前,则会调用3.Autowired在三层注解(即标注有@service,@Repository,@Controller)的方式中不能放在方法参数前,否则报错4.Autowired在@Bean+返回值的这是形式中可以放到方法的参数前5.Autowired默认根据类型注入,如果有多个类型相同的怎么处理?,默认是报错的,报错解决方法方式一:可以@Autowired+@Qualifier组合,指定名称原创 2020-09-19 19:34:38 · 2812 阅读 · 0 评论 -
Spring bean初始化和销毁时执行方法的几种写法
1.指明initMethod和destroyMethod,新建Stu类,public class Stu { public void myInit(){ System.out.println("学生初始化"); } public void myDestroy(){ System.out.println("学生销毁"); }}把Stu注入当容器中,并增加初始化myInit和销毁方法myDestroy@Configuratio原创 2020-09-19 18:26:32 · 427 阅读 · 0 评论 -
Spring bean作用域介绍
什么是spring bean?在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。spring中的bean默认的是单例模式,前提是基于同一个JVM实例。作用域1.单例singleton,在spring ioc容器中仅存在一个bean,ioc容器启动时创建。可以设置为懒加载,第一次使用时创建,后续的直接使用,不再创建新的实例,避免bean过原创 2020-09-17 13:36:13 · 386 阅读 · 0 评论 -
Spring aop的几种方式
工程下载地址:https://gitee.com/wuhan1/spring-parent.git的spring-021.实现接口分别实现相应的接口,后置通知环绕通知对应的xml配置,applicationContext.xml<!--suppress SpringFacetInspection --><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://ww.原创 2020-09-15 22:03:35 · 286 阅读 · 0 评论 -
Spring属性注入的几种方式详解
给各种类型的对象赋值Student类和MathTeacher类package com.xqc;import java.util.Arrays;import java.util.List;import java.util.Map;import java.util.Set;public class Student { //学号 private Integer stuNo; //姓名 private String stuName; //爱好 p原创 2020-09-15 22:09:08 · 492 阅读 · 0 评论 -
Spring配置文件的几种读取方式
1.新建spring工程,引入需要依赖的最少jar包,spring-aop,spring-beans,spring-content,spring-core,spring-expression <properties> <spring.version>5.0.4.RELEASE</spring.version> </properties> <dependencies> <depend原创 2020-09-16 08:53:48 · 255 阅读 · 0 评论 -
classpath:与classpath*:的区别和详细解析
在spring项目中,我们经常会在spring.xml或者web.xml中配置一些加载项,所以经常会用到classpath,但是classpath和classpath*加载有什么区别呢?classpath:只会到你指定的class路径中查找找文件。classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找。...原创 2019-02-26 13:54:53 · 1751 阅读 · 1 评论 -
报错 org.springframework.beans.factory.NoSuchBeanDefinitionException 的解决办法
严重: Context initialization failedorg.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'user...原创 2018-10-19 22:50:24 · 1601 阅读 · 0 评论 -
Spring中@Autowired注解、@Resource注解的区别
Spring中@Autowired注解、@Resource注解的区别spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource、@PostConstruct以及@PreDestroy。@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName...原创 2018-10-18 21:39:08 · 526 阅读 · 0 评论