好程式設計師Java學習路線分享Spring建立Bean的3種方式

好程式設計師IT發表於2019-08-15

好程式設計師Java學習路線分享Spring建立Bean的3種方式,本文講解了在Spring 應用中建立Bean的多種方式,包括自動建立,以及手動建立注入方式,實際開發中可以根據業務場景選擇合適的方案。

方式1:
使用Spring XML方式配置,該方式用於在純Spring 應用中,適用於簡單的小應用,當應用變得複雜,將會導致XMl配置檔案膨脹 ,不利於物件管理。

<bean id="xxxx" class="xxxx.xxxx"/>

方式2:

使用@Component,@Service,@Controler,@Repository註解

這幾個註解都是同樣的功能,被註解的類將會被Spring 容器建立單例物件。

@Component : 側重於通用的Bean類

@Service:標識該類用於業務邏輯

@Controler:標識該類為Spring MVC的控制器類

@Repository: 標識該類是一個實體類,只有屬性和Setter,Getter

1

2

3

@Component

public class User{

}

當用於Spring Boot應用時,被註解的類必須在啟動類的根路徑或者子路徑下,否則不會生效。

如果不在,可以使用@ComponentScan標註掃描的路徑。

spring xml 也有相關的標籤<component-scan />

1

2

3

4

5

6

@ComponentScan(value={"com.microblog.blog","com.microblog.common"})

public class MicroblogBlogApplication {

public static void main(String args[]){

SpringApplication.run(MicroblogBlogApplication.class,args);

}

}

方式3:

使用@Bean註解,這種方式用在Spring Boot 應用中。

@Configuration 標識這是一個Spring Boot 配置類,其將會掃描該類中是否存在@Bean 註解的方法,比如如下程式碼,將會建立User物件並放入容器中。

@ConditionalOnBean 用於判斷存在某個Bean時才會建立User Bean.

這裡建立的Bean名稱預設為方法的名稱user。也可以@Bean("xxxx")定義。

1

2

3

4

5

6

7

8

@Configuration

public class UserConfiguration{

@Bean

@ConditionalOnBean(Location.class)

public User user(){

return new User();

}

}

Spring boot 還為我們提供了更多類似的註解。


也和方式2一樣,也會存在掃描路徑的問題,除了以上的解決方式,還有使用Spring boot starter 的解決方式

在resources下建立如下檔案。META-INF/spring.factories.

Spring Boot 在啟動的時候將會掃描該檔案,從何獲取到配置類UserConfiguration。

spring.factories.

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.log.config.UserConfiguration

如果不成功,請引入該依賴

1

2

3

4

5

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-configuration-processor</artifactId>

<optional>true</optional>

</dependency>

這個方式也是建立SpringBoot-starter的方式。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2653825/,如需轉載,請註明出處,否則將追究法律責任。

相關文章