1.環境準備
1. 官網:https://spring.io/projects/spring-boot/
2. 新建一個springboot項目,點擊IDEA--》File--》New Project--》Empty Project,新建好空項目後新增模塊
3. 父依賴版本:2.0.6.RELEASE,增加父依賴***
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
</parent>
<!-- 添加web啓動器依賴 -->
<dependencies>
<!-- web啓動器,每個啓動器後面都是一堆的依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
4. 添加阿里雲鏡像
<repositories>
<repository>
<id>central</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<layout>default</layout>
<!-- 是否開啓發布版構件下載 -->
<releases>
<enabled>true</enabled>
</releases>
<!-- 是否開啓快照版構件下載 -->
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
2.代碼編寫
1. 新建controller
2. @RestController註解相當於@Controller和@ResponseBody
3. 代碼示例
/**
* @RestController註解相當於@Controller+@ResponseBody,說明這個controller都應該返回json數據
* 訪問:http://127.0.0.1:8080/hello/show
*/
@RestController
@RequestMapping("hello")
@EnableAutoConfiguration //啓動自動配置
public class HelloController {
@GetMapping("show")
public String test(){
return "hello springboot";
}
public static void main(String[] args) {
SpringApplication.run(HelloController.class, args);
}
}
4. 訪問:http://127.0.0.1:8080/hello/show
5. 因爲不可能每一個controller都起一個tomcat,所以main方法應該放在一個全局引導類裏面
@EnableAutoConfiguration //啓動自動配置
@ComponentScan //組件掃描,類似於<context:component-scan base-package="">,掃描該類所在的包以及它的子包
@SpringBootApplication //相當於@EnableAutoConfiguration+@ComponentScan
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
3.java編寫(添加數據庫配置)
1. 在pom.xml中增加druid依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
2. 聲明數據庫配置
@Configuration //聲明類是java配置類
@PropertySource("classpath:jdbc.properties") //讀取資源文件
public class jdbcConfiguration {
@Value("${jdbc.driverClassName}")
private String driverClassName;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
//把方法返回值注入到spring容器
@Bean
public DataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(this.driverClassName);
dataSource.setUrl(this.url);
dataSource.setUsername(this.username);
dataSource.setPassword(this.password);
return dataSource;
}
}
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:127.0.0.1:3306/leyou
jdbc.username=root
jdbc.password=11111
3. debug模式下查看dataSource注入
4. 如果想在其他配置類中也使用這個配置引入,創建一個屬性讀取類統一讀取
/**
* 這個配置類通過前綴找到properties文件中配置,通過get方法獲取屬性值,這個字段名必須和properties中字段一致
*/
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
private String driverClassName;
private String url;
private String username;
private String password;
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
5. 改造配置類
/**
* springboot四種屬性注入
* 1.Autowired注入
* 2.構造方法注入
* 3.@Bean方法形參注入,在dataSource方法裏放入形參JdbcProperties
* 4.直接在@Bean方法上使用@ConfigurationProperties(prefix = "jdbc")
*/
@Configuration //聲明類是java配置類
//@PropertySource("classpath:application.properties") //讀取資源文件
//啓用屬性讀取類
@EnableConfigurationProperties({JdbcProperties.class})
public class jdbcConfiguration {
@Autowired
private JdbcProperties jdbcProperties;
//把方法返回值注入到spring容器
// @Bean
// public DataSource dataSource(){
// DruidDataSource dataSource = new DruidDataSource();
// dataSource.setDriverClassName(this.jdbcProperties.getDriverClassName());
// dataSource.setUrl(this.jdbcProperties.getUrl());
// dataSource.setUsername(this.jdbcProperties.getUsername());
// dataSource.setPassword(this.jdbcProperties.getPassword());
// return dataSource;
// }
//更爲簡化的配置類,@ConfigurationProperties可以自動通過get和set方法進行屬性注入
@Bean
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
return dataSource;
}
}
6. springboot中默認配置
a. 默認配置是怎麼配置的,在哪裏配置的
有一個spring-boot-autoconfigure包,裏面有一些默認配置
b. 爲何引入依賴就觸發配置
在包下面都有帶Autoconfigure的類,就是默認的配置,如果想要默認的配置取消,則用 @SpringBootApplication(exclude = {MongoAutoConfiguration.class, KafkaAutoConfiguration.class})這樣就可以取消默認配置