Spring3.0學習1.1(模擬spring)
阿新 • • 發佈:2018-08-10
class tor cati 3.0 -- turn user users spring3.0
層次劃分
面向抽象編程 帶來極大的靈活性
IOC(DI) 依賴註入
控制反轉:
正式使用spring
IOC 控制反轉 不用自己寫實現 由容器完成
建議使用appicatiioncontext
DI:
SET註入就是調用set方法
2.構造方法註入、
id,name
Id和name可以互換 唯一的區別是name可以含有特殊字符
簡單屬性的註入
簡單屬性的值可以在配置文件裏指定
bean的生命範圍
默認singleton 拿多少個都一樣
prototype 原型 每一次都造一個新的出來
集合註入:
自動專配
autowire = 默認是no
<bean id="userService" class="com.bjsxt.service.UserService" scope="prototype" autowire="byType">
不用制定了 根據id的類型來尋找 也可以設置成byname
可以在beans裏設置defaul-autowire的值 然後在下面的bean就可以設置default使跟beans裏設置成的值一樣
生命周期
lazy-init 可以設置為true 並不初始化 只是到get的時候才初始化 beans裏可以為全部設置
<bean id="userService" class="com.bjsxt.service.UserService" init-method="init" destroy-method="destroy" scope="prototype"> <!-- <property name="userDAO" ref="u" /> --> <constructor-arg> <ref bean="u"/> </constructor-arg> </bean>
Userservice.java
package com.bjsxt.service; import com.bjsxt.dao.UserDAO; import com.bjsxt.model.User;public class UserService { private UserDAO userDAO; public void init() { System.out.println("init"); } public void add(User user) { userDAO.save(user); } public UserDAO getUserDAO() { return userDAO; } public void setUserDAO(UserDAO userDAO) { this.userDAO = userDAO; } public UserService(UserDAO userDAO) { super(); this.userDAO = userDAO; } public void destroy() { System.out.println("destroy"); } }
如果不設置scope = protytype 的話 只會執行一次開始和結束方法
如果設置 只會每次執行開始方法
Spring3.0學習1.1(模擬spring)