springboot是spring社区比较新的一个项目,帮助开发者更容易使用spring应用,springboot能方便我们更快的进行spring的入门体验,这也是一种固定的,约定优于配置风格的框架。springboot基础知识:https://docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/html/index.html
springboot 有下面几个特性:
为spring的开发者提供更快的入门体验
开箱即用,没有代码生成,也无需xml配置,同时也可以修改默认值来满足特定的需求
提供一些大型项目中常见的非功能性特性,如嵌入式、安全、指标、健康测试等
Spring Boot 并不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式
相对于以前我们使用的spring,springBoot增加了《parent》 而parent中大量的配置好了依赖管理,在自己的依赖中使用不需要重新这个依赖的《version》版本号
spring默认使用的是jdk1.6 , 我们想使用jdk1.8需要在pom.xml的属性里面添加java.version
<properties>
<java.version>1.8</java.version>
</properties>
spring-boot-starter-*这样的依赖就能支持具体的某个功能,例如:spring-boot-starter-web
依赖管理https://docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/html/using-boot-build-systems.html#using-boot-starter-poms
使用spring boot 热部署 简单的来说,就是每次保存之后,自动编译成字节码文件,然后运行,这里我们使用spring loaded spring-boot-devtools 这两个依赖包实现
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <!-- 这个需要为true热部署才有效
--></dependency>由于热部署的时候是产生了新的类加载器,我们的一个类可能在虚拟机中存在两个类,比如代码中就一个 User 类,但是虚拟机中会存在两个 User ,虽然是同一个 Class 文件,但是却是两个独立的类,这个要清楚
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖myboot项目的项目如果想要使用devtools,需要重新引入 -->
</dependency>
注解:
@RestControllar : 写的是web应用,就要用到这个注解,这个注解相当于@Controllar和@ResponseBody
@EnableAutoConfiguration:springboot会根据你的jar包的依赖来自动配置项目,例如当我的项目下面有HSQLDB的依赖时,Springbooth会默认创建的内存数据库的数据源DataSource,如果你自己创建了,DataSource,springboot就不会创建默认的DataSource。如果不想SpringBoot自动创建,添加属性exclude
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
因此Spring Boot提供了@SpringBootApplication注解代替@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解
@Configuration中 配置主要的source(建议),通常main方法类也作为@Configuration的一个好的选择,您不需要将所有的@Configuration放在一个类中。 @Import注解可用于导入其他配置类。 或者,您可以使用@ComponentScan自动扫描所有Spring组件,包括@Configuration类。然后,您可以使用的@ImportResource注释来加载XML配置文件。
如果您发现正在使用一些不需要的自动配置类,可以使用@EnableAutoConfiguration的exclude属性来禁用它们。
(exclude={DataSourceAutoConfiguration.class})
如果将应用程序类放在根包中构建代码,则可以使用@ComponentScan而不使用任何参数,所有应用程序组件(@Component,@Service,@Repository,@Controller等)将自动注册为Spring Bean。
springboot 默认的字符集是UTF-8
spring会从classpath下的/config目录查找application.properties或application.yml。
/config优先于classpath根目录
@ConfigurationProperties 对应对象的属性注入
my.name=Isea533
my.port=8080
my.servers[0]=dev.bar.com
my.servers[1]=foo.bar.com
@ConfigurationProperties(prefix="my")
public class Config {
private String name;
private Integer port;
private List<String> servers = new ArrayList<String>();
public String geName(){
return this.name;
}
public Integer gePort(){
return this.port;
}
public List<String> getServers() {
return this.servers;
}
}
Spring Boot 还支持嵌套属性注入,例如:
name=isea533
jdbc.username=root
jdbc.password=root
@ConfigurationProperties
public class Config {
private String name;
private Jdbc jdbc;
class Jdbc {
private String username;
private String password;
//getter...
}
public Integer gePort(){
return this.port;
}
public Jdbc getJdbc() {
return this.jdbc;
}
}
本文介绍了SpringBoot这一简化Spring应用开发的框架,探讨了其提供的便捷特性,如开箱即用、自动配置等,并详细讲解了如何通过依赖管理和特定注解来优化SpringBoot应用。
3134

被折叠的 条评论
为什么被折叠?



