spring-boot, spring-cloud….学java然后就是各种spring…学的都忘了spring居然是春天,这么美好的含义…
先装java吧
下个1.8的jdk包,安装
> java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
管理工具
- maven or gradle, xml恐惧症的选了gradle
brew install gradle
> gradle --version Welcome to Gradle 4.10.2!
搭建spring-boot项目基本框架
- 通过Spring Initializr来生成,dependencies选择
web
spring-boot-starter-web
里面包含了spring-boot-starter
- 自动生成的resources里面默认使用application.properties,这个文件是spring boot工程的主要配置文件,支持application.yml和application.properties两种形式,喜欢yml的请把文件修好成application.yml
build.gradle
文件中,apply plugin: 'eclipse'
改成apply plugin: 'idea'
./gradlew idea
生成IntelliJ IDEA工程文件-
gradle build
or 使用项目下面的gradle./gradlew build
使用./gradlew
会在项目目录的.gradle/
下载一个gradle, 并且在gradle/wrapper/gradle-wrapper.properties
中设置了下载的gradle的地址 ./gradlew tasks
查看所有gradle的task- 项目的xxxApplication.java文件是项目入口
@SpringBootApplication //= @Configuration + @ComponentScan + @EnableAutoConfiguration public class CatteryApplication { public static void main(String[] args) { SpringApplication.run(CatteryApplication.class, args); } }
此刻项目目录
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── src
├── main
│ └── java
│ └── com.cattery
│ └── CatteryApplication.java
└── test
└── java
实现一个controller
com.cattery
目录下创建home目录,在home目录下创建HomeController.java
@RestController("/home") public class HomeController { @GetMapping public String index() { return "hello"; } }
此刻项目目录
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── src
├── main
│ └── java
│ └── com.cattery
| ├── home
| └── HomeController.java
│ └── CatteryApplication.java
└── test
└── java
./gradlew bootRun
- 访问
http://localhost:8080/home
连接数据库 postgreSql
- 使用psql数据库,
build.gradle
文件加入runtime('org.postgresql:postgresql')
-
使用阿里提供的 https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter 数据库连接池
build.gradle
文件加入compile('com.alibaba:druid-spring-boot-starter:1.1.10')
java各种数据库连接池对比
另外build.gradle
文件在加入compile("org.springframework.boot:spring-boot-starter-data-jpa")
引入jpa application.yml
中加入spring: datasource: druid: url: jdbc:postgresql://127.0.0.1:5432/probation_production username: postgres password: driver-class-name: org.postgresql.Driver
./gradlew bootRun
,访问 http://localhost:8080/druid/index.html 查看数据库监控- 配置jpa和show sql log,
application.yml
如下spring: datasource: druid: url: jdbc:postgresql://127.0.0.1:5432/probation_production username: postgres password: jpa: database-platform: org.hibernate.dialect.PostgreSQL9Dialect database: postgresql properties: hibernate: ddl-auto: none temp: use_jdbc_metadata_defaults: false logging: level: org: hibernate: type: descriptor: sql: BasicBinder: TRACE SQL: DEBUG
- 创建实体
@Entity @Table(name = "roles") public class Role implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User [id=" + id + ", name=" + name + "]"; } }
- 创建数据库操作接口
public interface RoleRepository extends CrudRepository<Role, Long> { }
- 创建对应的controller
package com.cattery.role;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/roles")
public class RoleController {
@Autowired
private RoleRepository roleRepository;
@GetMapping
public Object index() {
Iterable<Role> roles = roleRepository.findAll();
return roles;
}
@PutMapping
public Object update(@RequestParam(name = "role") Role role) {
roleRepository.save(role);
return role;
}
@PostMapping
public Object create(@RequestParam(name = "name") String name) {
Role role = new Role();
role.setName(name);
roleRepository.save(role);
return role;
}
@DeleteMapping
public Object delete(@RequestParam(name = "id") Long id) {
roleRepository.deleteById(id);
return id;
}
}
./gradlew build
&./gradlew bootRun
, 访问 http://localhost:8080/roles
打包运行
./gradlew jar
根据build.gradle
的配置version = '0.0.1-SNAPSHOT'
和settings.gradle
的配置rootProject.name ='cattery'
生成jar名java -jar build/libs/xxx.jar
查看Druid监控
./gradlew bootRun
,访问 http://localhost:8080/druid/index.html 查看数据库监控- 配置用户名,密码, 创建DruidConfig
@SpringBootConfiguration
public class DruidConfig {
@Bean
public ServletRegistrationBean statViewServlet() {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),
"/druid/*");
servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
servletRegistrationBean.addInitParameter("deny", "192.168.0.1");
servletRegistrationBean.addInitParameter("loginUsername", "admin");
servletRegistrationBean.addInitParameter("loginPassword", "123456");
servletRegistrationBean.addInitParameter("resetEnable", "false");
return servletRegistrationBean;
}
@Bean
public FilterRegistrationBean statFilter() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
}
./gradlew build
&./gradlew bootRun
,访问http://localhost:8080/druid/index.html 输入用户名密码查看监控数据
github example repo: https://github.com/dongjx/spring-boot-example