Java方式bean的注入以及自動配置


Java配置

Java配置的本質上,就是使用一個Java類去代替xml配置,這種配置方式在目前最主流的Spring Boot中得到了廣泛的使用。
1、引入相關Spring相關依賴

2、創建Java配置類:

/**
* 這是一個Java配置類,它的作用類似於applicationContext.xml配置文件
* @author 葉小陌
*
*/
@Configuration
public class JavaConfig {
/**
* 返回一個JavaBean的方法就類似於applicationContext.xml中的一個bean標簽
* <bean class="com.sxt.bean.Book" id="book"/>
* @return
* 默認情況下,id就是方法名,可以通過@bean注解的value或者name屬性自定義方法名
*/
@Bean(name="book")
public Book getBook(){
return new Book();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
3、加載Java配置

public class Main1 {

ApplicationContext ac;
@Test
public void test() {
Book book = (Book) ac.getBean(Book.class);
System.out.println(book);
}
@Before
public void before(){
ac = new AnnotationConfigApplicationContext(JavaConfig.class);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
自動配置

xml 配置實現
xml配置,主要通過四個注解,這四個注解,目前來說,功能是一樣的:

@Component,一般用在身份不明確的組件上
@Service,一般用在Service層
@controller,一般用在控制層
@Repository,一般用在數據庫訪問層
然后在xml文件中配置自動掃描:

<context:component-scan base-package="com.sxt.bean"/>
1
如果有多個包需要掃描,多個包使用“,”隔開,也可以直接配置掃描父包。
還可以配置掃描某個注解,如下:

<context:component-scan base-package="com.sxt" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>
</context:component-scan>
1
2
3
use-default-filters表示使用使用spring默認提供的過濾器,false表示不使用,true則表示使用。
一般來說,true結合exclude-filter標簽使用,表示除去某個注解
false結合include標簽使用,表示包含某個注解
注意:Component是另外三個注解(Service、Controller、Repository)的父類。

Java配置實現
Java配置和xml配置基本一致,唯一不同的地方就是包掃描的方式。
四個注解是一樣的。
包掃描是通過@ComponentScan來實現:

@Configuration
@ComponentScan("com.sxt.bean")
public class JavaConfig {
}
1
2
3
4
Java配置一樣可以實現精確的包掃描:

@Configuration
@ComponentScan(value="com.sxt.bean",useDefaultFilters=false,includeFilters={
@ComponentScan.Filter(type=FilterType.ANNOTATION,value=Service.class)
})
public class JavaConfig {
}
1
2
3
4
5
6

---------------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM