spring boot基础
1.ANT下面典型的项目层次结构。
(1) src存放文件。
(2) class存放编译后的文件。
(3) lib存放第三方JAR包。
(4) dist存放打包,发布以后的代码。
2.Source Folder在eclipse中就是放入class文件的路径,大家都熟悉的src就是Source Folder。
当我们发布程序时,src下面的.Java文件都编译成了.class文件放入WEB-INF\classes文件夹下。
3.你也可以建一个Source Folder,名字随便起,但记得它里面的内容最终发布时在被放在了WEB-INF\classes文件夹下。
4.这不是我想说的,我想说的是路径问题。
比如你建一个名为cong的Source Folder,里面放了一些配置文件,当别的配置文件引用conf里面的东西时,
路径是WEB-INF\classes.就是说,conf里面东西的路径就是src的路径!
你可以查看一下,发布完程序后,conf里面的东西和src里面的东西放在一块了,而且没有conf这个文件夹!
5.所以我们可以认为:新建Source Folder,其实没有新建Source Folder,在视觉上我们感觉多了一个文件夹,
这样好管理我们的东西,但最后它里面的东西和src下的东西放一块了。我们就认为所有的Source Folder就是一个src。
所以路径的问题按照src路径处理就行。(你完全可以无视你新建的Source Folder).
6.它们的区别如下:
package:当你在建立一个package时,它自动建立到source folder下,也只能建立在这个目录之下.
source folder:存放Java源代码的文件夹,当然也包括一些package文件夹,还可以包含其他文件.
项目构建后,source folder里面的java自动编译成class文件到相应的/web-inf/classes文件夹中,其他文件也会移到/web-inf/classes相应的目录下.
7. 一个Web Project引用多个Java Project在Eclipse下的配置.
项目结构:
项目由一个Web Project和多个Java Project构成,Web Project需要引用其它Java Project的类和Jar包。开发时用Eclipse3.5和Tomcat调试时,出现找不到引用的Java Project
相关类和Jar包。经过一番摸索,终于调通了。以下是具体调试方法。
8.1.配置Web Project的Java Build Path中的Projects
找到Web Project的Java Build Path的Projects视图,点击右侧的Add按钮,选择要添加的Java Project。选择的结果示例如下:
9.Eclipse Java Build Path详解
:
1.设置"source folder"与"output folder".
* source folder:存放.java源文件的根目录;
* output folder:.class编译输出的根目录;
* 纯“java project”中,一般把"src"设置为source folder,把bin设置为output folder;
* 在“web project”中,一般把"src"设置为source folder,把WEB-INF/classes设置为output
2.4.Order and Export有两个属性。打勾与不打勾的区别在于导出jar包时是否将这个库的内容也打包到jar中,勾为包含,不勾为不含。
5.mybatis模糊查询时,like关键字,要用${},不能用#{},因为like要用,%的。%China%
因为#{}在数据库里执行的时候会被替换成“”包括,select * from table like name like %${value}%
6.mybatis操控数据库是用sqlsessionFactory的,
7.Spring Boot需要jdk1.8以上版本
8. 项目产生的构件类型,例如jar、war、ear、pom。
9.使用maven打包工程时,maven可以打包工程。maven用来打包项目。
10.<exclusion> 排除依赖,解除对某个包的依赖 解决引入多个子项目时,不同子项目依赖不同版本的包,以哪个为准。
11.<bulid>这部分是在对项目进行构建时所需要的配置,当你对项目进行编译,测试,打包,发布的时候,这部分配置就会在对应的阶段起作用了。build标签中可以包含很多插
件,这些插件可以配置到项目的某些构建阶段,随着项目的构建进程发挥作用
如何确定有哪些插件呢?
<surefire> 运行单元测试和生成测试报告
<compiler> 编译源代码和测试代码
可参考开发的总pom,有 <compiler> 和 <eclipse> 的插件
12.<dependencies>加入依赖。groupId, artifactId,version为必备
14.构建工具。 用来构建项目,只需要简单的执行命令就可以。 对于个人开发有时候我们从开发到测试到最后打包可能都是一个人做,并且用一个开发工具就解决这些了,因为
大多数开发工具IDE是自带打包功能的。 但是在实际的公司工作中,开发人员与测试人员、部署人员是分开的,部署人员是不会向开发人员要源代码,他们也不会打包,那么怎
么部署呢? 开发人员开发后,确认没问题,将源代码放到版本控制服务器中,并且写一个脚本,这个脚本运行就可以自动打包,然后部署人员运行这个文件打包后部署。 那么
这个脚本里面需要关系到目录与加载的文件等,这时候如果每个项目用的文件都不同,目录名字千奇百怪,那么就不容易统一管理,于是构建工具出现了,它规定你的目录必须
要如何定制,这样方便统一管理。 Ant是比较好的构建工具,但是脚本目录要由自己写,命令中存在依赖关系,编译,打包。 编译目录还要自己指定,maven除了指定好目录,
帮你打包,同时maven有一个中央库,这个可就厉害了,一般我们做项目引用一些第三方工具包,两个项目都要用,我们为了方便,会拷贝两份工具包到项目中,无形之中磁盘占
用过大,maven中央库帮你下载需要的工具包,并且只需要在pom.xml引用即可,打包时自带进去,而不用平时跟着项目跑。 ant通常脚本名为build.xml,maven的胃pom.xml 。
15.我们每个人,也许都在用不同的方法来抗拒现实。玩手机就是其中一种方法,还有喝酒,吸毒,甚至足球等等。所谓的不上进,也不是因为没有正常人的欲望,只不过是在用
这些手段逃避现实。适当的调节身心还好,可一但过于沉迷,就会失去自我。不管什么时候,都要勇敢面对生活,勇于承担责任。
作者:赵赶鹅
链接:
https://www.zhihu.com/question/55791476/answer/147051313
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
20.之前我们创建基于Spring的项目需要考虑添加哪些Spring依赖和第三方的依赖。使用Spring Boot后,我们可以以最小化的依赖开始spring应用。大多数Spring Boot应用需要
很少的配置即可运行,比如我们可以创建独立独立大Java应用,然后通过java -jar运行启动或者传统的WAR部署。其也提供了命令行工具来直接运行Spring脚本(如groovy脚本
)。也就是说Spring Boot让Spring应用从配置到运行变的更加简单,但不对Spring本身提供增强(即额外的功能)。
21.现象
在eclipse里用subeclipe从svn上拖下来的项目,看不见java build path怎么办?
原因
那是因为你的两个配置文件:.project .classpath没有内容或者缺失。
22.spring boot maven配置:
spring-boot-starter-parent
spring-boot-starter-web
spring-boot-maven-plugin
该插件支持多种功能,常用的有两种,第一种是打包项目为可执行的jar包。
在我们开发过程中,我们需要经常修改,为了避免重复启动项目,我们可以启用热部署。
Spring-Loaded项目提供了强大的热部署功能,添加/删除/修改 方法/字段/接口/枚举 等代码的时候都可以热部署,速度很快,很方便。
想在Spring Boot中使用该功能非常简单,就是在spring-boot-maven-plugin插件下面添加依赖:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.5.RELEASE</version>
</dependency>
</dependencies>
添加以后,通过mvn spring-boot:run启动就支持热部署了。
注意:使用热部署的时候,需要IDE编译类后才能生效,你可以打开自动编译功能,这样在你保存修改的时候,类就自动重新加载了。
注意
Spring Boot建议将我们main方法所在的这个主要的配置类配置在根包名下。
@RestController
因为我们例子是写一个web应用,因此写的这个注解,这个注解相当于同时添加@Controller和@ResponseBody注解。
在Application.java中有main方法。
因为默认和包有关的注解,默认包名都是当前类所在的包,例如@ComponentScan, @EntityScan, @SpringBootApplication注解。
@EnableAutoConfiguration
Spring Boot建议只有一个带有该注解的类。
@EnableAutoConfiguration作用:Spring Boot会自动根据你jar包的依赖来自动配置项目。例如当你项目下面有HSQLDB的依赖时,Spring Boot会创建默认的内存数据库的数据源
DataSource,如果你自己创建了DataSource,Spring Boot就不会创建默认的DataSource。
如果你不想让Spring Boot自动创建,你可以配置注解的exclude属性,例如:
@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}
@SpringBootApplication
由于大量项目都会在主要的配置类上添加@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解。
因此Spring Boot提供了@SpringBootApplication注解,该注解可以替代上面三个注解(使用Spring注解继承实现)。
20.启动项目SpringApplication.run
启动Spring Boot项目最简单的方法就是执行下面的方法:
SpringApplication.run(Application.class, args);
21.运行
在IDE中直接直接执行main方法,然后访问http://localhost:8080即可。
22.另外还可以用上面提到的mvn,可以打包为可执行jar包,然后执行java -jar xxx.jar。
23.Spring Boot 支持多种外部配置方式
这些方式优先级如下:
命令行参数
来自java:comp/env的JNDI属性
Java系统属性(System.getProperties())
操作系统环境变量
RandomValuePropertySource配置的random.*属性值
jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
jar包外部的application.properties或application.yml(不带spring.profile)配置文件
jar包内部的application.properties或application.yml(不带spring.profile)配置文件
@Configuration注解类上的@PropertySource
通过SpringApplication.setDefaultProperties指定的默认属性
24.命令行参数
通过Java -jar app.jar --name="Spring" --server.port=9090方式来传递参数。
参数用--xxx=xxx的形式传递。
可以使用的参数可以是我们自己定义的,也可以是Spring Boot中默认的参数。
很多人可能会关心如web端口如何配置这样的问题,这些都是Spring Boot中提供的参数,部分可用参数如下:
注意:命令行参数在app.jar的后面!
25.应用配置文件(.properties或.yml)
在配置文件中直接写:
name=Isea533
server.port=8080
.yml格式的配置文件如:
name: Isea533
server:
port: 8080
当有前缀的情况下,使用.yml格式的配置文件更简单。
27.23.6 Using YAML instead of Properties
YAML is a superset of JSON, and as such is a very convenient format for specifying hierarchical configuration data. The SpringApplication class will
automatically support YAML as an alternative to properties whenever you have the SnakeYAML library on your classpath.
28.23.6.1 Loading YAML
Spring Framework provides two convenient classes that can be used to load YAML documents. The YamlPropertiesFactoryBean will load YAML as Properties and
the YamlMapFactoryBean will load YAML as a Map.
27.To bind to properties like that using the Spring DataBinder utilities (which is what @ConfigurationProperties does) you need to have a property in the
target bean of type java.util.List (or Set) and you either need to provide a setter, or initialize it with a mutable value, e.g. this will bind to the
properties above
28.@ConfigurationProperties(prefix="my")
public class Config {
private List<String> servers = new ArrayList<String>();
public List<String> getServers() {
return this.servers;
}
}
29.23.6.2 Exposing YAML as properties in the Spring Environment
The YamlPropertySourceLoader class can be used to expose YAML as a PropertySource in the Spring Environment. This allows you to use the familiar @Value
annotation with placeholders syntax to access YAML properties.
30.注意:使用.yml时,属性名的值和冒号中间必须有空格,如name: Isea533正确,name:Isea533就是错的。
31.spring会从classpath下的/config目录或者classpath的根目录查找application.properties或application.yml。
/config优先于classpath根目录
32.Spring Boot 会自动将prefix="my"前缀为my的属性注入进来。
Spring Boot 会自动转换类型,当使用List的时候需要注意在配置中对List进行初始化!
33.Spring Boot 会自动将prefix="my"前缀为my的属性注入进来。
Spring Boot 会自动转换类型,当使用List的时候需要注意在配置中对List进行初始化!
34.Spring Boot 会将foo开头的属性按照名字匹配注入到FooComponent对象中。
35.Spring Boot 会将foo开头的属性按照名字匹配注入到FooComponent对象中。
36.Druid的简介
Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss
DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。
37.Druid的功能
1、替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。
2、可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。
3、数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。
4、SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。
5、扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。
6.构建系统--maven或者gradle,最强大的地方在依赖管理dependency management。
When you upgrade Spring Boot itself, these dependencies will be upgraded as well in a consistent way.
7.13.2 Maven
Maven users can inherit from the spring-boot-starter-parent project to obtain sensible defaults. The parent project provides the following features:
Java 1.8 as the default compiler level.
UTF-8 source encoding.
A Dependency Management section, allowing you to omit <version> tags for common dependencies, inherited from the spring-boot-dependencies POM.
Sensible resource filtering.
Sensible plugin configuration (exec plugin, surefire, Git commit ID, shade).
Sensible resource filtering for application.properties and application.yml including profile-specific files (e.g. application-foo.properties and
application-foo.yml)
30.13.2.3 Using the Spring Boot Maven plugin
Spring Boot includes a Maven plugin that can package the project as an executable jar. Add the plugin to your <plugins> section if you want to use it:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
[Note]
If you use the Spring Boot starter parent pom, you only need to add the plugin, there is no need for to configure it unless you want to change the settings
defined in the parent.
30.13.5 Starters
Starters are a set of convenient dependency descriptors that you can include in your application. You get a one-stop-shop for all the Spring and related
technology that you need, without having to hunt through sample code and copy paste loads of dependency descriptors. For example, if you want to get
started using Spring and JPA for database access, just include the spring-boot-starter-data-jpa dependency in your project, and you are good to go.
31.14.1 Using the “default” package
When a class doesn’t include a package declaration it is considered to be in the “default package”. The use of the “default package” is generally
discouraged, and should be avoided. It can cause particular problems for Spring Boot applications that use @ComponentScan, @EntityScan or
@SpringBootApplication annotations, since every class from every jar, will be read.
32.We generally recommend that you locate your main application class in a root package above other classes. The @EnableAutoConfiguration annotation is
often placed on your main class
33. @EnableAutoConfiguration注解
第二个类级别的注解是 @EnableAutoConfiguration 。这个注解告诉Spring Boot根据添加的jar依赖猜测你想如何配置Spring。由于 spring-boot-starter-web 添加了Tomcat和
Spring MVC,所以auto-configuration将假定你正在开发一个web应用并相应地对Spring进行设置。
34.spring中为了减少xml中配置,可以生命一个配置类(例如SpringConfig)来对bean进行配置。
not spring mvc 而是spring,是spring提供的configure注解,不是spring mvc
<context:component-scan base-package="SpringStudy.Model">
</context:component-scan>
35.二、定义一个配置类
用@Configuration注解该类,等价 与XML中配置beans;用@Bean标注方法等价于XML中配置bean。
代码如下:
36.@Configuration注解的类相当于一个xml配置文件,是相当于文件,是文件。不是注入,也不是生成,就是相当于一个xml文件。
spring boot基础的更多相关文章
- Spring Boot 基础
Spring Boot 基础 Spring Boot 项目(参考1) 提供了一个类似ASP.NET MVC的默认模板一样的标准样板,直接集成了一系列的组件并使用了默认的配置.使用Spring Boot ...
- Spring Boot 基础教程系列学习文档
Spring Boot基础教程1-Spring Tool Suite工具的安装 Spring Boot基础教程2-RESTfull API简单项目的快速搭建 Spring Boot基础教程3-配置文件 ...
- spring boot基础 入门
spring boot基础 spring boot 的简单搭建 spring boot 的基本用法 spring boot 基本用法 自动配置 技术集成 性能监控 源码解析 工程的构建 创建一个mav ...
- Spring Boot基础教程》 第1节工具的安装和使用
<Spring Boot基础教程> 第1节 工具的安装和使用 Spring Boot文档 https://qbgbook.gitbooks.io/spring-boot-reference ...
- spring boot基础学习教程
Spring boot 标签(空格分隔): springboot HelloWorld 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新 ...
- Spring Boot 基础,理论,简介
Spring Boot 基础,理论,简介 1.SpringBoot自动装配 1.1 Spring装配方式 1.2 Spring @Enable 模块驱动 1.3 Spring 条件装配 2.自动装配正 ...
- Java Web系列:Spring Boot 基础
Spring Boot 项目(参考1) 提供了一个类似ASP.NET MVC的默认模板一样的标准样板,直接集成了一系列的组件并使用了默认的配置.使用Spring Boot 不会降低学习成本,甚至增加了 ...
- Java Web系列:Spring Boot 基础 (转)
Spring Boot 项目(参考1) 提供了一个类似ASP.NET MVC的默认模板一样的标准样板,直接集成了一系列的组件并使用了默认的配置.使用Spring Boot 不会降低学习成本,甚至增加了 ...
- Spring Boot - 基础 POM 文件
表 1. Spring Boot 推荐的基础 POM 文件 名称 说明 spring-boot-starter 核心 POM,包含自动配置支持.日志库和对 YAML 配置文件的支持. spring-b ...
- Spring Boot学习笔记---Spring Boot 基础及使用idea搭建项目
最近一段时间一直在学习Spring Boot,刚进的一家公司也正好有用到这个技术.虽然一直在学习,但是还没有好好的总结,今天周末先简单总结一下基础知识,等有时间再慢慢学习总结吧. Spring Boo ...
随机推荐
- 洛谷——P1802 5倍经验日
https://www.luogu.org/problem/show?pid=1802#sub 题目背景 现在乐斗有活动了!每打一个人可以获得5倍经验!absi2011却无奈的看着那一些比他等级高的好 ...
- CF47A Triangular numbers
CF47A Triangular numbers 题意翻译 给定一个数n,问你是否存在一个整数i,满足i*(i+1)/2=n. 若存在,输出"YES",否则输出"NO&q ...
- [React] How to use a setState Updater Function with a Reducer Pattern
In this lesson we'll walk through setting up an updater function that can receive an action argument ...
- HDU 1113 Word Amalgamation (map 容器 + string容器)
http://acm.hdu.edu.cn/showproblem.php?pid=1113 Problem Description In millions of newspapers across ...
- 2015.04.30,外语,读书笔记-《Word Power Made Easy》 14 “如何谈论日常现象” SESSION 40
1. money, and what it will buy penury(['penjuri] n. 贫穷,拮据),来自拉丁词语penuria(need,needness的意思),主要指缺乏财富资源 ...
- 一个Python项目的创建架构
要进行Python项目的编写,很多人刚开始一筹莫展,不知道该如何去构建一个项目,现在粗略的描述一下一个项目的创建过程,供大家参考了解一下: 大家可以先忽略其中创建的函数 ,每个包的含义都有定义,大家可 ...
- MySQL 5.7 zip 文件安装过程
1.下载路径 https://dev.mysql.com/downloads/mysql/ 有账号登陆下载, 没有账号:no thanks;just start my download 2.解 ...
- 比较不错的spring学习博客
http://blog.csdn.net/tangl_99/article/details/1176141
- ROS-单目摄像头标定
前言:由于摄像图内部与外部的原因,生成的图像往往会发生畸变,为了避免数据源造成的误差,需要针对摄像头的参数进行标定. ros官方提供了camera_calibration软件包进行摄像头标定. 一.安 ...
- Firefox Quantum:开发者版本 推荐
为生民,不谋利 欢迎您使用 Firefox 开发者版本.使用此版本可获得最新功能.高速性能,以及您打造开放 Web 所需的开发工具. https://www.mozilla.org/zh-CN/fir ...