Spring_IOC配置与应用学习笔记

来源:互联网 发布:淘宝哪家赌石好 编辑:程序博客网 时间:2024/06/14 21:12

1 Spring注入类型

           setter(重要)
构造方法(使用的非常少)
接口注入(可以忘记)
setter注入类型Setter Injection 就是在bean中使用setXXX方法进行注入来

在bean类中,成员属性需要setXXX方法如下:

public class UserService { private UserDao userDao = new UserDaoImpl(); public UserDao getUserDao() {  return userDao; } public void setUserDao(UserDao userDao) {  this.userDao = userDao; } public void add(User u){userDao.save(u);}}

spring配置文件如下:

 <bean id="u" class="com.code.dao.impl.UserDaoImpl" >  </bean>  <bean id="userService" class="com.code.service.UserService">   <property name="userDao" ref="u"/><!-- 这里的ref表示参考id=u的那个bean -->      <!--或是下面的方式    <property name="userDao">   <ref bean="u"></ref>   </property> -->  </bean>

2Spring<bean>标签的id和name属性区别

id: 一个bean的唯一标识  , 命名格式必须符合XML ID属性的命名规范 
name: 可以用特殊字符,并且一个bean可以用多个名称:name=“bean1,bean2,bean3” ,用逗号或者分号或者空格隔开。如果没有id,则name的第一个名称默认是id

3Spring<bean>简单属性的注入

<bean id="u" class="com.code.dao.impl.UserDAOImpl"><property name="daoId" value="110"/><property name="daoString" value="220"></property></bean>

4<bean中的scope属性

singleton  单例    从spring容器中取出的对象都是一个对象
<bean id="userService" class="com.code.service.UserService" autowire="byName" scope="singleton">
prototype  每次创建新的对象  
<bean id="userService" class="com.code.service.UserService" autowire="byName" scope="prototype">

5 集合注入

package com.code.dao.impl;import java.util.List;import java.util.Map;import java.util.Set;import com.code.dao.UserDAO;import com.code.model.User;public class UserDAOImpl implements UserDAO {private int daoId;private String daoString;private Set<String> sets;private List<String> lists;private Map<String, String> maps;public int getDaoId() {return daoId;}public void setDaoId(int daoId) {this.daoId = daoId;}public String getDaoString() {return daoString;}public void setDaoString(String daoString) {this.daoString = daoString;}public Set<String> getSets() {return sets;}public void setSets(Set<String> sets) {this.sets = sets;}public List<String> getLists() {return lists;}public void setLists(List<String> lists) {this.lists = lists;}public Map<String, String> getMaps() {return maps;}public void setMaps(Map<String, String> maps) {this.maps = maps;}public void save(User user) {//Hibernate//JDBC//XML//NetWorkSystem.out.println("user saved!");}@Overridepublic String toString(){return "=====daoId======> " + daoId;}}
<bean id="userDAO1" class="com.code.dao.impl.UserDAOImpl"><property name="daoId" value="110"/><property name="daoString" value="220"></property><property name="lists"><list><value>990</value><value>991</value><value>992</value><value>993</value></list></property><property name="maps"><map><entry key="a" value="880"/><entry key="b" value="881"/><entry key="c" value="882"/><entry key="d" value="883"/></map></property></bean>


6 AutoWire 自动装配  

<bean 属性中autowire
<bean id="userDAO" class="com.code.dao.impl.UserDAOImpl">
<bean id="userService" class="com.code.service.UserService" autowirre="ByName"/>
当UserService中有UserDAO的对象为userDAO时,通过该属性autowirre="ByName"自动注入到对象userService中。
相应的autowirre="ByType"在spring容器中查找类型为UserDAO的对象,如果超过一个对象,报错。

7 生命周期 LifeCycle

lazy-init
ApplicationContext实现的默认行为就是在启动时将所有singleton bean提前进行实例化(也就是依赖注入)。提前实例化意味着作为初始化过程的一部分,ApplicationContext实例会创建并配置所有的singleton bean。通常情况下这是件好事,因为这样在配置中的任何错误就会即刻被发现(否则的话可能要花几个小时甚至几天)。

<bean id="testBean" class="com.code.TestBean"> 该bean默认的设置为:

<bean id="testBean" class="com.code.TestBean" lazy-init="false">    lazy-init="false" 立退加载, 表示spring启动时,立刻进行实例化。

 (lazy-init 设置只对scop属性为singleton的bean起作用)




0 0
原创粉丝点击