`
Luob.
  • 浏览: 1571839 次
  • 来自: 上海
社区版块
存档分类
最新评论

spring 第8天 Spring 注解

阅读更多
spring注解
@Component:标注一个普通的spring bean类
@Controller:标注一个控制器组件
@Service:标注一个业务逻辑组件
@Reponsitory:标注一个DAO组件

@Scope:配置bean的作用域不配置 默认为 singleton
@DependsOn({"aa"}):可以修饰bean和方法,表示在操作前 ,先初强制初始化 aa bean
@Lazy(false) :修饰bean类,用于指定该bean是否执行预初始化行为 默认为false :表示会执行初始化
@Autowired:可以修饰Field setter方法,普通方法,自动注入,默认采用byType注入
@Qualifier:精确的自动装配:可以修饰Field,setter方法,普通法方法,必须和@Autowired 一起使用,否则不会将找到的bean初始化后,赋值给属性.


package annotation.model.impl;

import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;

import annotation.model.interfaces.Axe;
import annotation.model.interfaces.Dog;
import annotation.model.interfaces.Person;

@Component
public class Japanese implements Person {

	//定义一个方法
	@Autowired
	@Qualifier("steelAxe")
	public Axe axe;
	
	@Autowired
	public Dog dog;
	
	
	@Autowired  // 会找到所有的Axe 类型然后天津到 数组中
	private Axe[] axes;
	
	private Set<Axe> saxe;
	
	public Set<Axe> getSaxe() { 
		return saxe;
	}

	@Autowired  //如果 不指定  集合的类型 spring 将不知所措
	public void setSaxe(Set<Axe> saxe) {
		this.saxe = saxe;
	}

	public Axe getAxe() {
		return axe;
	}

	/**
	 * 如果发现 这一类型的 有多个Bean 会出现异常
	 * @param axe
	 */
	@Autowired   //找到 类型为Axe 的后,会自动注入, 默认采用 byType自动装配 
	public void setAxe(@Qualifier("stoneAxe") Axe axe) {
		System.out.println("bb");
		this.axe = axe;
	}

	@Autowired  //多个参数的普通方法
	public void prepare(@Qualifier("steelAxe") Axe axe,Dog dog){
		System.out.println("ss");
		this.axe=axe;
		this.dog=dog;
	}
	
	@Override
	public void useAxe() {
		System.out.println("正在使用"+getAxe()+"劈柴");
		System.out.println(getAxe().chop());
	}
	
	
	public void life(){
		dog.sound();
	}

	public Dog getDog() {
		return dog;
	}

	public Axe[] getAxes() {
		return axes;
	}

	public void setDog(Dog dog) {
		this.dog = dog;
	}

	public void setAxes(Axe[] axes) {
		this.axes = axes;
	}
	
	
}

  <context:component-scan base-package="annotation">
   		<!--  
   		type: 有4种类型  annotation assignable regex aspectj
   		-->
   		<!-- 包含下面结尾的类 -->
   		<context:include-filter type="regex" expression=".*Chinexe"/>
   		<context:include-filter type="regex" expression=".*Axe"/>
   		<context:include-filter type="assignable" expression="annotation.resources.TestBean"/>
   		
   		<!-- 不包含下面包下的所有类 -->
   		<context:exclude-filter type="regex" expression="annotation.model.interfaces.*"/>
   </context:component-scan>

ApplicationContext act=null;
	@Before
	public void init(){
		act=new ClassPathXmlApplicationContext("classpath:applicationContent_anno.xml");
	}

//测试 自动 注入 和精确注入  Autowired  Qualifier 
	@Test
	public void test1(){  // setMethod  > generalMethod(普通方法) > Field 
//输出spring中所有bean 的实例名称 
System.out.println(Arrays.toString(act.getBeanDefinitionNames()));
		Japanese j=act.getBean("japanese",Japanese.class);
		j.useAxe();
		j.life();
		System.out.println(Arrays.toString(j.getAxes()));
		
	}


定制Bean的生命周期行为
@PostConstruct :修饰 bean找那个init-method,和配置文件中init-menthod作用一样
@PreDestory:修改bean中的close方法 和配置文件中的属性 destory-method作用一样



	@PostConstruct  // 和 init-method 方法一样
	public void init(){
		System.out.println("PostConstruct: init-method:正在初始化....");
	}
	
	@PreDestroy  //和 destory-method 方法一样
	public void destroy() throws Exception {
		System.out.println("@PreDestroy:destory-method:注解,即将被销毁...");
	}
	
分享到:
评论
2 楼 Luob. 2014-08-17  
chenzheng8975 写道
哈哈 顶起来

没有什么好顶的,没有发布到社区 里面去,主要是给自己看 呵呵
1 楼 chenzheng8975 2014-08-17  
哈哈 顶起来

相关推荐

    第十八章 Spring 注解(Annotations)1

    第十八章:Spring 注解小马哥 · mercyblitzSpring 注解Spring 注解驱动编程发展历程Spring 核心注解场景分类Spring 注解

    spring.net中文手册在线版

    第八章. 对象池 8.1.简介 8.2.接口和实现 第九章. Spring.NET杂记 9.1.简介 9.2.PathMatcher 9.2.1.通用规则 9.2.2.匹配文件名 9.2.3.匹配子目录 9.2.4.大小写需要考虑,斜线可以任意 第十章. 表达式求值 10.1.简介 ...

    跟我学spring3(8-13)

    【第八章】 对ORM的支持 之 8.1 概述 ——跟我学spring3 【第八章】 对ORM的支持 之 8.2 集成Hibernate3 ——跟我学spring3 【第八章】 对ORM的支持 之 8.3 集成iBATIS ——跟我学spring3 【第八章】 对ORM的支持 之...

    Spring Boot实战与原理分析视频课程包含14-18

    9 Spring Boot @Enable*注解的工作原理47:07 10 Spring Boot @EnableAutoConfiguration深入分析30:55 11 Spring Boot 事件监听27:53 --四种方式讲解如何配置事件监听 12 Spring Boot 扩展分析33:54 13 Spring ...

    Spring的学习笔记

    第八课:Spring AOP配置选项 21 一、 AOP配置annotation方式 21 (一) 搭建annotation开发环境 21 (二) aspectJ类库 22 (三) AOP的annotation实例 22 (四) AspectJ的专业术语 23 (五) 织入点语法 23 (六) Advice 24 ...

    Spring+3.x企业应用开发实战光盘源码(全)

     第8章:介绍了Spring所提供的DAO封装层,这包括Spring DAO的异常体系、数据访问模板等内容。  第9章:介绍了Spring事务管理的工作机制,通过XML、注解等方式进行事务管理配置,同时还讲解了JTA事务配置知识。  ...

    Spring攻略(第二版 中文高清版).part1

    第8章 Spring @MVC 280 8.1 用Spring MVC开发简单的Web应用 280 8.1.1 问题 280 8.1.2 解决方案 281 8.1.3 工作原理 283 8.2 用@RequestMapping映射请求 293 8.2.1 问题 293 8.2.2 解决方案 294 ...

    Spring MVC 入门实例

    如果你手上有一本《Spring in Action》, 那么你最好从第三部分"Spring 在 Web 层的应用--建立 Web 层"开始看, 否则那将是一场恶梦! 首先, 我需要在你心里建立起 Spring MVC 的基本概念. 基于 Spring 的 Web 应用...

    Spring-Reference_zh_CN(Spring中文参考手册)

    9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.6.1. @Transactional 有关的设置 9.5.7. 插入事务操作 9.5.8. 结合AspectJ...

    Spring攻略(第二版 中文高清版).part2

    第8章 Spring @MVC 280 8.1 用Spring MVC开发简单的Web应用 280 8.1.1 问题 280 8.1.2 解决方案 281 8.1.3 工作原理 283 8.2 用@RequestMapping映射请求 293 8.2.1 问题 293 8.2.2 解决方案 294 ...

    Spring 2.0 开发参考手册

    9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. 结合AspectJ使用 @Transactional 9.6. 编程...

    Spring中文帮助文档

    9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 事务传播 9.5.8. 通知事务操作 9.5.9. 结合AspectJ使用 @...

    Spring in Action(第2版)中文版

    第8章spring和基于pojo的远程服务 8.1spring远程调用概览 8.2与rmi一起工作 8.2.1连接rmi服务 8.2.2输出rmi服务 8.3使用hessian和burlap的远程调用 8.3.1访问hessian/burlap服务 8.3.2用hessian或burlap公开...

    Spring API

    9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 事务传播 9.5.8. 通知事务操作 9.5.9. 结合AspectJ使用 @...

    SpringMVCDemo:Spring MVC 框架知识案例

    1.创建第一个 Spring MVC 程序案例 2.Spring MVC @RequestMapping 注解案例 3.Spring MVC 请求参数的获取案例 4.Spring MVC 域对象共享数据案例 5.Spring MVC @ModelAttribute 注解案例 6.Spring MVC 国际化案例 7....

    spring security 参考手册中文版

    第八部分 附录 274 40.安全数据库模式 274 40.1用户模式 274 40.1.1集团当局 274 40.2持久登录(记得我)架构 275 40.3 ACL模式 275 40.3.1 HyperSQL 276 40.3.2 PostgreSQL 277 40.3.3 MySQL和MariaDB 278 40.3.4 ...

    Spring.3.x企业应用开发实战(完整版).part2

    第8章 Spring对DAO的支持 8.1 Spring的DAO理念 8.2 统一的异常体系 8.2.1 Spring的DAO异常体系 8.2.2 JDBC的异常转换器 8.2.3 其他持久技术的异常转换器 8.3 统一数据访问模板 8.3.1 使用模板和回调机制 8.3.2 ...

    Spring in Action(第二版 中文高清版).part2

    第8章 Spring和基于POJO的远程服务 8.1 Spring远程调用概览 8.2 与RMI一起工作 8.2.1 连接RMI服务 8.2.2 输出RMI服务 8.3 使用Hessian和Burlap的远程调用 8.3.1 访问Hessian/Burlap服务 8.3.2 用Hessian或...

    Spring in Action(第二版 中文高清版).part1

    第8章 Spring和基于POJO的远程服务 8.1 Spring远程调用概览 8.2 与RMI一起工作 8.2.1 连接RMI服务 8.2.2 输出RMI服务 8.3 使用Hessian和Burlap的远程调用 8.3.1 访问Hessian/Burlap服务 8.3.2 用Hessian或...

    spring chm文档

    Spring Framework 开发参考手册 Rod Johnson Juergen Hoeller Alef Arendsen Colin Sampaleanu Rob Harrop Thomas Risberg Darren Davison Dmitriy Kopylenko Mark Pollack Thierry Templier Erwin ...

Global site tag (gtag.js) - Google Analytics