spring boot工程实践入门

Posted 吴二喵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot工程实践入门相关的知识,希望对你有一定的参考价值。

一、新建一个spring boot工程

1、登录start.spring.io网站,填入Group ID和Artifact ID和JDK版本号信息,可以选择依赖包,通常Web等依赖是常用的选择项,然后点击生成工程,下载工程文件。
2、打开eclipse,选择导入已有的maven工程,即可导入我们已经生成的spring boot工程。

二、spring boot入口类

我们新建一个工程,系统都会帮我们创建一个名为artifactId+Application的入口类,这个类中有一个main方法,这个main方法就是一个标准的Java应用程序的入口方法。并且类上会有@SpringBootApplication注解。
通过看入口类的源码,我们可以发现@SpringBootApplication注解其实是一个组合注解。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = @Filter(
    type = FilterType.CUSTOM,
    classes = TypeExcludeFilter.class
)
)
public @interface SpringBootApplication 

其实它组合了@SpringBootConfiguration、
@EnableAutoConfiguration以及@ComponentScan。
我们在开发的过程中如果不使@SpringBootApplication,则可以组合使用这三个注解。

这三个注解中,@SpringBootConfiguration实际上就是@Configuration注解,表明这个类是一个配置类,@EnableAutoConfiguration则表示让Spring Boot根据类路径中的jar包依赖为当前项目进行自动配置,最后一个@ComponentScan告诉Spring 哪个packages 的用注解标识的类 会被spring自动扫描并且装入bean容器。如果我们使用了@SpringBootApplication注解的话,系统会去入口类的同级包以及下级包中去扫描实体类,因此建议入口类的位置在groupId+arctifactID组合的包名下。

此外,我们还可以关闭特定的自动配置。@ComponentScan注解是有一个过滤器的,如果我们只想要@SpringBootApplication去扫描特定的类而不是全部类,那么就可以关闭自动配置,如下:

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

可以在入口类上再添加一个@RestController注解,使之变为一个Controller,然后里边提供一个地址转换方法,如下:

@SpringBootApplication
@RestController
public class SpringBootDemoApplication 

    public static void main(String[] args) 
        SpringApplication.run(SpringBootDemoApplication.class, args);
    

     @RequestMapping(value = "/",produces = "text/plain;charset=UTF-8")
        String index()
            return "Hello Spring Boot!";
        

那么在网页上访问http://localhost:8080/,就会打印出Hello Spring Boot!

二、定制Banner

我们在启动Spring Boot项目的时候,在控制台会默认输出一个启动图案是Spring的字符。这个图案如果你需要的话是可以自己修改的,修改方式很简单:

1.在src/main/resources下新建一个banner.txt文档
2.通过http://patorjk.com/software/taag网站生成需要的字符,将字符拷贝到步骤1所创建的txt文档中,比如我这里为Hello Sang!生成字符。

可以修改当然也可以关闭,关闭Banner需要我们稍微修改一下main方法中的代码,如下:

public static void main(String[] args) 
        SpringApplicationBuilder builder = new SpringApplicationBuilder(Test19SpringBoot2Application.class);
        //修改Banner的模式为OFF
        builder.bannerMode(Banner.Mode.OFF).run(args);
    

这样修改之后当我们再次启动工程的时候就看不到Banner了。

三、Spring Boot的配置文件

Spring Boot使用一个全局的配置文件application.properties或者application.yml,配置文件放在src/main/resources目录下。properties是我们常见的一种配置文件,Spring Boot不仅支持properties这种类型的配置文件,也支持yaml语言的配置文件,我这里以properties类型的配置文件为例来看:

修改Tomcat默认端口和默认访问路径

Tomcat默认端口是8080,我将之改为8081,默认访问路径是http://localhost:8080,我将之改为http://localhost:8081/helloboot,我们来看看这两个需求要怎么样通过简单的配置来实现。
很简单,在application.properties文件中添加如下代码:

server.context-path=/helloboot
server.port=8081

然后再启动Project,在浏览器中就得这样来访问了:
http://localhost:8081/helloboot/

常规属性配置

使用了Spring Boot比spring的配置要简单,我们只需要在application.properties中定义属性,然后在代码中直接使用@Value注入即可。
如下:

student.name=crystal
student.age=18
student.major=computer science
并在入口类中加入@Value注入变量值

@SpringBootApplication
@RestController
public class SpringBootDemoApplication 
     @Value(value = "$student.name")
        private String name;
        @Value("$student.age")
        private String age;
        @Value("$student.major")
        private String major;
    public static void main(String[] args) 
        SpringApplication.run(SpringBootDemoApplication.class, args);
    

@RequestMapping(value = "/",produces = "text/plain;charset=UTF-8")
        String index()

            return "name: " +name + ", age :" + age + ", major: " +major ;
        

网页打印结果为:
name: crystal, age :25, major: computer science

Profile配置问题

全局Profile配置我们使用application-profile.properties来定义,然后在application.properties中通过spring.profiles.active来指定使用哪个Profile。OK,那么接下来我们来看一个简单的案例。

1.在src/main/resources文件夹下定义不同环境下的Profile配置文件,文件名分别为application-prd.properties和application-dev.properties,这两个前者表示生产环境下的配置,后者表示开发环境下的配置,如下:
application-prod.properties:

server.port=8081

application-dev.properties:

server.port=8080

然后在application.properties中进行简单配置,如下:

spring.profiles.active=dev

这个表示使用开发环境下的配置。然后运行项目,我们得通过8080端口才可以访问。如果想换为生产环境,只需要把spring.profiles.active=dev改为spring.profiles.active=prd即可,当然访问端口这是也变为8081了。

参考自:http://blog.csdn.net/u012702547/article/details/53740047

以上是关于spring boot工程实践入门的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot入门程序

Spring Initializr 构建Spring Boot/Cloud工程

Spring Boot 最佳实践快速入门

Spring Boot 入门实践

Spring Boot入门与实践

Spring Boot 2从入门到入坟 | 最佳实践篇:Spring Boot应用该如何编写?