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工程实践入门的主要内容,如果未能解决你的问题,请参考以下文章