1. 程式人生 > >spring boot(2)[email p

spring boot(2)[email p

啟動類

package hello;

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;

@SpringBootApplication
public class Run{
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Run.class, args);
    }
}
這個Run.java是一個獨立的spring boot啟動類,這裡不應該有業務功能,上一篇的hello world業務程式碼應該寫在一個單獨的@Controller裡面,和上一篇相比,這裡用
@SpringBootApplication替換了@EnableAutoConfiguration。

@SpringBootApplication

@EnableAutoConfiguration:只是實現自動配置一個功能,具體參考上一篇。 @SpringBootApplication:是一個組合註解,包括@EnableAutoConfiguration及其他多個註解。 在eclipse的程式碼中 按 crtl+左鍵 點選@SpringBootApplication註解可以檢視他的原始碼,如下
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
		@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication
前四個註解:是元註解,用來修飾當前註解,就像public類的修飾詞,沒有實際功能,如果不打算寫自定義註解,不需要了解 後三個註解:是真正起作用的註解,包括 @SpringBootConfiguration:當前類是一個配置類,就像xml配置檔案,而現在是用java配置檔案,效果是一樣的。下面會詳解。
@EnableAutoConfiguration:上篇已經講了
@ComponentScan:用註解配置實現自動掃描,預設會掃描當前包和所有子包,和xml配置自動掃描效果一樣,@Filter是排除了兩個系統類

@SpringBootConfiguration和@Bean

package hello;

import org.springframework.boot.SpringBootConfiguration;
import org.springframework.context.annotation.Bean;

@SpringBootConfiguration
public class Config {
	@Bean
	public String hello(){
		return "Hello World";
	}
}

@SpringBootConfiguration:說明這是一個配置檔案類,它會被@ComponentScan掃描到

@Bean:就是在spring配置檔案中聲明瞭一個bean,賦值為hello world,String方法型別就是bean的型別,hello方法名是bean的id

如果是用xml配置檔案來宣告bean,如下圖

<bean id="hello" class="String"></bean>

SampleController.java

package hello;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;

@Controller
public class SampleController {
	@Autowired
	String hello;
	
	@RequestMapping(value="/")
	@ResponseBody
    String test(){
      return hello;
    }

   
}

把上一篇的hello world業務功能獨立出來,在這裡注入了spring容器中的那個String型別的Bean,並且列印到頁面

執行專案

現在的專案結構如下,共三個檔案,啟動類、配置類、業務類,結構更分明瞭。