好程序員Java學習路線分享Spring創建Bean的3種方式

好程序員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的方式。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章