javascript
Spring框架使用规范和IOC的开发
Spring框架是一個管理對象的容器,就像Web容器Tomcat可以管理servlet的生命周期,Spring容器可以管理對象的生命周期。
Spring的組件化讓類和類對象之間的關系變得不那么緊密,降低了耦合度。
Spring的IOC的XML開發
IOC容器:Spring的IOC容器在最底層實際上就是一個對象的工廠,該工廠在程序中的實現是ApplicationContext這個接口, 因此使用spring創建對象的時候首先需要創建spring的工廠(new ClassPathXMLApplicationContext())。
DI:為需要的屬性賦值就是依賴注入的過程。
注入方式:
①property標簽:通過set方法賦值(注入)
②contructor-arg標簽:通過構造器賦值(注入),必須有對應的構造器才能注入
< contructor-arg value="構造器的值1" index="0">< /contructor-arg> < contructor-arg value="構造器的值2" index="1" type="">< /contructor-arg> (通過索引指定參數位置) < contructor-arg value="構造器的值3" index="2">< /contructor-arg>③p命名空間為類的屬性賦值:
<bean id="" class="" p:屬性名1="" p:屬性名2=""> </bean>屬性的賦值方式:
①value:通過value可以賦值給字面量的值,包括所有的基本數據類型,基本數據類型的包裝類,string類型等.
②ref:可以把當前spring管理的某一個bean對象賦值給該屬性.
③集合屬性的賦值:
④數組屬性的賦值:
< property name="屬性名" >< array>字面量: <value>值</value>引用數據類型:<ref bean=""/>< /array> < /property>⑤map屬性的賦值:
< property name="屬性名" >< map><!-- map里面一個entry代表一個鍵值對 --><entry><key><value> 值</value></key><value>值</value></entry><entry><key><value> 值</value></key><value>值</value></entry>< /map> < /property>bean管理對象的作用域:
若spring通過單例的方法管理對象,會在工廠容器初始化時就創建該對象,調用該類的構造器;若是多例的方式,則會在使用時創建
bean管理對象的生命周期:
① 創建對象:調用類的構造器
②依賴注入:依賴注入屬性
③初始化方法:
④對象的使用:使用對象調用方法
⑤對象的銷毀:spring容器的關閉
bean加載資源文件到spring容器中:
<!-- db.properties文件放在src下 --> <context:property-placeholder location="classpath:db.properties"/>bean使用資源文件:使用${jdbc.屬性名}的方式:
<bean id="datasource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="${jdbc.driver}"></property><property name="url" value="${jdbc.url}"></property><property name="username" value="${jdbc.username}"></property><property name="password" value="${jdbc.password}"></property> </bean>bean的自動裝配:通過autowire屬性:
autowire:設置了該屬性后,spring就可以通過某種方式自動為屬性賦值.
autowire=“byName”:根據名稱自動裝配,引用數據類型bean的id只要和該bean要賦值的屬性名一致就可以自動賦值.
autowire=“byType”:根據類型自動裝配,引用數據類型bean的類型只要和該bean要賦值的屬性類型一致就可以自動賦值.
Spring的IOC的注解開發
使用注解來標識一個bean,并開啟組件包掃描:
在需要交給spring管理的類上使用@Controller|@Service|@Repository,相當于在spring配置文件中配置了該類的bean.
import org.springframework.stereotype.Controller;@Controller(value="") //為自動生成的bean指定id public class UserController {} <context:component-scan base-package="com.sms.spring"></context:component-scan>接口和抽象類不能進行實例化,在類上面加了注解就相當于在xml配置文件中添加了< bean>,因此所有注解應該放在實現類上.
開啟組件包掃描:掃描包下所有的類上的注解,這些類會自動在spring的配置文件中生成對應的bean,這些bean的id會以類的首字母小寫為值.
掃描組件的包含:注意要將默認的掃描關閉.use-default-filters=“false”
<context:component-scan base-package="com.sms.spring" use-default-filters="false"><context:include-filter type="annotation" expression="注解的全類名"/></context:component-scan>掃描組件的排除:注意要將默認的掃打開.use-default-filters=“true”
<context:component-scan base-package="com.sms.spring" use-default-filters="false"><context:exclude-filter type="annotation" expression="注解的全類名"/> </context:component-scan>基于注解的自動屬性注入: 使用@autowired
其中自動裝配的屬性的類型UserService需要和spring中已有的bean的類型保持一致,其中UserServiceImpl已經過掃描,因此可以進行屬性的自動注入.
@Controller public class UserController {@Autowiredprivate UserService userService;}基于注解的自動屬性注入的設置: 通過@Autowired + @Qulaifier(value=“id名”)
指定spring容器中bean的id等于id名的那個bean賦值給該屬性.
總結
以上是生活随笔為你收集整理的Spring框架使用规范和IOC的开发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL关于事务控制、视图、存储过程和
- 下一篇: MySQL流程控制if、case、循环结