1、谈谈对Spring IOC的理解?谈谈对Spring DI的理解?

IOC反转控制:将之前程序中需要手动创建对象的操作,交由Spring框架来实现,创建对象的操作被反转到了Spring框架。对象的生命周期由Spring来管理,直接从Spring那里去获取一个对象

DI依赖注入:Spring框架创建Bean对象时,动态的将依赖对象注入到Bean组件中,实现依赖对象的注入

2、依赖查找和依赖注入的区别

依赖查找是主动或手动的依赖查找方式,通常需要依赖容器或标准API实现。而依赖注入则是手动或自动依赖绑定的方式,无需依赖特定的容器和API

3、BeanFactory接口和ApplicationContext接口不同点

1)BeanFactory默认采用延迟初始化(lazy-load),第一次getBean时才会初始化Bean;ApplicationContext是会在加载配置文件时初始化Bean

2)BeanFactory提供完整的IOC服务支持;ApplicationContext是对BeanFactory扩展,它可以进行国际化处理、事件传递和Bean自动装配以及各种不同应用层的Context实现

在这里插入图片描述

4、Spring创建Bean对象的几种方式

1)、使用类构造器实例化(默认无参数)

    <bean id="accountService" class="com.hand.demo.service.AccountServiceImpl"/>

2)、使用静态工厂方法实例化(简单工厂模式)

public class StaticFactory {public static IAccountService getAccountService() {return new AccountServiceImpl();}
}
    <bean id="accountService" class="com.hand.demo.factory.StaticFactory" factory-method="getAccountService"/>

3)、使用实例工厂方法实例化(工厂方法模式)

public class InstanceFactory {public IAccountService getAccountService() {return new AccountServiceImpl();}
}
    <bean id="instanceFactory" class="com.hand.demo.factory.InstanceFactory"/><bean id="accountService" factory-bean="instanceFactory" factory-method="getAccountService"/>

5、Spring支持的几种Bean的作用域

  • singleton(单例):在Spring IOC容器中仅存在一个Bean实例**(默认)**
  • prototype(多例):每个从容器中调用Bean时,都返回一个新的实例
  • request:将单个Bean定义范围限定为单个HTTP请求的生命周期,每个HTTP请求都会创建一个新的Bean
  • session:将单个Bean定义范围限定为HTTP Session的生命周期
  • application:将单个Bean定义范围限定为ServletContext的生命周期
  • webSocket:将单个Bean定义范围限定为WebSocket的生命周期

6、依赖注入的几种方式

1)、setter方法注入

public class User {private Long id;private String name;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +'}';}
}
public class UserHolder {private User user;public User getUser() {return user;}public void setUser(User user) {this.user = user;}@Overridepublic String toString() {return "UserHolder{" +"user=" + user +'}';}
}

1)Xml配置

setter-injection.xml:

    <bean id="userHolder" class="com.hand.demo.injection.UserHolder"><property name="user" ref="user"/></bean><bean id="user" class="com.hand.demo.domain.User"><property name="id" value="1"/><property name="name" value="Jack"/></bean>
 public class XmlSetterInjectionDemo {public static void main(String[] args) {DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(beanFactory);String xmlResourcePath = "classpath:/setter-injection.xml";//加载Xml资源、解析并且生成BeanDefinitionbeanDefinitionReader.loadBeanDefinitions(xmlResourcePath);//依赖查找并且创建BeanUserHolder userHolder = beanFactory.getBean(UserHolder.class);System.out.println(userHolder);}
}

2)Java注解

setter-injection.xml:

    <bean id="user" class="com.hand.demo.domain.User"><property name="id" value="1"/><property name="name" value="Jack"/></bean>
public class AnnotationSetterInjectionDemo {public static void main(String[] args) {//创建ApplicationContext容器AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(applicationContext);String xmlResourcePath = "classpath:/setter-injection.xml";//加载Xml资源、解析并且生成BeanDefinitionbeanDefinitionReader.loadBeanDefinitions(xmlResourcePath);//注册配置类applicationContext.register(AnnotationSetterInjectionDemo.class);//启动Spring应用上下文applicationContext.refresh();//依赖查找并且创建BeanUserHolder userHolder = applicationContext.getBean(UserHolder.class);System.out.println(userHolder);//关闭Spring应用上下文applicationContext.close();}@Beanpublic UserHolder userHolder(User user) {UserHolder userHolder = new UserHolder();userHolder.setUser(user);return userHolder;}
}

3)API配置元信息

setter-injection.xml:

    <bean id="user" class="com.hand.demo.domain.User"><property name="id" value="1"/><property name="name" value="Jack"/></bean>
public class ApiSetterInjectionDemo {public static void main(String[] args) {//创建ApplicationContext容器AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();//生成UserHolder的BeanDefinitionBeanDefinition userHolderBeanDefinition = createUserHolderBeanDefinition();//注册UserHolder的BeanDefinitionapplicationContext.registerBeanDefinition("userHolder", userHolderBeanDefinition);XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(applicationContext);String xmlResourcePath = "classpath:/setter-injection.xml";//加载Xml资源、解析并且生成BeanDefinitionbeanDefinitionReader.loadBeanDefinitions(xmlResourcePath);//启动Spring应用上下文applicationContext.refresh();//依赖查找并且创建BeanUserHolder userHolder = applicationContext.getBean(UserHolder.class);System.out.println(userHolder);//关闭Spring应用上下文applicationContext.close();}/*** 为UserHolder生成BeanDefinition** @return*/public static BeanDefinition createUserHolderBeanDefinition() {BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(UserHolder.class);builder.addPropertyReference("user", "user");return builder.getBeanDefinition();}
}

2)、构造器注入

1)Xml配置

constructor-injection.xml:

    <bean id="userHolder" class="com.hand.demo.injection.UserHolder"><constructor-arg name="user" ref="user"/></bean><bean id="user" class="com.hand.demo.domain.User"><property name="id" value="1"/><property name="name" value="Jack"/></bean>

2)Java注解

public class AnnotationConstructorInjectionDemo {public static void main(String[] args) {//创建ApplicationContext容器AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(applicationContext);String xmlResourcePath = "classpath:/setter-injection.xml";//加载XML资源、解析并且生成BeanDefinitionbeanDefinitionReader.loadBeanDefinitions(xmlResourcePath);//注册配置类applicationContext.register(AnnotationConstructorInjectionDemo.class);//启动Spring应用上下文applicationContext.refresh();//依赖查找并且创建BeanUserHolder userHolder = applicationContext.getBean(UserHolder.class);System.out.println(userHolder);//关闭Spring应用上下文applicationContext.close();}@Beanpublic UserHolder userHolder(User user) {UserHolder userHolder = new UserHolder(user);return userHolder;}
}

3)API配置元信息

public class ApiConstructorInjectionDemo {public static void main(String[] args) {//创建ApplicationContext容器AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();//生成UserHolder的BeanDefinitionBeanDefinition userHolderBeanDefinition = createUserHolderBeanDefinition();//注册UserHolder的BeanDefinitionapplicationContext.registerBeanDefinition("userHolder", userHolderBeanDefinition);XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(applicationContext);String xmlResourcePath = "classpath:/setter-injection.xml";//加载XML资源、解析并且生成BeanDefinitionbeanDefinitionReader.loadBeanDefinitions(xmlResourcePath);//启动Spring应用上下文applicationContext.refresh();//依赖查找并且创建BeanUserHolder userHolder = applicationContext.getBean(UserHolder.class);System.out.println(userHolder);//关闭Spring应用上下文applicationContext.close();}/*** 为UserHolder生成BeanDefinition** @return*/public static BeanDefinition createUserHolderBeanDefinition() {BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(UserHolder.class);builder.addConstructorArgReference("user");return builder.getBeanDefinition();}
}

3)、字段注入

  • @Autowired:默认按照类型装配
  • @Resource:默认按照名称装配

4)、方法注入

public class AnnotationMethodInjectionDemo {private UserHolder userHolder;private UserHolder userHolder2;@Autowiredpublic void initUserHolder(UserHolder userHolder) {this.userHolder = userHolder;}@Resourcepublic void initUserHolder2(UserHolder userHolder2) {this.userHolder2 = userHolder2;}public static void main(String[] args) {//创建ApplicationContext容器AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(applicationContext);String xmlResourcePath = "classpath:/setter-injection.xml";//加载XML资源、解析并且生成BeanDefinitionbeanDefinitionReader.loadBeanDefinitions(xmlResourcePath);//注册配置类applicationContext.register(AnnotationMethodInjectionDemo.class);//启动Spring应用上下文applicationContext.refresh();//依赖查找 AnnotationMethodInjectionDemo BeanAnnotationMethodInjectionDemo demo = applicationContext.getBean(AnnotationMethodInjectionDemo.class);System.out.println(demo.userHolder == demo.userHolder2);//true//关闭Spring应用上下文applicationContext.close();}@Beanpublic UserHolder userHolder(User user) {UserHolder userHolder = new UserHolder(user);return userHolder;}
}

5、哪种依赖注入方式你建议使用,构造器注入,还是setter注入?

如果是必须依赖的话,推荐使用构造器注入,setter注入用于可选依赖

8、自动绑定的几种方式

  • no:无自动装配**(默认)**,需要手动指定依赖注入对象
  • byName:根据被注入属性的名称作为Bean名称进行依赖查找,并将对象设置到该属性
  • byType:根据被注入属性的类型作为依赖类型进行查找,并将对象设置到该属性
  • constructor:特殊byType类型,用于构造器参数

9、Spring Bean的生命周期

Spring IOC容器实现分为两个阶段:容器启动阶段Bean实例化阶段

1)、容器启动阶段

容器依赖工具类BeanDefinitionReader对加载的Configuration MetaData进行解析和分析,并将分析后的信息编组为相应的BeanDefinition,最后把这些保存了Bean定义必要信息的BeanDefinition,注册到相应的BeanDefinitionRegistry

在这里插入图片描述

1)容器的扩展点:BeanFactoryPostProcessor

BeanFactoryPostProcessor可以对Bean配置元数据进行操作。也就是说,Spring容器允许BeanFactoryPostProcessor读取指定Bean的配置元数据(BeanDefinition),并可以在Bean被实例化之前修改它

2)、Bean实例化阶段

经过第一阶段,所有的Bean定义信息都通过BeanDefinition的方式注册到了BeanDefinitionRegistry中,当某个请求方法通过容器的getBean方法请求某个对象或者因依赖关系容器需要隐式地调用getBean方法时,就会触发Bean的实例化

隐式调用有如下两种情况:

  • 对于BeanFactory来说,对象实例化默认采用延迟初始化。当对象A被请求而需要第一次实例化的时候,如果它所依赖的对象B之前没有被实例化,那么容器会先实例化对象A所依赖的对象。这时容器内部就会首先实例化B以及对象A依赖的其他还没有被实例化的对象。这种情况是容器内部调用getBean(),对于本次请求的请求方是隐式的
  • ApplicationContext启动之后会实例化所有的Bean定义,是因为ApplicationContext在完成启动阶段后,紧接着调用注册到该容器的所有Bean定义的实例化方法getBean()

只有当对应某个Bean定义的getBean()方法第一次被调用时,不管是显示的还是隐式的,Bean实例化阶段的活动才会被触发,第二次被调用则会直接返回容器缓存的第一次实例化完的对象实例(多例模式除外)

在这里插入图片描述

1)Bean的实例化与BeanWrapper

容器内部实现采用策略模式来决定使用何种方式初始化Bean实例

InstantiationStrategy是实例化策略的抽象接口,其直接子类SimpleInstantiationStrategy实现了通过反射来实例化对象实例,但不支持方法注入方式的对象实例化

CglibSubclassingInstantiationStrategy继承了SimpleInstantiationStrategy的以反射方式实例化对象的功能,并通过CGLIB的动态字节码生成功能,可以动态生成某个类的子类,进而满足了方法注入所需的对象实例化需求。默认情况下,容器内部采用的是CglibSubclassingInstantiationStrategy

容器只要根据相应bean定义的BeanDefinition取得实例化信息,结合CglibSubclassingInstantiationStrategy以及不同的Bean定义类型,就可以返回实例化完成的对象实例。但是,不是直接返回构造完成的对象实例,而是以BeanWrapper对构造完成的对象实例进行包裹,返回相应的BeanWrapper实例

BeanWrapper接口有一个实现类BeanWrapperImpl,其作用就是对某个Bean进行包裹,然后对这个包裹的Bean进行操作,比如设置或者获取Bean的相应属性值,使用BeanWrapper对Bean实例操作很方便,可以免去直接使用反射API操作对象的繁琐

2)Aware接口

当对象实例化完成并且相关属性以及依赖设置完成之后,Spring容器会检查当前对象实例是否实现了一系列的以Aware命名结尾的接口定义。如果是,则将这些Aware接口定义中规定的依赖注入给当前对象实例。下面按照执行顺序进行介绍

BeanFactory中Aware接口

  • BeanNameAware:将对象实例的bean定义对应的beanName设置到当前对象实例
  • BeanClassLoaderAware:将对应加载当前bean的ClassLoader注入当前对象实例,默认会使用加载ClassUtils类的ClassLoader
  • BeanFactoryAware:BeanFactory容器将自身设置到当前对象实例

在这里插入图片描述

ApplicationContext类型的容器在检测Aware接口并设置相关依赖的实现机制上,与以上几个接口处理方式有所不同,使用的是BeanPostProcessor方式

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

ApplicationContext中Aware接口

  • EnvironmentAware
  • EmbeddedValueResolverAware
  • ResourceLoaderAware
  • ApplicationEventPublisherAware
  • MessageSourceAware
  • ApplicationContextAware

3)容器的扩展点:BeanPostProcessor

BeanPostProcessor接口提供Spring Bean初始化前和初始化后的生命周期回调,分别对应postProcessBeforeInitialization和postProcessAfterInitialization方法,允许对Bean进行扩展甚至是替换

public interface BeanPostProcessor {//在Bean初始化前调用@Nullabledefault Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {return bean;}//在Bean初始化后调用@Nullabledefault Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {return bean;}}

4)Bean初始化

  • @PostConstruct标注方法
  • 实现InitializingBean接口的afterPropertiesSet()方法
  • 自定义初始化方法,使用<bean>的init-method属性指定方法名

5)DisposableBean和destroy-method

  • @PreDestroy标注方法
  • 实现DisposableBean接口的destroy()方法
  • 自定义销毁方法,使用<bean>的destroy-method属性指定方法名

10、容器的扩展点:FactoryBean

FactoryBean主要用来定制化Bean的创建逻辑,FactoryBean接口方法如下:

public interface FactoryBean<T> {//返回这个FactoryBean所创建的对象@NullableT getObject() throws Exception;//返回这个FactoryBean所创建对象的类型@NullableClass<?> getObjectType();//返回FactoryBean所创建的对象是否为单例,默认返回truedefault boolean isSingleton() {return true;}}

假设我们定义了一个FactoryBean,名为myFactoryBean,当调用getBean("myFactoryBean")方法时返回的并不是这个FactoryBean,而是这个FactoryBean所创建的Bean,如果想获取到这个FactoryBean需要在名字前面拼接&,行如这种形式:getBean("&myFactoryBean")

public class MyFactoryBean implements FactoryBean<IAccountService> {public IAccountService getObject() throws Exception {System.out.println("执行创建Bean的逻辑");return new AccountServiceImpl();}public Class<?> getObjectType() {return IAccountService.class;}public boolean isSingleton() {return true;}
}
public interface IAccountService {void saveAccount();
}
public class AccountServiceImpl implements IAccountService {public AccountServiceImpl(){System.out.println("AccountServiceImpl被创建出来了");}public void saveAccount() {System.out.println("保存了账户");}
}
    <bean id="myFactoryBean" class="com.hand.demo.factorybean.MyFactoryBean"/>
        ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:bean.xml");IAccountService as = (IAccountService) ac.getBean("myFactoryBean");as.saveAccount();

执行结果:

执行创建Bean的逻辑
AccountServiceImpl被创建出来了
保存了账户

11、Spring循环依赖及解决方式

1)、什么是循环依赖

循环依赖指的是多个对象之间的依赖关系形成一个闭环

在这里插入图片描述

2)、Spring的所有对象都支持循环依赖吗?

单例模式下默认是支持的,但是如果通过构造器注入构成的循环依赖,此依赖是无法解决的,只能抛出BeanCurrentlyInCreationException异常表示循环依赖;多例模式不支持

3)、怎么检测是否存在循环依赖

Bean在创建的时候可以给该Bean打标,如果递归调用回来发现正在创建中的话,即说明了循环依赖了

4)、案例

public class A {private B b;public void setB(B b) {this.b = b;}
}
public class B {private A a;public void setA(A a) {this.a = a;}
}

circular-dependence.xml:

    <bean id="a" class="com.hand.demo.circularDependence.A"><property name="b" ref="b"/></bean><bean id="b" class="com.hand.demo.circularDependence.B"><property name="a" ref="a"/></bean>
        //创建ApplicationContext容器ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:circular-dependence.xml");A a = (A) applicationContext.getBean("a");System.out.println(a);

5)、实现原理分析

Bean从实例化到依赖注入核心代码调用如下:

		AbstractApplicationContext.refresh()↓↓//实例化所有剩余的(非延迟初始化)单例            finishBeanFactoryInitialization(ConfigurableListableBeanFactory beanFactory)↓↓DefaultListableBeanFactory.preInstantiateSingletons()↓↓	//循环调用所有剩余的(非延迟初始化)单例的getBean()方法            AbstractBeanFactory.getBean(String name)   ↓↓	doGetBean(final String name, @Nullable final Class<T> requiredType,@Nullable final Object[] args, boolean typeCheckOnly)↓↓	//检查缓存中是否有手动注册的单例					DefaultSingletonBeanRegistry.getSingleton(String beanName)	→→	getSingleton(String beanName, boolean allowEarlyReference)		↓↓		DefaultSingletonBeanRegistry.getSingleton(String beanName, ObjectFactory<?> singletonFactory)↓↓	//创建Bean实例            AbstractAutowireCapableBeanFactory.createBean(String beanName, RootBeanDefinition mbd, @Nullable Object[] args)↓↓				doCreateBean(final String beanName, final RootBeanDefinition mbd, final @Nullable Object[] args)	↓↓	    createBeanInstance(String beanName, RootBeanDefinition mbd, @Nullable Object[] args)    ↓↓	  		//如果earlySingletonExposure是true,将单例对象的引用通过ObjectFactory保存下来,然后将该ObjectFactory缓存在三级缓存singletonFactories中				earlySingletonExposure == true	→→	DefaultSingletonBeanRegistry.addSingletonFactory(String beanName, ObjectFactory<?> singletonFactory) 		↓↓	  	//执行依赖注入						populateBean(String beanName, RootBeanDefinition mbd, @Nullable BeanWrapper bw)   ↓↓	 //初始化Bean,调用Spring xml中的init方法            initializeBean(final String beanName, final Object bean, @Nullable RootBeanDefinition mbd)    

在这里插入图片描述

Bean的创建最为核心的三个方法:

  • createBeanInstance:实例化,其实也就是调用对象的构造方法实例化对象
  • populateBean:填充属性,这一步主要是对Bean的依赖属性进行填充
  • initializeBean:调用Spring xml中的init方法

循环依赖主要发生在第二步(populateBean),也就是field属性注入的处理

三级缓存核心逻辑

创建Bean的时候Spring首先从一级缓存singletonObjects中获取。如果获取不到,并且对象正在创建中,就再从二级缓存earlySingletonObjects中获取,如果还是获取不到就从三级缓存singletonFactories中取(Bean调用构造函数进行实例化后,即使属性还未填充,就可以通过三级缓存向外提前暴露依赖的引用,根据对象引用能定位到堆中的对象,其原理是基于Java的引用传递),取到后从三级缓存移动到了二级缓存完全初始化之后将自己放入到一级缓存中

核心源码如下:

	//维护着所有创建完成的Bean bean name-->bean instance (一级缓存)private final Map<String, Object> singletonObjects = new ConcurrentHashMap<>(256);//维护着创建中Bean的ObjectFactory bean name-->ObjectFactory (三级缓存)private final Map<String, ObjectFactory<?>> singletonFactories = new HashMap<>(16);//维护着所有半成品的Bean (二级缓存)private final Map<String, Object> earlySingletonObjects = new HashMap<>(16);protected Object getSingleton(String beanName, boolean allowEarlyReference) {//从singletonObjects获取已创建的BeanObject singletonObject = this.singletonObjects.get(beanName);//如果没有已创建的Bean,但是该Bean正在创建中if (singletonObject == null && isSingletonCurrentlyInCreation(beanName)) {synchronized (this.singletonObjects) {//从earlySingletonObjects获取已经实例化的BeansingletonObject = this.earlySingletonObjects.get(beanName);//如果没有实例化的Bean,但是参数allowEarlyReference为trueif (singletonObject == null && allowEarlyReference) {//从singletonFactories获取ObjectFactoryObjectFactory<?> singletonFactory = this.singletonFactories.get(beanName);if (singletonFactory != null) {//使用ObjectFactory获取Bean实例singletonObject = singletonFactory.getObject();//将Bean实例放入earlySingletonObjects中,并从singletonFactories中移除this.earlySingletonObjects.put(beanName, singletonObject);this.singletonFactories.remove(beanName);}}}}return singletonObject;}

以A、B循环依赖注入为例,流程图如下:

在这里插入图片描述

  1. 在创建A的时候,会将实例化的A通过addSingletonFactory()方法缓存,然后执行依赖注入B
  2. 注入会走B的创建流程,最后B又会执行依赖注入A
  3. 由于第一步已经缓存了A的引用,再次创建A时可以通过getSingleton()方法得到这个A的提前引用(拿到最开始缓存的objectFactory,通过它取得对象引用),这样B的依赖注入就完成了
  4. B创建完成后,代表A的依赖注入也完成了,那么A也创建成功了

加入singletonFactories三级缓存的前提是执行了构造器,所以构造器的循环依赖没法解决

6)、如何关闭循环依赖

        //创建ApplicationContext容器ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext();//设置配置文件路径applicationContext.setConfigLocation("classpath:circular-dependence.xml");//关闭循环依赖applicationContext.setAllowCircularReferences(false);//启动Spring应用上下文applicationContext.refresh();A a = (A) applicationContext.getBean("a");System.out.println(a);

12、Spring AOP的底层实现原理?

Spring AOP采用动态代理机制(JDK动态代理)和字节码生成技术(CGLIB动态代理)实现,二者都是在运行期间为目标对象生成一个代理对象,而将横切逻辑织入到这个代理对象中,系统最终使用的是织入了横切逻辑的代理对象,而不是真正的目标对象

  • JDK动态代理的核心是InvocationHandler接口和Proxy类,它通过反射来接收被代理的类,并且要求被代理的类必须实现一个接口。默认情况下,如果Spring AOP发现目标对象实现了相应接口,则采用JDK动态代理为其生成代理对象实例
  • 如果目标类没有实现接口,那么Spring AOP会选择使用CGLIB来动态代理目标类。CGLIB是一个代码生成的类库,可以在运行时动态的生成某个类的子类,CGLIB是通过继承的方式做的动态代理,因此如果某个类被标记为final,那么它是无法使用CGLI做动态代理的

在这里插入图片描述

13、Spring AOP和AspectJ AOP有什么区别?

**Spring AOP属于运行时增强,而AspectJ是编译时增强。**Spring AOP基于代理,而AspectJ基于字节码操作

14、Spring事务的传播行为

传播行为 含义 备注
REQUIRED 当方法调用时,如果不存在当前事务,那么就创建事务;如果之前当方法已经存在事务了,那么就沿用之前的事务 Spring默认的传播行为
SUPPORTS 当方法调用时,如果不存在当前事务,那么不启用事务;如果存在当前事务,那么就沿用当前事务
MANDATORY 方法必须在事务内运行 如果不存在当前事务,那么就抛出异常
REQUIRES_NEW 无论是否存在当前事务,方法都会在新的事务中运行 事务管理器会打开新的事务运行该方法
NOT_SUPPORTED 不支持事务,如果不存在当前事务也不会创建事务;如果存在当前事务,则挂起它,直至该方法结束后才恢复当前事务
NEVER 不支持事务,只有在没有事务的环境中才能运行它 如果方法存在当前事务,则抛出异常
NESTED 嵌套事务,也就是调用方法如果抛出异常只回滚自己内部执行的SQL,而不回滚主方法的SQL

15、SpringMVC的工作原理

在这里插入图片描述

参考

Spring Framework中文文档:https://www.docs4dev.com/docs/zh/spring-framework/5.1.3.RELEASE/reference/core.html#beans

《Spring揭秘》

《Spring官网读书笔记》:https://blog.csdn.net/qq_41907991/category_9601507.html

《@Autowired注解的实现原理》:https://juejin.im/post/5d9487b55188252dfc5727da

《简单说说Spring的循环依赖》:https://juejin.im/post/5da727046fb9a04e2e4b1ca6

《互联网公司 Spring 面试大全(100 题)》:https://gitchat.csdn.net/activity/5d3c724bdf8cc803e66f1e18#61springbeans

《Spring常见问题总结(补充版)》:https://mp.weixin.qq.com/s/wcK2qsZxKDJTLIGqEIyaNg

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 项目mysql配置文件密码加密(jasypt)

    1:导入依赖<!-- 数据库加密 --><dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>2.0.0</version></dependency>2:然后再yml或者properties中加…...

    2024/4/24 11:16:36
  2. sequence 题解

    sequencesequencesequence 题解 题目 这里。 解题方法 算法111 可以发现答案就是∑i=1n∑j=in∑k=ijakj−i+1>A\begin{aligned}\sum_{i=1}^{n}{\sum_{j=i}^{n}{\frac{\sum_{k=i}^{j}{a_k}}{j-i+1}>A}}\end{aligned}i=1∑n​j=i∑n​j−i+1∑k=ij​ak​​>A​。 因为除…...

    2024/4/24 11:16:35
  3. 计算机网络学习【一】

    计算机网络是互连的,自治的计算机集合。自治:无主从关系。(指甲计算机不能去控制乙计算机,大家平等关系) 互连:互联互通。(主机(或者说端系统)通过通信链路(比如光纤,双绞线,无线电,卫星等)连在一起)问题来了:当主机之间距离很远或者互连的主机数量太多,直接互连…...

    2024/4/24 11:16:34
  4. SpringBoot---整合jsp

    文章目录创建pom.xml创建配置文件 application.yml创建 Handler与jsp页面交换JSP页面 创建pom.xml <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.7.RELEASE<…...

    2024/4/24 11:16:33
  5. wangEditor给图片添加超链接,实现点击跳转网页

    具体实现方式可以前往 https://www.passerma.com/article/61 查看要实现此种效果,需要为图片包裹一层a链接,即可实现点击图片跳转网页实现效果如下,点击图片后点击图片栏会在弹出框中可以添加超链接包裹后具体实现方式可以前往 https://www.passerma.com/article/61 …...

    2024/4/15 5:13:42
  6. 55--fpga FIR ip核 滤波 初学者适用

    设计任务: 实现高通滤波器,参数如下: 通过频率:200KHz; 截止频率:180KHz; 通带纹波:<1dB; 阻带衰减:>40dB。 本次实验需要用上篇文章用matlab生成vivado fir ip核需要用的ceo文件 module fir_top(input clk,input axis_data_tvalid,input axis_data_tvalid_f,…...

    2024/4/15 5:13:40
  7. 基于jsp+servlet+js的图形验证码

    jsp的图形验证码servlet的生成图形验证码package user;import java.awt.Color; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random;import javax.imageio.ImageIO; import javax.servlet.ServletException…...

    2024/4/18 4:25:41
  8. 文件读取信息,EOF()多读问题

    http://www.yyycode.cn/index.php/2020/06/06/%e6%96%87%e4%bb%b6%e8%af%bb%e5%8f%96%e4%bf%a1%e6%81%af%ef%bc%8ceof%e5%a4%9a%e8%af%bb%e9%97%ae%e9%a2%98/在写文件读取的时候,第一次用iFile.eof()的时候,发现多了一行然后网上冲浪了之后查了一下,发现改成iFlie.peek()有用…...

    2024/4/30 20:42:39
  9. 动态规划 买书

    # coding:utf-8 有一书店引进了一套书,共有3卷,每卷书定价是60元,书店为了搞促销,推出一个活动,活动如下:如果单独购买其中一卷,那么可以打9.5折。如果同时购买两卷不同的,那么可以打9折。如果同时购买三卷不同的,那么可以打8.5折。如果小明希望购买第1卷x本,第2卷y本…...

    2024/5/1 1:11:38
  10. resnet18病理图像二分类

    简介 简单的数字病理图像分类。首先将分为三个数据集,训练集,验证集,和测试集。这三个数据集由同一种类不同的图片切割组合。训练集由两个图片切割的小图片组成 ,验证集由另一个该类别的图片切割的小图片组成,测试集由另一个该类别的图片切割的小图片组成。 在训练集中类别…...

    2024/5/1 4:20:41
  11. Gson,FastJson,JackJson,ProtoBuf 数据格式转换详解

    1、Gson依赖implementation com.google.code.gson:gson:2.8.6Gson gson = new Gson();实体类(Bean)转JSON String json = gson.toJson(new Bean());JSON转实体类(Bean) Bean b = gson.fromJson(json,Bean.class);Map转Json gson.toJson(map)Json转Map Map<String, Object>…...

    2024/4/30 22:07:46
  12. LeetCode1047题: 删除字符串中的所有相邻重复项

    题目:给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:"abbaca" 输出:"ca" 解释: …...

    2024/4/30 23:24:13
  13. 如何启用笔记本电脑的FTP服务器以及在局域网访问

    过程非常简单,看完大概1分钟,操作大概10分钟步骤:1.快捷命令OptionalFeatures打开Windows功能页面,开启FTP服务器功能2.快捷命令inetmgr打开IIS管理器,在网站列表中添加FTP站点,设置访问权限等,本地共享路径,设置一些访问规则等3.用其他电脑访问,通过Windows文件管理器…...

    2024/4/30 17:03:00
  14. BFC/clear/::after伪元素 解决高度坍塌, ::before解决外边距重叠 (clearfix同时解决高度塌陷和外边距重叠)(css)

    BFC/clear/::after伪元素 解决高度坍塌, ::before解决外边距重叠 (clearfix同时解决高度塌陷和外边距重叠)(css)高度塌陷的问题:在浮动布局中,父元素的高度默认是被子元素撑开; 当子元素浮动后,其会完全脱离文档流,将会无法撑起父元素的高度,导致父元素的高度丢失BFC…...

    2024/4/30 22:43:23
  15. C# 中panel的mousewheel事件触发 (转)

    如果将窗体或容器控件(如Plael控件)的AutoScroll属性设置为True时,那么当窗体或Panel容不下其中的子控件时就会出现滚动条,通过移动滚动条可以上下显示出窗体或Panel中的全部内容。但是默认情况下滚动条的移动只能通过鼠标直接拖动滚动条来实现,而不能通过鼠标的滚轮来实现上…...

    2024/5/5 2:26:05
  16. 让Mapper做更复杂的事情——GroupBy

    此文之前先发一段鸡汤吧,至今我依然记着这么三段话: 1、 人类进步最大的动力是懒; 2、 能用机器完成的事情绝对不应该用人工来完成; 3、 让框架来适应业务,而不是业务适应框架。 1背景 之前完成了,让通用Mapper支持Join的功能,再查阅业务代码,另一个常出现的XML就是SUM…...

    2024/4/30 23:17:20
  17. RHCSA参考答案(3)创建用户账户

    3.创建用户账户 创建下列用户、组以及和组的成员关系: 一个名为adminuser的组 一个名为natasha的用户,其属于adminuser,这个组是该用户的从属组 一个名为harry的用户,属于adminuser,这个组是该用户的从属组 一个名为sarah的用户,其在系统中没有可交互的shell,并且不是ad…...

    2024/5/1 2:55:28
  18. Vuex详解

    1. Vuex是做什么的?官方解释:Vuex是个专为 Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 Vuex也集成到Vue的官方调试工具 devtools extension,提供了诸如零配置的time-travel调试、状…...

    2024/5/5 2:48:26
  19. Elasticsearch之mapping映射入门

    10.1. 什么是mapping映射概念:自动或手动为index中的_doc建立的一种数据结构和相关配置,简称为mapping映射。插入几条数据,让es自动为我们建立一个索引PUT /website/_doc/1 {"post_date": "2019-01-01","title": "my first article&quo…...

    2024/5/5 2:48:35
  20. 图片:变换样式的按钮(1)

    花瓣网-登录界面 1.准备元件2.使用第三方账号登录时,鼠标移入图标和在图标上按下时,显示不同状态的图片 鼠标进入图标时元件的属性中包含【鼠标悬停】与【鼠标按下】的交互样式 操作步骤: 1、设置每个图标【鼠标悬停】的交互样式 右键 交互样式(或新建交互——交互样式)——…...

    2024/4/30 22:58:03

最新文章

  1. 10G MAC层设计系列-(3)CRC Process 模块

    一、前言 前面已经讲述了在Xilinx 10G PCS/PMA IP核的基础上设计的PHY层&#xff0c;已经xgmii接口的MAC_RX模块&#xff0c;本节主要描述MAC_RX之后的CRC_Process模块。 CRC_Prcess的主要作用就是利用RAM地址“返回初始状态”的方式将crc错误的帧丢掉&#xff0c;并将正确的…...

    2024/5/5 6:16:40
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 从头开发一个RISC-V的操作系统(二)RISC-V 指令集架构介绍

    文章目录 前提ISA的基本介绍ISA是什么CISC vs RISCISA的宽度 RISC-V指令集RISC-V ISA的命名规范模块化的ISA通用寄存器Hart特权级别内存管理与保护异常和中断 目标&#xff1a;通过这一个系列课程的学习&#xff0c;开发出一个简易的在RISC-V指令集架构上运行的操作系统。 前提…...

    2024/5/5 1:33:57
  4. 【图论】知识点集合

    边的类型 neighbors(邻居)&#xff1a;两个顶点有一条共同边 loop&#xff1a;链接自身 link&#xff1a;两个顶点有一条边 parallel edges&#xff1a;两个顶点有两条及以上条边 无向图 必要条件&#xff1a;删掉顶点数一定大于等于剩下的顶点数 设无向图G<V,E>是…...

    2024/5/1 12:14:45
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/4 23:54:56
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/4 23:54:56
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/4 23:55:17
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/4 23:55:16
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/4 18:20:48
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/4 23:55:06
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/4 2:59:34
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/4 23:55:01
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57