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官网文档学习笔记--3.1~3.2.3

Spring3.0入门笔记

spring3.0整合异常,我的框架为struts2.1+hibernate3.0+spring3.0+mysql5.0+tomcat6.0

spring3.0使用annotation完全代替XML

如何 EasyMock 对返回通配符泛型的方法的调用?

spring3.0使用annotation完全代替XML