A. spring boot和maven的约定大于配置体现在哪些方面
Spring
Boot充分利用了JavaConfig的配置模式以及“约定优于配置”的理念,能够极大的简化基于Spring
MVC的Web应用和REST服务开发
B. 约定优于配置是什么意思
约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。
本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为Sale的类,那么数据库中对应的表就会默认命名为sales。只有在偏离这一约定时,例如将该表命名为"procts_sold",才需写有关这个名字的配置。
C. ant与maven的区别
各有长处
maven可以管理整个项目声明周期,很适于管理大型项目。an则主要处理编译部署的问题。maven崇尚约定大于配置,因此配置文件很简单,ant则主要考配置,但是ant的文件操作我觉得比maven强。
maven有大量插件可以用,基本上只有你想不到的没有你找不到的。
D. react script 编译配置
创建一个index.html文件,并且在这个文件中引入main.js的javascript程序文件,我们要做的就是编译生成main.js的javascript文件。
二、在webpack.config.js文件中设置一个html插件的实例对象,
并制定的打包入口文件为index.html
在创建打包的配置对象的时候,传入这个html插件的实例对象
下面是webpack.config.js文件中的配置
(1) 创建html插件的实例对象,并指定webpack的打包入口文件,约定大于配置,默认入口文件是index.js
(2) 创建webpack打包的配置信息,传入上一步创建好的html插件对象
(3) 设置webpack打包的时候是否需要进行压缩
(4) 设置webpack打包时的调试模式source-map
(5) 设置第三方模块的配置规则,设置jsx文件的编译包为babel-loader
设置scss文件的编译包为style-loader,并且开启css模块化
设置css文件的编译包为style-loader
E. springboot学习成本高吗
学习成本高。
先了解Spring Boot的思想、理念、然后跟着小示例去实践。
Spring Boot 是一套全新的框架,它来自于 Spring 大家族,因此 Spring 所有具备的功能它都有,而且更容易使用;Spring Boot 以约定大于配置的核心思想,默认帮我们进行了很多设置,多数 Spring Boot 应用只需要很少的 Spring 配置。Spring Boot 开发了很多的应用集成包,支持绝大多数开源软件,让我们以很低的成本去集成其它主流开源软件。
F. Java语言开发奖助学金系统用什么框架简单
框架只是辅助,什么框架都是可以完成项目的,看你自己对什么框架比较熟,不过要我建议的话,我推荐使用ssm(Spring+SpringMVC+MyBatis)
为什么要使用ssm?
减少编码
好的开发框架编写了大量的基础功能,程序员将工作重心放在业务逻辑上的实现。比如spring简化了java程序对数据库的访问,提高了数据库的访问效率和稳定性,程序员只需要写好sql就行了。
规范性,重用性
开发框架使用了很多设计模式,比如mvc,在编写代码的时候程序员可以遵循mvc的模式,编写Controller,entity,view对应的代码
易扩展,易维护
mybatis实现了对数据库的封装,当程序从oracle转向mysql时,不需要改动太多的地方,就能很方便的完成转变。
规范化编码,对维护性来说,方便了后续人员对代码的理解和修改
ssm当然具备了以上三种优势,尤其是从springMvc转变spring boot之后,约定大于配置,进一步简化了繁琐的配置工作,编写代码如丝滑般顺滑。
如对ssm想要有更深的了解 请移步:网页链接
希望对你有所帮助,欢迎关注私信跟我探讨java
G. boot自动配置的原理
Spring Boot是基于Spring开发的,是约定大于配置的核心思想。并且集成了大量的第三方库配置比如redis、mongoDB、jpa等。Spring Boot就相当于maven整合了所有jar包,Spring Boot整合了所有框架。其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程,并不少什么新的框架。
二、Spring Boot优点
优点其实就是简单、快速
快速创建独立运行的Spring项目以及主流框架集成
使用嵌入式的server容器,应用无需打成WAR包
starters自动依赖与版本控制
有大量的自动配置,简化开发
准生产环境运行应用监控
与云计算的天然集成
Spring Boot主程序分析
//@SpringBootApplication标注这个类是一个Springboot的应用@{publicstaticvoidmain(String[] args){//将Springboot应用启动 SpringApplication.run(Springboot02DemoApplication.class, args);}}
SpringBootApplication源码剖析,进入源码,结果发现其实它是一个组合注解
第一个SpringBootConfiguration注解:@SpringBootConfiguration-->是Spring Boot配置类。下面有一个叫@Configuration:它是配置类,下面又有@Component,其实它就是一个注入组件。
第二个@EnableAutoConfiguration注解:是开启自配配置功能
@AutoConfigurationPackage//自动配置包
@Import(.class)
public @interface EnableAutoConfiguration {}
@AutoConfigurationPackage:自动配置包,使用@Import(.class)注解来完成的,它是spring boot底层注解,作用是给容器中导入组件。
自动配置原理
(1)Spring Boot启动的时候首先加载主配置类,开启啦自动配置的功能(@EnableAutoConfiguration)
(2)自动配置功能@EnableAutoConfiguration的作用:它是利用了
@Import(.class)给容器中导入一些组件。那么,他会给我们导入哪些组件呢?进入源码看一下部分源码如下。
//@EnableAutoConfiguration注解
@AutoConfigurationPackage
/@Import(.class)
public @interface EnableAutoConfiguration
@Import(.class)自动配置导入选择
public class implements DeferredImportSelector, BeanClassLoaderAware,
ResourceLoaderAware, BeanFactoryAware, EnvironmentAware, Ordered {
//----部分源码省略----//
protected AutoConfigurationEntry getAutoConfigurationEntry(AnnotationMetadata annotationMetadata) {
if (!isEnabled(annotationMetadata)) {
return EMPTY_ENTRY;
}
AnnotationAttributes attributes = getAttributes(annotationMetadata);
List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes);
//----部分源码省略----//
}
H. springmvc配置servlet的拦截形式/*和/的区别
一、我们都知道在基于Spring的Application中,需要在web.xml中增加下面类似的配置信息:
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- Spring MVC Servlet -->
<servlet>
<servlet-name>servletName</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>servletName</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
此处需要特别强调的是 <url-pattern>/</url-pattern>使用的是/,而不是/*,如果使用/*,那么请求时可以通过DispatcherServlet转发到相应的Action或者Controller中的,但是返回的内容,如返回的jsp还会再次被拦截,这样导致404错误,即访问不到jsp。所以如果以后发现总是有404错误的时候,别忘了check一下 <url-pattern>/</url-pattern>的配置是否是/*.
二、其实Spring 的Servlet拦截器匹配规则(即 <url-pattern>...</url-pattern> )都可以自己定义,例:当映射为@RequestMapping("/user/add")时
1、拦截*.do、*.htm, 例如:/user/add.do
这是最传统的方式,最简单也最实用。不会导致静态文件(jpg,js,css)被拦截。
2、拦截/,例如:/user/add
可以实现现在很流行的REST风格。很多互联网类型的应用很喜欢这种风格的URL。
弊端:会导致静态文件(jpg,js,css)被拦截后不能正常显示。想实现REST风格,事情就是麻烦一些。后面有解决办法还算简单。
3、拦截/*,这是一个错误的方式,请求可以走到Action中,但转到jsp时再次被拦截,不能访问到jsp。
三、如何访问到静态的文件,如jpg,js,css?
如果你的DispatcherServlet拦截"*.do"这样的有后缀的URL,就不存在访问不到静态资源的问题。
如果你的DispatcherServlet拦截"/",为了实现REST风格,拦截了所有的请求,那么同时对*.js,*.jpg等静态文件的访问也就被拦截了。
我们要解决这个问题。
目的:可以正常访问静态文件,不可以找不到静态文件报404。
方案一:激活Tomcat的defaultServlet来处理静态文件
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
特点:1. 要配置多个,每种文件配置一个。
2. 要写在DispatcherServlet的前面, 让 defaultServlet先拦截请求,这样请求就不会进入Spring了。
3. 高性能。
备注:
Tomcat, Jetty, JBoss, and GlassFish 自带的默认Servlet的名字 -- "default"
Google App Engine 自带的 默认Servlet的名字 -- "_ah_default"
Resin 自带的 默认Servlet的名字 -- "resin-file"
WebLogic 自带的 默认Servlet的名字 -- "FileServlet"
WebSphere 自带的 默认Servlet的名字 -- "SimpleFileServlet"
方案二: 在spring3.0.4以后版本提供了mvc:resources , 使用方法:
<!-- 对静态资源文件的访问 -->
<mvc:resources mapping="/images/**" location="/images/" />
images/**映射到 ResourceHttpRequestHandler进行处理,location指定静态资源的位置.可以是web application根目录下、jar包里面,这样可以把静态资源压缩到jar包中。cache-period 可以使得静态资源进行web cache
如果出现下面的错误,可能是没有配置<mvc:annotation-driven />的原因。
报错WARNING: No mapping found for HTTP request with URI [/mvc/user/findUser/lisi/770] in DispatcherServlet with name 'springMVC'使用<mvc:resources/>元素,把mapping的URI注册到SimpleUrlHandlerMapping的urlMap中,
key为mapping的URI pattern值,而value为ResourceHttpRequestHandler,
这样就巧妙的把对静态资源的访问由HandlerMapping转到ResourceHttpRequestHandler处理并返回,所以就支持classpath目录,jar包内静态资源的访问.
另外需要注意的一点是,不要对SimpleUrlHandlerMapping设置defaultHandler.因为对static uri的defaultHandler就是ResourceHttpRequestHandler,
否则无法处理static resources request.
方案三 ,使用<mvc:default-servlet-handler/>
<mvc:default-servlet-handler/>
会把"/**" url,注册到SimpleUrlHandlerMapping的urlMap中,把对静态资源的访问由HandlerMapping转到 org.springframework.web.servlet.resource. 处理并返回.
使用就是各个Servlet容器自己的默认Servlet.
补充说明:多个HandlerMapping的执行顺序问题:
的order属性值是:0
< mvc:resources/ > 自动注册的 SimpleUrlHandlerMapping 的order属性值是: 2147483646
<mvc:default-servlet-handler/>自动注册 的SimpleUrlHandlerMapping 的order属性值是: 2147483647
spring会先执行order值比较小的。当访问一个a.jpg图片文件时,先通过 来找处理器,一定是找不到的,因为我们没有叫a.jpg的Action。然后再按order值升序找,由于最后一个 SimpleUrlHandlerMapping 是匹配 "/**"的,所以一定会匹配上,就可以响应图片。 访问一个图片,还要走层层匹配。不知性能如何?
最后再说明一下,方案二、方案三 在访问静态资源时,如果有匹配的(近似)总拦截器,就会走拦截器。如果你在拦截中实现权限检查,要注意过滤这些对静态文件的请求。
如何你的DispatcherServlet拦截 *.do这样的URL后缀,就不存上述问题了。还是有后缀方便。
I. 什么是约定大于法定
约定并不大于法律规定。具体情况如下:
1、约定优于法定主要是针对民事方面的合约,而且是不能与法律上强制性规定相冲突的情况下,约定在法律的效力上高于法定的效力,即法院或仲裁机构在对某一情况存在约定又有法定的情况下,采纳约定的内容,不采纳法定的内容。
2、在权利归属和奖励报酬方面规定了约定优先的原则,充分尊重当事人的意思自治,当事人依法达成的协议对权利归属和奖励报酬有约定的,首先适用其约定。
但在一定情况下有协议和法定内容时不采用法定内容,主要指民事或合同协议,这是“合同自由”和“意思自治”在法律民事和合同关系中的体现,法律的强制性规定除外。一般私法强调私法自治,这主要是在民事法律关系中。双方约定的内容,只要不违反法律的强制性规定,就受法律的保护,如签订合同时,双方可以自主约定合同成立和终止的时间,以及违约的具体规定等。
法定,由法律、法令所规定的:法定人数、法定婚龄、法定计量单位、按照法定的手续办理。
合同约定违反法律、行政法规的强制性规定是无效的。法律没有强制性规定的,当事人可以自由约定,在履行时也以约定优先,当时人没有约定时遵循法律的相关规定处理。
《中华人民共和国民法典》第五百零二条 依法成立的合同,自成立时生效,但是法律另有规定或者当事人另有约定的除外。
第一百四十三条 具备下列条件的民事法律行为有效:
(一)行为人具有相应的民事行为能力;
(二)意思表示真实;
(三)不违反法律、行政法规的强制性规定,不违背公序良俗。
J. 你所理解的SpringBoot的自动配置是什么
SpringBoot采用**约定大于配置设计思想**,将所有可能遇到的配置信息提前配置好,写在自动配置的jar包中。每个Starter基本都会有对应的自动配置。
这意味着:日后我们在开发Spring应用程序的过程中,需要的配置项,由Pivotal团队的开发人员,帮我们写好了。怎么实现的?主要是通过@Configuration声明的配置类来实现。
SpringBoot帮我们将配置信息写好,存放在一个jar包中:spring-boot-autoconfigure-2.1.11.RELEASE.jar,jar包里存放的都是配置类,以及让配置类生效的"规则类"。
自动配置是SpringBoot中比较深奥的内容,相信你看完我的解释,肯定懵懵懂懂;就去黑马程序员官网视频库看免费视频。