Spring3.0学习1.1(模拟spring)
Posted Blueburble
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring3.0学习1.1(模拟spring)相关的知识,希望对你有一定的参考价值。
层次划分
面向抽象编程 带来极大的灵活性
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)的主要内容,如果未能解决你的问题,请参考以下文章
spring3.0整合异常,我的框架为struts2.1+hibernate3.0+spring3.0+mysql5.0+tomcat6.0