分层 ,轻量级开源框架,以反转控制(Inverse of Control,IoC)和面向切面编程(Aspect Oriented Programming,AOP)为内核,提供了展现层Spring MVC、持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,整合第三方框架和类库

1、IoC方便解耦,简化开发

通过Spring提供的IoC容器,将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。如不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,更加专注于上层应用;通过框架或IoC容器在对象生成或初始化时注入数据或所依赖对象的引用并管理;可递归;亦称DI(依赖倒置)

将类和类之间的依赖从代码中脱离出来,用配置的方式进行依赖关系描述,由IoC容器负责依赖类之间的创建、拼接、管理、获取等工作

BeanFactory接口是Spring框架的核心接口,BeanFactory的实现和高级形态ApplicationContext应用上下文;Context模块构建于核心模块之上,扩展了BeanFactory的功能,添加了i18n国际化、Bean生命周期控制、框架事件体系、资源加载透明化等多项功能,还提供了许多企业级服务的支持,如邮件服务、任务调度、JNDI定位、EJB集成、远程访问等。ApplicationContext是Context模块的核心接口

ClassPathResource获取配置文件资源(不同来源对应不同实现类),封装为Resource类型后传给读取器的构造器;getBean():通过名字检索容器中管理的Bean;带参数则检索时类型检查

 

2、AOP编程

面向切面编程应对许多不容易用传统面向对象编程(OOP)实现的功能;是进行横切逻辑编程的思想;基于JVM动态代理;集成AspectJ,声明式事务处理;代理对象,拦截器,通知,权限,缓存,错误处理,调试,记录跟踪,持久化,同步,事务,等

3、声明式事务的支持

从编程式事务中解脱,声明式事务灵活地进行事务管理,提高开发效率和质量

4、方便程序测试

5、spring入口:listener;监听器为<listener><listener-class>ContextLoaderListner;<context-param>设置配置文件或配置类(即上下文参数)的位置

6、JDBC/ORM数据访问:提供常用的“对象/关系”映射APIs如Hibernate/MyBatis;封装JDBC如JdbcTemplate模板类(提供数据库操作方法),消除样板式代码

7、Web MVC:springmvc;关联远程调用

=============================================================================================

1、持久层:从数据库表中加载数据并实例化领域对象,或将领域对象持久化到数据表中

2、传统的JDBC API:太底层,即使用户执行一条最简单的数据查询操作,都必须执行如下的过程:获取连接→创建Statement→执行数据操作→获取结果→关闭Statement→关闭结果集→关闭连接,除此之外还需要进行异常处理的操作

3、Spring JDBC:薄层的封装,通过一个模板类org.springframework. jdbc.core.JdbcTemplate封装样板式的代码,用户通过模板类就可以轻松地完成大部分数据访问的操作

4、传统EJB:厚重,编写满足EJB容器规范的EJB组件才能获取服务

5、POJO或JavaBean:最小侵入性(应用开发对接口而非类编程);通过依赖注入和面向接口实现松耦合;基于切面和惯例进行声明式编程;通过切面和模板减少样板式代码

================================================================================================

 

    动态代理:接口与实现类不直接关联,在运行时实现动态关联;基于接口的JDK动态代理:实现InvocationHandler接口并重写invoke();基于类的CGLIB动态代理

 

bean装载后的生命周期

实例化bean

将值和bean的引用注入到bean的属性

根据bean实现的接口调用不同方法(依次)

        BeanNameAware:setBeanName(beanId)

        BeanFactoryAware:setBeanFactory(beanFactory)

        ApplicatonContextAware:setApplicationContext(applicationContext)

bean已就绪,驻留在上下文中供程序使用(工作)

(如果实现DisposableBean)调用destory()和自定义销毁方法

@RequestScope,@SessionScope,@ApplicationScope:定义Bean的生命周期(Bean跟随请求、会话和应用程序的生命周期来创建)

作用域
singletonspring默认单例(无论注入多少次都是同一个实例);使用ThreadLocal保证线程安全;类是易变、会保存状态的则不应为单例
prototype原型每次注入或上下文获取时,都会新生成一个实例(singleton=”false”时)
request每个 http请求都创建一个实例(web环境)
session同一个session共享一个实例,不同的session创建不同实例(web环境)

<scope=””>做<bean>标签属性或bean上使用如@Scope(“prototype”);用类封装的字段常量(如ConfigurableBeanFactory.SCOPE_PROTOTYPE)更安全

request和session作用域的bean有proxyMode属性,即设置代理并延迟加载(当此bean注入到一个单例bean时,单例已经初始化,但此bean还不存在;委托相同功能的代理bean解析和延迟加载,真正调用是才使用此bean);当bean为接口时,值ScopedProxyMode.INTERFACES;当bean为类时,需要使用CGLIB生成代理类,值ScopedProxyMode.TARGET_CLASS;它对应aop命名空间中的标签<aop:scoped-proxy>,默认使用CGLIB创建目标类的代理,属性proxy-targer-class值为false时创建接口的代理

不需要在启动时立即加载bean到容器中,可延迟加载(即等到调用getBean()时初始化):<bean id class lazy-init=”true”/>,对应注解@Lazy(仅针对单例模式)

bean其他属性:

init-method,destroy-method的值为方法名设置启动和关闭时初始方法和销毁方法;基于XML配置的,在getBean()时默认调用了init-method,手动context.destroy()/close();基于自动装配的,方法上使用@PostConstruct和@PreDestroy

factory-method:静态工厂方法,方法中业务一般为new新对象

factory-bean:实例/动态工厂方法,即先构建方法所在类/工厂,由工厂生产方法

 

  • 装配bean:

1、XML显式配置,创建XML文件并以<beans>为根

前几行引入库/模式用来管理xml,如使用标签元素则需要spring-bean模式

<context:component-scan base-package=””>命名空间规定扫描范围

<context:include/ exclude -filter type=”” expression=”….*Dao” />

<bean id=”bean名(一般类名首字母小写)” class=”全限定名”>等同于@Bean,默认beanId为全限定名+”#数字”(计数区分);spring通过默认构造器来创建此bean(不灵活)

setter()参数注入依赖的bean或注入自身field :<property name=”” ref=”引用的beanId”/value=”field字面量”>

可换方案:引入p-命名空间模式,然后做bean标签的属性<bean id class p:参数名-ref=”引用的beanId”>;用参数名不灵活,可用参数索引,第一个为p:_0-ref,只有一个参数时0可省(标识符不以数字开头,加了_);注入field则去掉-ref;无法针对集合参数

 

构造器参数传入依赖的bean或注入自身field:<constructor-arg ref=”引用的beanId”/value=”field字面量”>

可换方案:使用C命名空间,c-作为bean标签的属性;使用方法同上

当参数是集合时子标签<list/set><ref bean=“”“”>/<value>;set无序且忽略重复值

组合:<import resource=”其他配置文件.xml>;<bean class=”其他配置类”>

使用类ClassPathXmlApplicationContext(参数为xml路径)获取context;

2、java显式配置:更解耦和无侵入,类型安全,重构友好

创建被@Configuration修饰的配置类(BeanConfig)

在返回bean对象的方法上使用@Bean表明该对象要声明为上下文中的bean;属性name或重命名方法名为bean命名(默认beanId首字母小写);应用:配合条件如随机数产生并使用各种bean;参数为类.class或配置文件的classpath

当此bean需要依赖其他bean时:

方式1:构造器参数为依赖的bean对象(由对应声明在容器中的bean的@Bean方法返回即去寻找产生bean的地方并使用而不是产生bean;因为默认单例,spring会拦截此方法,直接返回bean)

方式2:依赖的bean直接作方法参数传入,方法体中可使用构造器注入和setter()注入

组合:@Import(其他配置类列表.class);@ImportResource(“classpath:配置文件.xml”)

 

3、bean发现机制(隐式)和自动装配(推荐;而想要装配第三方库中的bean时只能依靠显式)

组件扫描:自动发现上下文中的bean

@Component声明类是一个bean/组件(可具体为@Bean,@Service,@Controller等);属性给bean命名(spring默认给所有bean的ID为类名首字母小写);可换为@Named(来自javaDI规范)

@ComponentScan启用bean发现/扫描(默认不开启;默认扫描基础包为它修饰的类的包及子包;参数可以指定扫描包);属性value或basePackages以字符串形式(类型不安全)指定扫描基础包(数组),或basePackageClasses(如={A.class,B.class})以类/接口形式(安全)

一般主类与扫描装配bean需要解耦,所以新建类NewClass并标注@ComponentScan和@Configuration,主类中调用即可:ApplicationContext context=new AnnotationConfigApplicationContext(NewClass.class/或配置文件的classpath);如此,所有满足的bean都可从context中获取:context.getBean(BeanName.class),重载参数类型可以为类id字符串即<bean>中设置的id,默认为首字母小写的类名;系统默认设置为从0开始的”类完全限定名#0”

 

自动装配/注入/满足依赖

    @Autowired(按类型,spring提供的注解)/@Resource(按名字匹配,java提供的注解)在构造器或者setter()的参数(其实可用在任何方法上)需要引用其他bean时;required属性为false设置bean暂时处于未装配状态(否则若没有匹配的bean,上下文在创建时抛异常;或有多个满足的bean时抛出异常),而后进行null检查;可换为@Inject(来自javaDI规范)

    自动装配的模式:no默认不自动,手动ref;byName通过参数名;byType通过参数的类型,多个bean符合则抛出异常;constructor通过构造器的参数的类型,必须有bean符合;autodetect如果有构造器,则用constructor,否则byType;

    不能装配原生数据类型;模糊装配即没有自定义装配明确

用于构造器上比用于属性上装配效率高,还可用于setter()上或任意有类关联/级联的方法上;有继承或实现的,@Component标注在实现类上,而@Autowired则通常用于接口或父类。所以可能出现红色下划线(但项目依然可运行),表名装配的bean有歧义,不唯一,NoUniqueBeanDefinitionException;可对bean设置为首选@Primary(有局限,在设计时不确实谁是首选);或者@Autowired用于具体实现类;或者对bean标注@Qualifier,参数为bean别名(等同于为@Component指定id参数值),然后在@Autowired下使用@Qualifier(别名/id);不指定id则使用bean默认id即类名首字母小写;JDK自带的注解@Resource(name="id")等同于@Autowired和@Qualifier的作用;基于java显式配置文件的装配,这些注解应用在对应的@Bean下;@Qualifier对应基于XML文件中<bean>的id(唯一)或name(可不唯一)

 复杂类型数组、集合List/Map/Set,都有对应标签<array/list/set/map-entry-key-value>

 

运行时值注入:改善以上(直接value=””)硬编码(通常针对field注入)

1、属性占位符:配置属性源文件,内容一般为key=value列表;它被spring加载到Environment

@PropertySource(“classpath:….properties”)引用属性源

方式1:类中@Autowired注入Environment后使用其方法getProperty(key[,defaultValue])获取value(重载参数还可将String型转为其他类型,略),传给参数(不能传到xml配置中);getRequiredProperty()在文件中没有属性定义时IllegalStateException;boolean containsProperty();getPropertyAsClass()

方式2:占位符${key};在每一个参数前@Value(“${key}”),或xml配置中如c:_name=”${name}”;使用占位符需要配置类PropertySourcePlaceholderConfigurer或配置<context:property-placeholder>/

2、springEL表达式:“#{java代码表达式}”

一般注解用于public方法(如@Transactional用于其他可见度的方法,不会报错但事务设置无效);spring一般对运行时异常进行事务回滚,而checked异常不回滚

依赖检查:注入时判断属性的数据类型是否匹配即能否注入成功;<bean dependency-check=””/>;否则UnsatisfiedDependencyException

none:默认,无检查;simple:基本数据类型和集合类型;objects:检查复合类型;all:全检查

使用@Required的依赖检查:自由配置针对特定属性;两种方式

包含<context:annotation-config/>标签

注册<beans class=”….RequiredAnnotationBeanPostProcessor>

 

  • AOP面向切面编程

横切关注点:散布于应用中的功能(日志、安全和事务管理)

切面Advisor:将横切关注点抽象和模块化

通知advice:切面的工作内容(是什么及何时用)

基于动态代理,入口java.lang.proxy

@Before:方法(即属性指定的切点)执行前执行;对应<aop:before pointcut=”execution(…)” method=”通知方法名”>或<aop:before pointcut-ref=”pointcutId”>;下同;注意xml文件中不能用&&而用and(切点表达式中如果用到);不能阻止方法执行,除非通知中抛出异常

@After:方法之后一定执行;对应<aop:after>

@AfterReturning:方法成功返回后才执行;对应<aop:after-retuining>

@AfterThrowing:抛出异常时执行;对应<aop:after-throwing>

@Around:较复杂,可视为通知方法(由这些注解标注的方法)中实现了前置通知和后置通知;此通知方法必有参数proceedingJoinPoint,在方法体中任意位置通过它的proceed()方法来调用被通知方法(切点),即控制转移,执行完后返回继续执行后边代码;对应<aop:around>

连接点(仅方法级别):能够应用通知的点;

切点pointcut:判断在何处使用及是否织入后的具体连接点

织入:把切面应用到目标对象(的编译期如AspectJ、类加载期、运行期如AOP)并创建代理对象;基于动态代理(代理类包裹了目标对象);限于方法拦截

1、编写advice:

public class Advice { //前置通知 public void beforeAdvice(){ System.out.println("Before"); } //无论是否异常,一定调用此通知 public void afterAdvie(){System.out.println("After");} //出现异常后不再调用此通知 public void afterReturnAdvie(){ System.out.println("AfterReturn"); } //环绕通知:固定写法 public Object aroundAdvie(ProceedingJoinPoint point){ System.out.println("Around-Before"); Object proceed=null; try { proceed = point.proceed(); } catch (Throwable throwable) { throwable.printStackTrace(); } System.out.println("Around-After"); return proceed; } //异常通知:出现异常才调用 public void exceptionAdvie(){ System.out.println("Exeption"); } 
}

 

2、java显式配置:更解耦和无侵入,类型安全,重构友好

创建被@Configuration修饰的配置类(BeanConfig)

在返回bean对象的方法上使用@Bean表明该对象要声明为上下文中的bean;属性name或重命名方法名为bean命名(默认beanId首字母小写);应用:配合条件如随机数产生并使用各种bean;参数为类.class或配置文件的classpath

当此bean需要依赖其他bean时:

方式1:构造器参数为依赖的bean对象(由对应声明在容器中的bean的@Bean方法返回即去寻找产生bean的地方并使用而不是产生bean;因为默认单例,spring会拦截此方法,直接返回bean)

方式2:依赖的bean直接作方法参数传入,方法体中可使用构造器注入和setter()注入

组合:@Import(其他配置类列表.class);@ImportResource(“classpath:配置文件.xml”)

 

3、bean发现机制(隐式)和自动装配(推荐;而想要装配第三方库中的bean时只能依靠显式)

组件扫描:自动发现上下文中的bean

@Component声明类是一个bean/组件(可具体为@Bean,@Service,@Controller等);属性给bean命名(spring默认给所有bean的ID为类名首字母小写);可换为@Named(来自javaDI规范)

@ComponentScan启用bean发现/扫描(默认不开启;默认扫描基础包为它修饰的类的包及子包;参数可以指定扫描包);属性value或basePackages以字符串形式(类型不安全)指定扫描基础包(数组),或basePackageClasses(如={A.class,B.class})以类/接口形式(安全)

一般主类与扫描装配bean需要解耦,所以新建类NewClass并标注@ComponentScan和@Configuration,主类中调用即可:ApplicationContext context=new AnnotationConfigApplicationContext(NewClass.class/或配置文件的classpath);如此,所有满足的bean都可从context中获取:context.getBean(BeanName.class),重载参数类型可以为类id字符串即<bean>中设置的id,默认为首字母小写的类名;系统默认设置为从0开始的”类完全限定名#0”

 

自动装配/注入/满足依赖

    @Autowired(按类型,spring提供的注解)/@Resource(按名字匹配,java提供的注解)在构造器或者setter()的参数(其实可用在任何方法上)需要引用其他bean时;required属性为false设置bean暂时处于未装配状态(否则若没有匹配的bean,上下文在创建时抛异常;或有多个满足的bean时抛出异常),而后进行null检查;可换为@Inject(来自javaDI规范)

    自动装配的模式:no默认不自动,手动ref;byName通过参数名;byType通过参数的类型,多个bean符合则抛出异常;constructor通过构造器的参数的类型,必须有bean符合;autodetect如果有构造器,则用constructor,否则byType;

    不能装配原生数据类型;模糊装配即没有自定义装配明确

用于构造器上比用于属性上装配效率高,还可用于setter()上或任意有类关联/级联的方法上;有继承或实现的,@Component标注在实现类上,而@Autowired则通常用于接口或父类。所以可能出现红色下划线(但项目依然可运行),表名装配的bean有歧义,不唯一,NoUniqueBeanDefinitionException;可对bean设置为首选@Primary(有局限,在设计时不确实谁是首选);或者@Autowired用于具体实现类;或者对bean标注@Qualifier,参数为bean别名(等同于为@Component指定id参数值),然后在@Autowired下使用@Qualifier(别名/id);不指定id则使用bean默认id即类名首字母小写;JDK自带的注解@Resource(name="id")等同于@Autowired和@Qualifier的作用;基于java显式配置文件的装配,这些注解应用在对应的@Bean下;@Qualifier对应基于XML文件中<bean>的id(唯一)或name(可不唯一)

 复杂类型数组、集合List/Map/Set,都有对应标签<array/list/set/map-entry-key-value>

运行时值注入:改善以上(直接value=””)硬编码(通常针对field注入)

1、属性占位符:配置属性源文件,内容一般为key=value列表;它被spring加载到Environment

@PropertySource(“classpath:….properties”)引用属性源

方式1:类中@Autowired注入Environment后使用其方法getProperty(key[,defaultValue])获取value(重载参数还可将String型转为其他类型,略),传给参数(不能传到xml配置中);getRequiredProperty()在文件中没有属性定义时IllegalStateException;boolean containsProperty();getPropertyAsClass()

方式2:占位符${key};在每一个参数前@Value(“${key}”),或xml配置中如c:_name=”${name}”;使用占位符需要配置类PropertySourcePlaceholderConfigurer或配置<context:property-placeholder>/

2、springEL表达式:“#{java代码表达式}”

一般注解用于public方法(如@Transactional用于其他可见度的方法,不会报错但事务设置无效);spring一般对运行时异常进行事务回滚,而checked异常不回滚

依赖检查:注入时判断属性的数据类型是否匹配即能否注入成功;<bean dependency-check=””/>;否则UnsatisfiedDependencyException

none:默认,无检查;simple:基本数据类型和集合类型;objects:检查复合类型;all:全检查

使用@Required的依赖检查:自由配置针对特定属性;两种方式

包含<context:annotation-config/>标签

注册<beans class=”….RequiredAnnotationBeanPostProcessor>

 

  • AOP面向切面编程

横切关注点:散布于应用中的功能(日志、安全和事务管理)

切面Advisor:将横切关注点抽象和模块化

通知advice:切面的工作内容(是什么及何时用)

基于动态代理,入口java.lang.proxy

@Before:方法(即属性指定的切点)执行前执行;对应<aop:before pointcut=”execution(…)” method=”通知方法名”>或<aop:before pointcut-ref=”pointcutId”>;下同;注意xml文件中不能用&&而用and(切点表达式中如果用到);不能阻止方法执行,除非通知中抛出异常

@After:方法之后一定执行;对应<aop:after>

@AfterReturning:方法成功返回后才执行;对应<aop:after-retuining>

@AfterThrowing:抛出异常时执行;对应<aop:after-throwing>

@Around:较复杂,可视为通知方法(由这些注解标注的方法)中实现了前置通知和后置通知;此通知方法必有参数proceedingJoinPoint,在方法体中任意位置通过它的proceed()方法来调用被通知方法(切点),即控制转移,执行完后返回继续执行后边代码;对应<aop:around>

连接点(仅方法级别):能够应用通知的点;

切点pointcut:判断在何处使用及是否织入后的具体连接点

织入:把切面应用到目标对象(的编译期如AspectJ、类加载期、运行期如AOP)并创建代理对象;基于动态代理(代理类包裹了目标对象);限于方法拦截

1、编写advice:

2、编写连接点/切点:advice应用在的地方处

声明一个有f方法的接口A

spring借助AspectJ的切点表达式语言(指示器)来定义切点;常用execution()匹配是连接点的方法,如execution(* 包.A.f(..));*表示不关心返回类型,..表示任意参数;!(not),||(or),&&(and)用于连接指示器;bean()指示器参数为beanId或bean名称,限制切点匹配特定的bean;args(参数名)指示器控制切点方法中的参数到切面里通知方法的参数转移

      

3、织入

<aop:aspect ref=”beanId”>标注类为切面,多个切面可包裹在<aop:advisor>中; 对应@AspectJ

<aop:config>配置将advice织入目标对象/方法:

<aop:pointcut id=”方法名” expression=”execution(…)即目标方法全限定名”>;对应注解@Pointcut():提取连接点/目标方法为切点,形式是一个方法(方法名为切点命名),如@Pointcut(“execution(** 完全限定名.f(..))”) public void fName(){};然后切点应用和重用如@Before(“fName()”),@After(“fName()”)

<aop:sapect ref=”引用的切面/通知类name或id”>

   <aop:before/… method=”before/…” pointcut-ref=”引用的pointcut的id>

注解方式:@After,@AfterReturning,@AfaterThrowing,@Around,@Before等声明方法为通知,属性为切点(即在切点前/后调用通知);@Pointcut()提取连接点为切点,形式是一个方法(方法名为切点命名),如@Pointcut(“execution(** 完全限定名.f(..))”) public void fName(){};然后切点应用和重用如@Before(“fName()”),@After(“fName()”);对应<aop:pointcut id=”方法名” expression=”execution(…)”>

启用切面/代理:

@EnableAspectJAutoProxy标注配置类启用自动代理功能;对应<aop:aspectj-autoproxy>;类上@Aspect将切面声明为bean;spring使用此bean创建一个代理

以上是用切面对方法进行功能扩充;还可利用切面对对象扩充方法,@DeclareParents,略

           <bean id class=”….ProxyFactoryBean”>

<property name=”target” ref=”拦截的bean”>//拦截有顺序

<property name=”interceptorName[s] value=”被代理的bean/通知”>

-> getBean(代理类)

以上对所有方法都通知了;可指定切点(不推荐使用配置,而使用AspectJ支持即@对应的通知类型注解):名称匹配或者正则表达式匹配

开启注解支持<aop:aspectj-auroproxy/>;注解参数excution匹配完整通知路径;注解对应老版本配置<aop:config><aop:aspect><aop:pointcut><aop before>…

           由于在每个方法前写@Before(...)...等比较繁琐,将他们抽离出来形成切点方法:

 

@Pointcut(…)

public void pointcut(){…}

然后@Before(“类.pointcut()”)

 

特殊切面之事务管理/拦截器:封装了在数据库层面实现的事务

声明式事务:方法级别

编程式事务:重复且复杂,Bean上使用注解@Transactional开启支持

顶层事务管理器:PlatformTransactionManager;定义方法getTransaction()开启事务,rollback()回滚,commit()提交

消除JDBC的自动提交(不能回滚):connection.setAutoCommit(false);所有sql执行完后commit();异常时rollback()

事务名称空间支持:spring-tx.xsd;配置事务管理器DataSourceTransactionManager管理数据源;设置事务通知advice:<tx:advice>,包括事务传播行为

注解方式:

springAOP拦截器只能拦截spring管理Bean的访问service

@EnableTransactionManagement:开启事务管理

@Transactional:开启事务;它的属性设置事务的传播性(由TransactionDefinition接口中的常量定义),隔离性,回滚条件;默认与数据库一致

@TransactionalEventListener:配置事务的回调方法

      

       特殊切面之日志记录:

           配置log4j.properties并设置日志级别为info,将日志输入到控制台和指定文件,;编写切面类LogAspect,通过连接点类ProceedingJoinPoint获取目标类名和方法,调用LOG.info()记录进入方法时日志信息,peoceed()被try-catch,且LOG.error记录异常信息;配置aop-config

   

数据缓存

启用缓存支持:@EnableCaching标注配置类;对应<cache:annotation-driver>;工作方式:它们会创建aspect并触发缓存pointcut,aspect从缓存中添加和提取数据

 

配置类中配置缓存管理器bean(@Bean标注返回这些对象的方法):

ConcurrentMapCacheManager:基于内存(生命周期随应用)

SimpleCacheManage:

NoOpCacheManager:

CompositeCacheManager:

EhCacheCacheManager:

RedisCacheManager:SpringDataRedis提供

CompostiteCacheManager构建List,迭代使用多个管理器

缓存设置:

不同缓存方式对应不同标签和配置;<ehcache><cache name=”缓存名” maxBytesLocalHeap=”最大堆存储” timeToLiveSeconds=”存活时间”>

 

使用缓存:

@Cacheable:标注的方法调用之前,从缓存查找方法返回值;无则方法调用并将值存储到缓存;常用于频繁请求如findOne();<cache-cacheble>

@CachePut:不检查缓存,方法始终被调用,值存放到缓存;<cache:cache-put>

共有属性:cache;value缓存名;condition是否将缓存应用到方法调用上,springel表达式,不应用则不查找也不缓存;key通过key查找,如通过id查找的方法,key为传递到方法的id参数,springel表达式自定义key略;method;unless是否将返回值存放缓存(true为不放),之前会从缓存查找

@CacheEvict:在缓存中清除值;常用于remove();<cache:cache-evict>

@Caching:缓存注解的组合;<cachechching>

可用于类上(对所有方法作用)

以上标签被包裹于<chche:advice>:定义缓存通知,配合<aop:advisor advice-ref=”adciveId” pointcut>将通知应用到切点

 

spring+JDBC

数据访问对象DAO实现/委托Repository接口;spring提供大量继承自DataAccessException的数据库操作异常体系;spring根据数据的固定和可变,将类分为模板和回调;模板类如JdbcTemplate处理数据访问的固定部分(事务管理,资源管理和异常处理);回调实现数据访问(语句,参数绑定,处理结果集)

  • 配置数据源

JNDI数据源:

此种配置让数据源在应用程序之外进行处理,仅在访问时查找即可;JndiObjectFactoryBean实现查找dataSource;对应jee命名空间<jee:jndi-lookup id=”dataSource” jndi-name=”源名” resource-ref=”true”>检索任何JNDI对象及数据源

JDBC数据源(每次请求都会新建连接,费性能):spring自带的DriverManagerDataSource/SimpleDriverDataSource/SingleConnectionDataSource(单线程)

连接池数据源(推荐):DBCP/c3p0/JDBC的

<bean id class=”….dbcp.BasicDataSource””>

<driverClassName,url,username,password,initalSize,maxActive…>对应实现java类及setter()

       嵌入式数据库

@Profile()运行时选择数据源;属性值”development”使用开发数据源;”qa”QA数据源;”production”生产环境数据源;对应<bean profile=””>

 

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

相关文章

  1. 大数据在智慧社区的作用有哪些

    大数据是基于管理或商业目的,按照目标要求进行收集、整理、加工和分析数据,从庞杂的各类数据中提炼有效信息的一个过程。对于企业来说,可以提高企业效率,降低运营成本。智慧社区建设是现在的一大热点,通过打造智慧社区为居民提供便利,从而加快和谐社区建设,推动区域社会进步…...

    2024/4/9 19:02:50
  2. 如何选择高性价比的报表工具

    我们在实际项目中选择报表工具时,除了关心功能是否能够满足需求,也会非常关心产品价格,即报表工具在项目中的应用成本,包括购买工具的花费和投入的人力成本,也就是我们经常提到的“性价比”。面对琳琅满目的报表工具以及厂商包装出来各种“高大上”的功能,想要“选对”,…...

    2024/4/28 6:50:43
  3. 使用Scratch 3.0制作弹球游戏之需求分析

    根据项目要求做出需求分析 首先,我们看一下项目要求通过项目要求,我们可以分析出,这个项目中需要实体对象有: 弹球 |(功能)弹球匀速移动 碰触边缘墙壁和挡板反弹 碰触到障碍物得分+1(障碍物关联) 可以分裂数量增加(道具挡板关联) 根据关卡难度递增速度加快 与指定对象…...

    2024/4/28 4:41:08
  4. 利用python编写爬虫程序,从招聘网站上爬取数据,将数据存入到MongoDB数据库中,将存入的数据作一定的数据清洗后做数据分析,最后将分析的结果做数据可视化

    教程演示创建爬虫项目编写需要爬取的字段(items.py)编写spider文件(wuyou.py)编写数据库连接(pipelines.py)编写反爬措施(settings.py)MongoDB数据库的安装软件下载数据测试本人已经爬取了一部分数据,分享出来供大家测试配置Linux环境在这里本人使用的资源都会发布出来…...

    2024/4/27 12:23:42
  5. DOS命令与Linux

    1,开始-运行或win+R后输入cmd:进入dos界面;命令不严格区分大小写(区别于Linux命令)2,命令 + /?:显示命令的意义和使用方法,参数选项3、定时关机:win+R弹出命令框:shutdown -r -t +时间(秒)4、上下箭头:快速定位到上下一个输入过的命令;右键-标记,左键选中即可复…...

    2024/4/27 23:20:28
  6. 从零教你搭建阿里云托管版k8s集群(一)

    预备知识:对k8s的运行原理有一定了解对阿里云的eip,snat和基本网络知识有一定了解,熟悉linux操作 ### 准备条件两台及以上ecs服务器阿里云账户余额100元以上(阿里云要求)阿里云oss一个(oss和ecs在一个区域最好,目前40g一年才9块钱,足够用)首先阿里云创建k8s集群要求至…...

    2024/4/28 8:51:46
  7. Observability:使用 Elastic Agent 和 Ingest Manager 简化数据导入 (一)

    在 Elastic 7.8 版本的发布中,我们很高兴地宣布一项重大改进,该改进将使将数据发送到 Elastic Stack 变得更加容易。 首先,我们将启动我们的 Elastic Agent 的实验版本,这是一个统一的代理,可简化安装和管理。其次,我们将启动 Ingest Manager,这是 Kibana 中的新应用程序…...

    2024/4/26 5:54:33
  8. 2020牛客暑期多校训练营(第二场)Cover the Tree

    Cover the Tree 题目大意: 给定一个无根树,你需要选择最少数量的链,使得树上的所有边都被至少一条链覆盖。输出最少数量,和对应的解。如果有多解,输出任意一个即可。** 输入: 第一行:n (1≤n≤210^5) 接下来n-1行每行包含两个整数u,v(1 ≤u < v ≤n)表示节点u和v之间…...

    2024/4/9 19:02:41
  9. HRS_Ecosystem内置模块介绍3

    续HRS_Ecosystem内置模块介绍2 hrsconnect.functions.curve_functions 该模块提供多种获取/设置方法,用于访问/修改1D,Text,2D,2D-Image,Core-Data曲线类型的曲线数据。 create_well def create_well(well_name, x=0.0, y=0.0, kb_elev=0.0, surf_elev=0.0, unit=m, well_…...

    2024/4/27 16:44:51
  10. 继续畅通工程【浙江大学复试上机题】【并查集+Kruskal算法】

    题目描述省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的…...

    2024/4/23 16:23:09
  11. Unity 根骨骼动画出错时的排查点

    转载自: 阿里云社区. 1.查看模型的rig:如果采用Generic方法,Rig里面一定要看Root node设置的是否正确,如果使用generic方法,这就是每帧计算出来的赋予一个位移的根骨骼 2.查看动作的rig:看看是否共用了模型的那个avatart 3.查看动作的animation设置:在xz/Y/rotation上分别…...

    2024/4/27 19:41:13
  12. ST意法半导体2020新方案:低功耗+人机交互+无线

    ST意法半导体在2020年慕尼黑上海电子展发布的低功耗+人机交互+无线最新方案 详情:https://www.icxbk.com/download/detail/48879.html...

    2024/4/26 0:43:46
  13. STL学习总结(1)

    STL学习总结(1)一、STL基本语法二、string容器string的初始化赋值操作取值操作拼接操作查找操作string替换string比较大小子串操作插入和删除三、vector容器初始化常用赋值操作大小操作vector存取数据插入和删除swap缩减空间reserve与resize的区别 STL(Standard Template Lib…...

    2024/4/24 10:50:33
  14. IntelliJ IDEA、Eclipse使用教程

    快速搭建一个maven-webapp项目:前提:环境已经安装JDK,Maven,Tomcathttps://www.cnblogs.com/yjd_hycf_space/p/7483921.html前提:已安装本地tomcat并配置:1、新建maven模板项目:2、配置本地maven:3、整合Tomcat:(maven标准目录:在main下新建java和resources目录,并…...

    2024/4/18 4:00:10
  15. Hadoop相关常去的网站

    转载:https://blog.csdn.net/weixin_30569033/article/details/98406863学习hadoop常去网址; hadoop邮件列表信息查询http://www.search-hadoop.com 简介:hadoop邮件列表都是hadoop用户和开发者的提问和讨论的邮件列表,里面大量问题,和解决方案,可以帮助自己解决工作中遇…...

    2024/4/27 1:46:18
  16. 数学建模学习记录——聚类算法

    数学建模学习记录——聚类算法一、聚类分析的一些概念数据的一般的格式样品与样品之间的常用距离(样品i与样品j)指标与指标之间的常用“距离”(指标i与指标j)类与类之间的常用距离二、K-means聚类算法K-means聚类算法概述:K-means++聚类算法Spss的聚类分析三、系统(层次)…...

    2024/4/9 18:52:44
  17. Element UI 回到顶部el-backtop组件的教程或问题

    el-backtop组件使用 <template><div class="container"><div style="height:800px;">...//主要内容</div>//回到顶部组件 target:回到指定类的顶部 visibility-height:滚动长度<el-backtop target=".container" vi…...

    2024/4/28 2:52:41
  18. maven,tomcat详解

    https://www.cnblogs.com/whgk/p/7112560.htmlhttps://juvenshun.iteye.com/blog/213959 Maven:基于项目对象模型(POM),通过一小段描述信息来管理项目的构建、报告、和文档的软件项目管理工具。核心功能是合理叙述项目之间的依赖关系。1、安装Maven:- 前提是环境已安装JD…...

    2024/4/20 8:18:08
  19. 仿电商App:笔记(六): 登录、注册功能开发(ORM框架-GreenDao)

    目录1、注册UI及验证逻辑实现1.1 注册页面逻辑实现1.2 验证效果2、登录UI及验证逻辑实现2.1 登录页面逻辑实现2.2 验证效果3、服务器数据简单介绍与基于GreenDao的数据库框架设计3.1 使用Apache+PHP搭建服务器,读取本地的json数据3.2 数据持久化--GreenDAO(使用单例模式确保操…...

    2024/4/28 0:00:49
  20. mysql使用存储过程&函数实现批量插入

    以下是我为了自己学方便建的笔记,都是在其他博主的主页下看到的,自学笔记,有不对的可以指出表结构如下:create table dept(id int unsigned primary key auto_increment,// ID列为无符号整型,该列值不可以为空,并不可以重复,而且自增。 deptno mediumint unsigned not …...

    2024/4/9 19:02:33

最新文章

  1. C++(Qt)软件调试---crashpad捕获崩溃(19)

    C(Qt)软件调试—crashpad捕获崩溃&#xff08;19&#xff09; 文章目录 C(Qt)软件调试---crashpad捕获崩溃&#xff08;19&#xff09;1、概述2、资源地址3、配置环境4、解决报错5、测试代码6、测试结果7、Qt中使用crashpad 更多精彩内容&#x1f449;个人内容分类汇总 &#x…...

    2024/4/28 14:28:29
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. Vue通过自定义指令实现元素平滑上升的动画效果(可以自定义动画时间、动画效果、动画速度等等)。

    1、演示 2、介绍 这个指令不是原生自带的&#xff0c;需要手动去书写&#xff0c;但是这辈子只需要编写这一次就好了&#xff0c;后边可以反复利用。 3、关键API IntersectionObserver IntersectionObserver 是一个用于监测元素是否进入或离开视口&#xff08;viewport&#x…...

    2024/4/27 19:01:10
  4. 【C++】类和对象①(什么是面向对象 | 类的定义 | 类的访问限定符及封装 | 类的作用域和实例化 | 类对象的存储方式 | this指针)

    目录 前言 什么是面向对象&#xff1f; 类的定义 类的访问限定符及封装 访问限定符 封装 类的作用域 类的实例化 类对象的存储方式 this指针 结语 前言 最早的C版本&#xff08;C with classes&#xff09;中&#xff0c;最先加上的就是类的机制&#xff0c;它构成…...

    2024/4/28 12:13:12
  5. AI:150-基于深度学习的医学数据挖掘与病症关联发现

    AI&#xff1a;150-基于深度学习的医学数据挖掘与病症关联发现 1.背景介绍 随着医疗信息化的发展&#xff0c;医学数据呈现爆炸式增长。这些数据包括电子病历、医学影像、基因测序等。如何从这些海量数据中挖掘出有价值的信息&#xff0c;发现疾病之间的关联&#xff0c;对于…...

    2024/4/26 21:21:54
  6. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/4/28 4:04:40
  7. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/4/28 12:01:04
  8. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/4/27 12:24:35
  9. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/4/27 12:24:46
  10. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/4/28 12:01:03
  11. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/4/28 12:01:03
  12. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/4/28 12:01:03
  13. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/4/27 12:44:49
  14. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/4/27 21:08:20
  15. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/4/28 9:00:42
  16. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/4/27 18:40:35
  17. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/4/28 4:14:21
  18. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/4/27 13:52:15
  19. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/4/27 13:38:13
  20. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/4/28 12:00:58
  21. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/4/28 12:00:58
  22. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/4/27 22:51:49
  23. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/4/28 7:31:46
  24. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/4/28 8:32:05
  25. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/4/27 20:28:35
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

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

    2022/11/19 21:17:18
  27. 错误使用 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
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

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

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

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

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

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

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

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

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

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

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

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

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,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
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2022/11/19 21:16:58
  45. 如何在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