Spring_IOC配置与应用学习笔记

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
		//NetWork
		System.out.println("user saved!");
	}
	
	@Override
	public 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起作用)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值