1. 程式人生 > >Spring3.0學習1.1(模擬spring)

Spring3.0學習1.1(模擬spring)

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)