springboot的使用一

本文介绍了SpringBoot这一简化Spring应用开发的框架,探讨了其提供的便捷特性,如开箱即用、自动配置等,并详细讲解了如何通过依赖管理和特定注解来优化SpringBoot应用。

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>
注意一点,如果没有编译的话不会出现运行,只有编译代码修改了,才会进行编译修改,自动创建class文件,然后热部署工具创建新的类加载器,加载改变后的class文件

由于热部署的时候是产生了新的类加载器,我们的一个类可能在虚拟机中存在两个类,比如代码中就一个 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属性来禁用它们。

@EnableAutoConfiguration(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;
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值