Spring ioc

ApplicationContext ac = 
new ClassPathXmlApplicationContext(
"applicationContext.xml");
//啓動spring容器
/*
* ApplicationContext:接口。
* ClassPathXmlApplicationContext:是
* 實現了AppliationContext接口的類。
* 注意:配置文件的路徑和文件名,spring
* 容器在啓動時,需要讀取配置文件。
*/
讓容器創建對象

方式一: 使用無參構造器。(重點)
step1. 爲類提供一個無參構造器(缺省構造器)
step2. 在配置文件當中,添加一個bean元素。
step3. 啓動spring容器,調用getBean方法來獲得對象。

set方法的ioc注入

在配置文件中寫

<bean id="c1" class="ioc.C"/>
<bean id="a1" class="ioc.A">
<property name="b" ref="c1"/>
</bean>

在類A中注入 C的set方法


<util:properties id="config" 
location="classpath:config.properties"/>

使用:
1.用test測試

@Test
public void test2(){
System.out.println(ac.getBean("config"));
}

2.使用value註解

@Value("#{config.pagesize}")
private String pageSize;
<util:list id="citiesBean">
<value>北京</value>
<value>岳陽</value>
<value>華容</value>
</util:list>
<util:set id="interestBean">
<value>游泳</value>
<value>做飯</value>
<value>畫畫</value>
</util:set>
<util:map id="scoreBean">
<entry key="english" value="80"/>
<entry key="math" value="90"/>
</util:map>
<util:properties id="dbBean">
<prop key="username">Sally</prop>
<prop key="password">1234</prop>
</util:properties>

<!-- 引用的方式注入集合類型的值 -->
<bean id="eb2" class="value.ExampleBean">
<property name="cities" 
ref="citiesBean"/>
<property name="interest" 
ref="interestBean"/>
<property name="score" 
ref="scoreBean"/>
<property name="db" 
ref="dbBean"/>
</bean>

使用註解來住入
容器啓動之後,如果發現配置文件有component-scan元素, 則容器會掃描相應的包及其子包下面的所有的類,如果這些 類前面有一些特殊的註解(比如@Component),則容器會將 這些類納入容器進行管理(相當於以前配置文件當中有相應的 bean元素)。

注:bean的默認id是首字母小寫之後的類名。
@Component 通用
@Service 業務層
@Repository 持久層
@Controller 控制層
(3)生命週期相關的兩個註解:
@PostConstruct 初始化
@PreDestroy 銷燬
(4)用於延遲加載的註解:
@Lazy(true) true表示延遲加載。
(5)用於指定作用域的註解:
@Scope(“prototype”)。

依賴注入相關的註解
@Autowired 和 @Qualifier
a. 支持set方式的注入和構造器方式的注入。
b. set方式注入:
將@Autowired和@Qualifer加到set方法前面, 也可以加到屬性前面。其中,@Qualifer用於指定 要注入的bean的id。
注:如果不指定id,則使用byType的方式來注入。

@Resource
a. 只支持set方式的注入。
b. 可以將該註解加到set方法前面,或者也可以加到 屬性前。使用name屬性來指定要注入的bean的id。

@value註解即可以用在屬性前,也可以用在 set方法前。另外,也可以使用該註解注入基本類 型的值。

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