spring-boot入门
Posted 浴盆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring-boot入门相关的知识,希望对你有一定的参考价值。
依赖
我们使用IDE初始化spring-boot的时候,会发现这两个依赖
<artifactId>spring-boot-starter-web</artifactId> // spring-boot针对web的依赖
<artifactId>spring-boot-starter-test</artifactId> // 用来做单元测试
还有spring-boot构建时候的插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
我们找到启动类,会发现启动类需要通过注解@SpringBootApplication
来标识
可以通过IDE启动,也可以通过进入目录后,使用命令行启动
mvn spring-boot:run
或者使用mvn install
进行编译之后,进入target文件夹,使用如下命令启动
java -jar xxx-0.0.1-SNAPSHOT.jar
增加路由
可以写一个controller,启动之后在浏览器中体验一下
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* Created by 浴盆 on 2018/10/4.
*/
@RestController
public class HelloController
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String say()
return "hello";
@Controller用来处理http请求,可以配合模板使用(类似jsp返回html)。@RestController是spring4新推出的(相当于@Controller + @ResponseBody)。@RequestMapping配置url映射,可以配置多个
@RequestMapping(value = "/hello", "hi" , method = RequestMethod.GET)
public String say()
return "hello";
也可以给整个类配置
@RestController
@RequestMapping("hello")
public class HelloController
@RequestMapping(value = "/say", method = RequestMethod.GET)
public String say()
return "hello";
method也可以使用POST方式,在浏览器用postman mock一下
项目属性配置
项目属性配置在application.properties中,我们可以加一些配置试试
server.port=8081
server.context-path=/yupen
因为在url前面加了前缀,这时我们访问路径变成localhost:8081/yupen/hello
除了application.properties文件,我们也可以使用application.yml文件来进行相同的配置,可以简化格式, 这时候前缀server就不用重复写了
server:
port: 8081
context-path: /yupen
这时候我们可以在配置文件中增加
server:
port: 8082
diamond: yupen
在类文件中通过@value来引入
@RestController
public class HelloController
@Value("$name")
private String name;
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String say()
return "hello" + name;
配置文件不关心类型,只需要在注入进来的时候写明需要的类型即可,配置文件中可以再使用配置
server:
port: 8082
name: yupen
age: 26
content: "name: $name, age: $age"
当我们使用@Value觉得太麻烦的时候,可以通过一个类来解决这个问题。
server:
port: 8082
boy:
name: yupen
age: 26
配置类为
/**
* Created by 浴盆 on 2018/10/4.
*/
@Component
@ConfigurationProperties(prefix = "boy")
public class BoyProperties
private String name;
private String age;
public String getName()
return name;
public void setName(String name)
this.name = name;
public String getAge()
return age;
public void setAge(String age)
this.age = age;
在引用的时候,只需要
/**
* Created by 浴盆 on 2018/10/4.
*/
@RestController
public class HelloController
@Autowired
BoyProperties boyProperties;
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String say()
return "hello" + boyProperties.getName() + boyProperties.getAge();
开发和生产环境配置
我们可以把刚才的文件拷贝两份,一份设为application-dev.yml,另一份设为application-prod.yml。那么在原来的application-yml就需要对这份拷贝进行引用
spring:
profiles:
active: dev
在启动的时候,可以指定对应的版本
java -jar xxx-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
bean配置
带有 @Configuration 的注解类表示这个类可以使用 Spring IoC 容器作为 bean 定义的来源。@Bean 注解告诉 Spring,一个带有 @Bean 的注解方法将返回一个对象,该对象应该被注册为在 Spring 应用程序上下文中的 bean。最简单可行的 @Configuration 类如下所示
package com.alibaba;
import org.springframework.context.annotation.*;
@Configuration
public class HelloWorldConfig
@Bean
public HelloWorld helloWorld()
return new HelloWorld();
上面的代码将等同于下面的 XML 配置:
<beans>
<bean id="helloWorld" class="com.alibaba.HelloWorld" />
</beans>
数据库操作
我们使用Spring-Data-Jpa来完成数据库连接,那么JPA是什么,JPA(Java Persistence API)定义了一些列持久化对象的标准,目前实现这个规范的产品有Hibernate等。
首先添加两个依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
在本地新建数据库dbyupen,配置项为
spring:
profiles:
active: dev
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/dbyupen
username: root
password: 123456qaz
jpa:
hibernate:
ddl-auto: create
show-sql: true
ddl-auto: create
会创建一个空表。
构造一个数据库字段映射类, @Entity代表每个字段会映射到数据库字段,@GeneratedValue表示自增
/**
* Created by 浴盆 on 2018/10/5.
*/
@Entity
public class Boy
@Id
@GeneratedValue
private Integer id;
private String age;
private String name;
public Boy()
public Integer getId()
return id;
public void setId(Integer id)
this.id = id;
public String getAge()
return age;
public void setAge(String age)
this.age = age;
public String getName()
return name;
public void setName(String name)
this.name = name;
运行之后,spring会自动创建表boy。如果要使用事务,可以使用@Transactional注解
以上是关于spring-boot入门的主要内容,如果未能解决你的问题,请参考以下文章