springcloud開發1

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注入 

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})這樣就可以取消默認配置
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章