spring学习笔记4--让sping自动扫描和管理Bean

前言:最近复习spring相关知识,特记录于此,欢迎大家交流指正--QQ767872620

通过claslpath自动扫描的方式把组件纳入spring容器中管理
说明:
当项目稍大时,通常会有上百个组件,如果这些组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找和维护都不方便。
spring2.5以后引入自动扫描的机制,他可以在类路径底下查找标注了@Component、@Service、@Controller、@Repository注解的类,
并把这些类纳入进spring容器中进行管理。他的作用和在xml中使用bean节点配置组件是一样的。要使用自动扫描机制,需要打开以下配置信息

xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation=
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
 
 在beans节点中添加节点:
 <context:component-scan base-package="cn.itcast"/>
 此节点会在后台注册很多注解解释器,涵盖<context:annotation-config/>  的解释器
 base-package:为需要扫描的包(包含子包)。
 
 各注解的说明:
 @Component:泛指组件,当组件不好归类时可以使用这个标注;
 @Service:用于标注业务层组件;
 @Controller:用于标注控制层组件(如struts中的action);
 @Repository:用于标注数据访问组件,即DAO组件。
 
 注意:
 当使用注解自动扫描管理bean时,.getBean(BeanName)的BeanName,在没有指定时为类名(首字母小写)
 可以再注解后()内指定名称,来访问
 如:

package cn.itcast.service.imp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import junit.test.ItcastResource;

import org.springframework.stereotype.Service;

import cn.itcast.dao.PersonDao;
import cn.itcast.service.PersonCollects;
@Service("Peerson")
//@Service
public class PeersonCollectionBean implements PersonCollects {

 

 public PersonDao persondao;
 
 public String name;
 public Set<String> sets = new HashSet<String>();

 public void setPersondao(PersonDao persondao) {
  this.persondao = persondao;
 }

 public List<String> lists = new ArrayList<String>();
 
 public Properties properties = new Properties();
 
 public Map<String,Object>maps = new HashMap<String,Object>();
 
 public Map<String, Object> getMaps() {
  return maps;
 }

 public void setMaps(Map<String, Object> maps) {
  this.maps = maps;
 }

 public Properties getProperties() {
  return properties;
 }

 public void setProperties(Properties properties) {
  this.properties = properties;
 }

 public void setLists(List<String> lists) {
  this.lists = lists;
 }

 public List<String> getLists() {
  return lists;
 }

 public Set<String> getSets() {
  return sets;
 }

 public void setSets(Set<String> sets) {
  this.sets = sets;
 }
 
 public void Save(){
  this.persondao.add();
  System.out.println(this.name);
 }
}


 
 其他相关注解:
 
@Scope("prototype"):以上都为单例模式,可以通过添加@Scope("")注解指定作用域,可以变成度理模式
@PostConstruct:注解方式添加"初始化方法"(此注解不是spring的注解是javax.annotation.PostConstruct,但是spring对他做了支持)
@PreDestory:注解的方式添加销毁方法,在对象销毁前执行

 

如:

package cn.itcast.service.imp;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

import junit.test.ItcastResource;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;

import cn.itcast.dao.PersonDao;
import cn.itcast.service.PersonCollects;
Service("Peerson") @Scope("prototype")
public class PeersonCollectionBean implements PersonCollects {
	public PersonDao persondao;
	
	public String name;
		public Set<String> sets = new HashSet<String>();

	/**
	 * 使用注解注入初始化方法
	 */
	@PostConstruct
	public void init(){
		System.out.println("初始化方法");
	}
	/**
	 * 使用注解注入销毁方法
	 */
	@PreDestroy
	public void destory() {
		System.out.println("销毁方法");
	}
	public void setPersondao(PersonDao persondao) {
		this.persondao = persondao;
	}
	public List<String> lists = new ArrayList<String>();
	
	public Properties properties = new Properties();
	
	public Map<String,Object>maps = new HashMap<String,Object>();
	
	public Map<String, Object> getMaps() {
		return maps;
	}

	public void setMaps(Map<String, Object> maps) {
		this.maps = maps;
	}

	public Properties getProperties() {
		return properties;
	}

	public void setProperties(Properties properties) {
		this.properties = properties;
	}

	public void setLists(List<String> lists) {
		this.lists = lists;
	}

	public List<String> getLists() {
		return lists;
	}

	public Set<String> getSets() {
		return sets;
	}

	public void setSets(Set<String> sets) {
		this.sets = sets;
	}
	


	public void Save(){
		this.persondao.add();
		System.out.println(this.name);
	}
}



 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值