javascript
Spring IOC(Inversion Of Controll 控制反转)
IOC是什么?
對象之間的依賴關系由容器來建立。
DI(Dependency Injection 依賴注入)是什么?
容器通過調用對象提供的set方法或者構造器來建立依賴關系。
注:IOC是目標,DI是手段。
set方式注入
step1.提供相應的set方法。
step2.配置元素。
構造器方式注入
step1.添加相應的構造器。
step2.配置constructor-arg元素。
自動裝配(了解)
指的是spring容器依據某種規則,自動建立對象之間的依賴關系。
注意:
a、默認情況下,容器不會自動裝配。
b、可以通過指定autowire屬性來告訴容器進行自動裝配(容器仍然需要通過調用set方法或構造器來完成依賴關系的建立)。
注入基本類型的值
使用value屬性即可。
注入集合類型的值(List Set Map Properties)
引用的方式注入集合類型的值
<%@taglib uri=”http//xxxxxx” prefix=”c”%>
uri–>命名空間 namespace
c–>命名空間的別名
讀取properties文件的內容
<!-- 讀取properties文件的內容classpath:按照類路徑來搜素。spring容器會依據路徑找到對應的配置文件,然后讀取該文件的內容到properties對象。 --><util:properties id="config" location="classpath:config.properties"/>使用spring表達式
可以使用spring表達式讀取其他bean的屬性,它的語法類似于el表達式。
使用注解簡化配置
什么是組件掃描?
spring容器啟動之后會掃描指定的包及其子包下面的所有類,如果該類前面有特定的注解(比如@Component),則spring容器會將其納入容器進行管理。(相當于這兒配置了一個bean元素)。
如何進行組件掃描?
step1.在類前添加特定的注解。
注:除了@Component注解,還有@Service,@Repository,@Controller,作用是等價的,只不過有語義上的差異。
step2.在配置文件當中,添加組件掃描的配置。
其他相關注解
@Scope("singleton")//指定作用域 @Lazy(true)//指定延時加載 public class SomeBean {public SomeBean(){System.out.println("SomeBean()");}@PostConstruct//指定初始化方法public void init(){System.out.println("init()");}@PreDestroy//指定銷毀方法public void destroy(){System.out.println("destroy()");} }依賴注入相關的注解
@Autowired和Qualifier
a.該注解支持set方式注入和構造器方式的注入。
b.當使用set方式注入時,可以將@Autowired添加到set方法前面,如果不使用@Qualifier,則容器會使用byType的方式來注入,有可能出錯,所以建議使用@Qualifier注解,明確指出要注入的bean的id。
注:也可以將這兩個注解直接添加到屬性前。
c.當采用構造器注入時,可以將注解添加到對應的構造器前面即可。
@Resource注解
a.只支持set方式的注入。
b.可以將該注解添加到屬性前,使用name屬性指定要注入的bean的id(如果不指定,會按照byType的方式注入)。
注:也可以將注解添加到屬性前。
@Value注解
a.可以使用該注解來注入基本類型的值。
b.也可以使用該注解來使用spring表達式。
c.該注解可以添加到屬性前,或者添加到對應的set方法前。
總結
以上是生活随笔為你收集整理的Spring IOC(Inversion Of Controll 控制反转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 50 道 Python 基础练习题(附答
- 下一篇: 用c#语言做课程表系统代码,winfor