Spring框架基礎

Spring是一個開源的輕量級的應用開發框架,其目的是用於簡化企業級應用程序的開發,降低侵入性。

Spring本質:管理軟件中的對象,創建對象和維護對象之間的關係。

Spring實現了IOC和AOP功能,可以簡化Bean對象創建和Bean對象之間的解耦。

Spring容器有BeanFactory和ApplicationContext兩種類型。其中ApplicationContext繼承自BeanFactory接口。

例如:String conf = "applicationContext.xml";     ApplicationContext ac = new ClassPathXmlApplicationContext(conf);

主要方法:getBean(beanName)獲取Bean對象

Spring容器創建Bean對象的方法有3種:

1、用構造器實例化。例如:<bean id="" class=""/>

2、靜態工廠方法實例化。 例如:<bean id="" class="" factory-method=""/>

3、對象工廠方法實例化。 例如:<bean id=""    factory-bean=""   factory-method=""/>

bean對象的別名:<alias name=""  alias=""/>

bean對象的作用域:singleton,prototype,request,session,global Session

bean定義的屬性:id,name,class,init-method,destroy-method,lazy-init,autowire

<beans>定義的屬性:default-init-method,default-destory-method,default-lazy-init

IOC:Inversion of Control,控制反轉(程序中對象的獲取方式發生反轉,由最初的new方式創建,轉變爲由第三方框架創建,注入(DI),它降低了對象之間的耦合度)

DI:Dependency Injection,依賴注入。(將一起工作具有關係的對象,通過構造方法參數或方法參數傳入建立關聯,因此容器的工作就是創建bean時注入這些依賴關係)分爲:Setter注入,構造器注入。

<bean id="" class="">
      <property name="" value=""/>
</bean>

<bean id="" class="">
     <constructor-arg index="0" value=""/>
</bean>

自動裝配(outowire):操作bean對象之間的關聯關係。

分爲5種:no(默認值),byName,byType,contructor,autodetect

參數值注入:

<property name="name">
      <value></value>
</property>

<property name="name" value=""/>

<property name="" ref=""/>

<property name="lists">
      <list>
              <value></value>
        </list>
</property>

<property name="sets">
      <set>
              <value></value>
        </set>
</property>

<property name="score">
       <map>
             <entry key="" vlaue=""/>
        </map>
</property>

<property name="props">
         <props>
               <prop key=""></prop>
         </props>
</property>

<util:list id="langList">
       <value></value>
</util:list>

<property name="langs" ref="langList">
<util:list>,<util:set>,<util:properties>都可以採用這種方式

<util:properties id="const" location="classpath:const.properties">
<property name="" value="#{msg.name}"/>

注入null值
<property name="name">
     <null/>
</property>

基於註解的組件掃描:

組件掃描可以代替大量的XML配置的<bean>定義。

<context:component-scan base-package="com.model"/>

常用的註解標記:@Component ,@Named,@Repository,@Service,@Controller

生成的bean的默認爲類名首字母小寫,當然我們可以指定bean的id。例如:@Component("test")

作用域:@Scope("prototype"),

指定初始化和銷燬回調方法:@PostConstruct,@PreDestroy

依賴關係的注入:

1、@Autowired / @Qualifier 構造器和Setter注入都可以使用。

例如:

@Autowired

public Test(@Qualifier("test") Test test) {

      this.test = test;

}

注入的對象爲單例時,@Quealifier可以省略。

2、@Inject / @Named

3、@Resource 只能處理Setter注入。通常將@Resource註解寫在set方法上,如果寫在屬性上,則只會執行一行代碼this.name = name。

4、@Value註解可以注入Spring 表達式的值。例如:@Value("#{const.username}")

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