org.springframework.context.support.ClassPathXmlApplicationContext.ClassPathXmlApplicationContext

合集下载

SpringBoot基于GraalVM构建

SpringBoot基于GraalVM构建

SpringBoot基于GraalVM构建背景容器化、函数式、低代码、云原⽣各种概念和技术层出不穷,⽆奈,与时俱进,跟进研究,发现 Quarkus 最近⽐较⽕爆,抽空研究了⼀下,这就引出了本⽂的猪脚: ,⼝号是:Run Programs Faster Anywhere简介GraalVM Native Image是由Oracle Labs开发的⼀种AOT编译器,⽀持基于JVM的⾼级语⾔,如Java, Scala, Clojure, Kotlin。

Native Image以Java bytecode作为输⼊,将所有应⽤所需的class依赖项及runtime库打包编译⽣成⼀个单独可执⾏⽂件。

具有⾼效的startup及较⼩的运⾏时内存开销的优势。

与传统的Java虚拟机不同,Native Image是封闭式的静态分析和编译,不⽀持class的动态加载,程序运⾏所需要的多有依赖项均在静态分析阶段完成。

此外GraalVM Native Image运⾏在⼀个名为SubstrateVM的轻量级的虚拟机之上。

虽说是轻量级虚拟机,SubstrateVM却拥有运⾏Java程序所必需的所有组件,包括deoptimizer、gc及thread scheduling等。

⽬前GraalVM Native Image并没有完全⽀持多有的Java动态特性,如不⽀持class动态加载。

感兴趣的童鞋可以点击去看看,这⾥就不过多介绍了。

本⽂不涉及 GraalVM 的安装和部署,只实践 SpringBoot 基于 GraalVM 的构建SpringBoot 从 2.3 开始,已经⽀持 GraalVM 打包。

⽬标构建⼀个基本的 SpringBoot 项⽬分别使⽤普通 jar 和 Native-image ⽅式打包,对⽐资源占⽤情况。

搭建基础项⽬⽤你熟悉的⼯具搭建⼀个基本的 SpringBoot 项⽬@Data@Accessors(chain = true)public class CatDTO implements Serializable {private String id;private String name;private Integer age;}实现基本增删改查 API(模拟)@RestController@Slf4j@RequestMapping("/cats")public class CatController {@PostMappingpublic CatDTO save(@RequestBody @Validated CatDTO param) {return param;}@DeleteMapping("/{id}")public ResponseEntity delete(@PathVariable String id) {return ResponseEntity.ok("Success" + id);}@PutMappingpublic CatDTO update(@RequestBody @Validated CatDTO param) {return param;}@GetMappingpublic ResponseEntity list(CatDTO param, Pageable page) {return ResponseEntity.ok("列表查看");}@GetMapping("/{id}")public CatDTO getById(@PathVariable String id) {return new CatDTO();}}其他代码省略,感兴趣的童鞋请参考 :打包运⾏打包$ ./mvnw package运⾏$ cd target$ java -jar graalvm-demo-0.0.1-SNAPSHOT.jar留意⼀下启动时间,我本机的是:。

附:上机错误汇总

附:上机错误汇总

1.sqlserver 2000 如何修改sa登陆密码?操作步骤如下:1)打开企业管理器,依次展开服务器组,然后展开服务器。

2)打开“安全性”文件夹,单击“登录”,然后用右键单击“Sa”,执行“属性”命令。

3)弹出“SQL Server登录属性”对话框,在“SQL Server身份验证”密码栏,输入最新密码。

4)单击“确定”按钮,弹出“确认密码”对话框,再输一遍登录密码。

5)单击“确定”按钮,完成对Sa登录密码的修改。

2.修改配置文件需要将项目redeploy3.重新发布工程,出现The web application [/login] registered the JDBC driver[com.microsoft.jdbc.sqlserver.SQLServerDriver] but failed to unregister it when the webapplication was stopped. To prevent a memory leak, the JDBC Driver has been forciblyunregistered原因:tomcat版本问题,换个低版本的。

4.The requested resource (/s2sh/find) is not available,即找不到对应的action原因:将<form action=”find”>修改为<form action=”find.action”>,必须加后缀,而且是在form中加,而不要跑到struts.xml中加。

另外还与可能时间的问题,等一会访问。

5.java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.原因:SQL SERVER服务器没开启6.javax.servlet.ServletException:org.springframework.orm.hibernate3.HibernateQueryException: Student is not mapped.[from Student as s where s.number=?]; nested exception isorg.hibernate.hql.ast.QuerySyntaxException: Student is not mapped.原因:hql语句写错了,实体类时Students而不是Student7.javax.servlet.ServletException:org.springframework.orm.hibernate3.HibernateQueryException: could not resolve property: number of: com.school.domain.Students [from com.school.domain.Students as s wheres.number=?]; nested exception is org.hibernate.QueryException: could not resolve property: number of: com.school.domain.Students [from com.school.domain.Students as s wheres.number=?]org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)原因:number是属性,这里将属性写错了,在Students实体类中属性被定义为snumber。

Spring简单实例

Spring简单实例

Spring 实例入门本文结合实例理解解容器,DI,IOC,耦合,解耦等Spring所涉及的概念,同时了解Spring 的最基本也是最核心的使用方法。

1.Spring容器Spring容器负责对象的实例化,对象生命周期的管理,被Spring管理的对象称之为Bean。

Spring默认使用单例的方式创建对象。

可以通过修改<bean>的配置改变成其它创建方式。

这个属性为Scope,称之为作用域或生命周期,它的值为singleton(单例,默认值),prototype2.注入方式有setter注入,构造注入方式,接口注入(不需掌握)。

建议多使用Setter注入方式。

Setter注入:Soldier类中有一个属性name,如何在创建Soldier的时候使name的值变为”RANBO”?配置如下:这样创建的Soldier对象的name属性就有值了,测试代码:构造注入:配置如下:测试结果同上。

3.依赖当A对象使用了B对象的方法,A对B产生依赖,称之为A依赖B。

下面的例子中Soldier当HandGun发生变化时,必然导致Soldier必须做相应修改,同时,当Soldier需要使用OtherGun时也必须重新编写代码,导致代码重用度不高。

当对象之间的依赖关系很强时(耦合),会使程序代码死板,不利于后期的维护和扩展。

降低对象之间的依赖关系称之为解耦。

Spring能够很好的解决这一问题。

4.控制反转(Inversion of Control,简称IOC)和依赖注入(Dependence Inject简称DI)我们运用Spring的setter注入方式解决HandGun和Soldier的耦合问题。

修改Soldier的代码,将HandGun定义为Soldier的属性并提供setter方法:package com.hb;/***士兵类*/public class Soldier {private HandGun handGun;public void setHandGun(HandGun handGun) {this.handGun = handGun;}/***打仗*/public void fight(){handGun.killEnemy();}}配置如下己去实例化HandGun了。

Spring考试

Spring考试

• 1.(单选题)下列关于Spring配置文件的说法不正确的是o A.Spring默认是读取/WEB-INF/applicationContext.xml配置文件o B.Spring的配置文件可以配置在类路径下,并可以重命名,但是需要在web.xml 文件中指定o C.把applicationContext.xml文件放到src目录下,Spring也可以读到o D.可以通过在web.xml中的<context-param><param-name>和<param-value>进行指定Spring配置文件Dlgtq。

正确答案:C把applicationContext.xml文件放到src目录下,需要在web。

xml里设置<context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/classes/applicationContext.xml</param-value>0jpk 7。

</context-param>可以让spring读到• 2.(单选题)下列关于Spring特性中IoC描述错误的是o A.IoC就是指程序之间的关系由程序代码直接操控o B.所谓“控制反转”是指控制权由应用代码转到外部容器,即控制权的转移o C.IoC将控制创建的职责搬进了框架中,从应用代码脱离开来o D.使用Spring的IoC容器时只需指出组件需要的对象,在运行时Spring的IoC 容器会根据XML配置数据提供给它7Jtg8。

正确答案:AIOC是来完成相互依赖的对象的创建、协调工作。

• 3.(单选题)下列关于Spring的装配模式(default-autowire)描述不正确的是o A.Spring中,至少有两种装配模式,按“类型”和“名字”o B.Spring中默认是按名字进行装配的o C.可以用default-autowire=”byType”配置按类型装配o D.一旦在一个Spring配置文件中配置了default-autowire=”byType”,其它的配置文件也是按此种装配方式进行装配ADtbu。

Unabletoloadio.netty.resolver.dns.macos.MacOS。。。

Unabletoloadio.netty.resolver.dns.macos.MacOS。。。

ty.resolver.dns.macos.MacOS。

I'm upgrading my Spring Boot version from 2.1.x to 2.4.2/2.4.3 and using Redisson as Redis Client in the project. When I compiled and run the code, I got the following warning:2021-03-02 09:05:55.081 INFO 24460 --- [ main] org.redisson.Version : Redisson 3.12.52021-03-02 09:05:55.118 WARN 24460 --- [ main] i.n.r.d.DnsServerAddressStreamProviders : Unable to load ty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults. This may result in incorrec ng.ClassNotFoundException: ty.resolver.dns.macos.MacOSDnsServerAddressStreamProviderat .URLClassLoader.findClass(URLClassLoader.java:382) ~[na:1.8.0_261]at ng.ClassLoader.loadClass(ClassLoader.java:418) ~[na:1.8.0_261]at uncher$AppClassLoader.loadClass(Launcher.java:355) ~[na:1.8.0_261]at ng.ClassLoader.loadClass(ClassLoader.java:351) ~[na:1.8.0_261]at ng.Class.forName0(Native Method) ~[na:1.8.0_261]at ng.Class.forName(Class.java:348) ~[na:1.8.0_261]at ty.resolver.dns.DnsServerAddressStreamProviders$1.run(DnsServerAddressStreamProviders.java:50) ~[netty-resolver-dns-4.1.59.Final.jar:4.1.59.Final]at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_261]at ty.resolver.dns.DnsServerAddressStreamProviders.<clinit>(DnsServerAddressStreamProviders.java:46) ~[netty-resolver-dns-4.1.59.Final.jar:4.1.59.Final]at org.redisson.connection.MasterSlaveConnectionManager.<init>(MasterSlaveConnectionManager.java:211) [redisson-3.12.5.jar:3.12.5]at org.redisson.connection.MasterSlaveConnectionManager.<init>(MasterSlaveConnectionManager.java:163) [redisson-3.12.5.jar:3.12.5]at org.redisson.connection.SingleConnectionManager.<init>(SingleConnectionManager.java:34) [redisson-3.12.5.jar:3.12.5]at org.redisson.config.ConfigSupport.createConnectionManager(ConfigSupport.java:197) [redisson-3.12.5.jar:3.12.5]at org.redisson.Redisson.<init>(Redisson.java:64) [redisson-3.12.5.jar:3.12.5]at org.redisson.Redisson.create(Redisson.java:104) [redisson-3.12.5.jar:3.12.5]at org.redisson.spring.starter.RedissonAutoConfiguration.redisson(RedissonAutoConfiguration.java:172) [redisson-spring-boot-starter-3.12.5.jar:3.12.5]at org.redisson.spring.starter.RedissonAutoConfiguration$$EnhancerBySpringCGLIB$$43a1494c.CGLIB$redisson$1(<generated>) [redisson-spring-boot-starter-3.12.5.jar:3.12.5]at org.redisson.spring.starter.RedissonAutoConfiguration$$EnhancerBySpringCGLIB$$43a1494c$$FastClassBySpringCGLIB$$164643ff.invoke(<generated>) [redisson-spring-boot-starter-3.12.5.jar:3.12.5]at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) [spring-core-5.3.4.jar:5.3.4]at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) [spring-context-5.3.4.jar:5.3.4]at org.redisson.spring.starter.RedissonAutoConfiguration$$EnhancerBySpringCGLIB$$43a1494c.redisson(<generated>) [redisson-spring-boot-starter-3.12.5.jar:3.12.5]at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_261]at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_261]at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_261]at ng.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_261]at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) [spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) [spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:486) [spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1334) [spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177) [spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564) [spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) [spring-beans-5.3.4.jar:5.3.4]at mbda$doGetBean$0(AbstractBeanFactory.java:335) [spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) [spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) [spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1380) ~[spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1300) ~[spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:657) ~[spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) ~[spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) ~[spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) ~[spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1413) [spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:601) [spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) [spring-beans-5.3.4.jar:5.3.4]at mbda$doGetBean$0(AbstractBeanFactory.java:335) [spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) [spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) [spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1380) ~[spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1300) ~[spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:657) ~[spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) ~[spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) ~[spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) ~[spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1413) [spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:601) [spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) [spring-beans-5.3.4.jar:5.3.4]at mbda$doGetBean$0(AbstractBeanFactory.java:335) [spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) [spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) [spring-beans-5.3.4.jar:5.3.4]at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944) ~[spring-beans-5.3.4.jar:5.3.4]at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:917) ~[spring-context-5.3.4.jar:5.3.4]at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:582) ~[spring-context-5.3.4.jar:5.3.4]at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) ~[spring-boot-2.4.3.jar:2.4.3]at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767) ~[spring-boot-2.4.3.jar:2.4.3]at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) ~[spring-boot-2.4.3.jar:2.4.3]at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426) ~[spring-boot-2.4.3.jar:2.4.3]at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) ~[spring-boot-2.4.3.jar:2.4.3]at org.springframework.boot.SpringApplication.run(SpringApplication.java:1311) ~[spring-boot-2.4.3.jar:2.4.3]at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300) ~[spring-boot-2.4.3.jar:2.4.3]at com.zkh360.Application.main(BossDataSyncApplication.java:18) ~[classes/:na]However, my code continues to run and to use Redis in my machine. When I deploy the project to DEV environment which is in AWS and CentOS machine, there is no suchwarning message in the logs. I suspect that there is an incompatibility issue between Spring Boot and Redisson in MacBook when resolving DNS for Redis because when Idowngraded Spring Boot to 2.4.1, no warning messages occurred.To solve this problem, you can add this dependency:<dependency><groupId>ty</groupId><artifactId>netty-all</artifactId></dependency>。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档