zoukankan      html  css  js  c++  java
  • spring-注解

    spring框架提供xml文件的配置,也提供基于注解的方式实现配置任何的Bean实例,目前,struts2、hibernate和spring都相继支持基于注解的实现方式。spring要求程序员指定搜索哪些路径下的java类,spring会把合适的java类全部注册成spring bean。

    下面对基本的注解进行简要的解释和使用示例。

    1、@Component:标注一个普通的spring bean

    (1)、编写java代码

    student:

    package cn.study.basic.test7;
    
    import org.springframework.stereotype.Component;
    
    @Component
    public class Student implements People {
    
    	@Override
    	public void action() {
    		System.out.println("studing^^");
    	}
    
    }
    

    worker:

    package cn.study.basic.test7;
    
    import org.springframework.stereotype.Component;
    
    @Component
    public class Worker implements People {
    
    	@Override
    	public void action() {
    		System.out.println("working");
    	}
    
    }

    (2)、bean.xml配置文件,base-package指定要搜索的包的路径

    <context:component-scan base-package="cn.study.basic.test7.Student"></context:component-scan>

    补充:context:component节点下有include-filterexclude-filter节点,配置文件的格式如下

    <context:component-scan base-package="cn.study.basic.test7">
    <context:include-filter type="regex" expression=""/>
    <context:exclude-filter/>
    </context:component-scan>
    
    • include-filter用于指定spring bean类,只要位于指定路径下的java类满足这种规则,即使这些java类没有使用annotation标注,spring一样将会把它们当做Bean类来处理
    • type:指定过滤器类型
    • expression:指定过滤器所需要的表达式

           spring支持4种过滤器:

    •  regex:正则表达式过滤器,配置改正则表达式的java类,如:.*Chinese
    • annotation: annotation过滤器
    • aspectj:AspectJ过滤器
    • assignable:类名过滤器该过滤器直接指定一个java类

    (3)、代码测试

    package cn.study.basic.test7;
    
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class TestMain {
    	@Test
    	public void testMain() throws Exception {
    		ApplicationContext ctx=new ClassPathXmlApplicationContext("bean.xml");
    		System.out.println(java.util.Arrays.toString(ctx.getBeanDefinitionNames()));
    	}
    }
    

    运行代码,结果如下:

    [student, worker, org.springframework.context.annotation.internalConfigurationAnnotationProcessor, org.springframework.context.annotation.internalAutowiredAnnotationProcessor, org.springframework.context.annotation.internalRequiredAnnotationProcessor, org.springframework.context.annotation.internalCommonAnnotationProcessor, dog, dd, myBeanPostProcessor, ch, axe, account, cn.study.basic.EmailListener#0, pl, spContext]

    从上面的结果可以看出,如果没有在component中进行命名,则spring框架默认使用类的名称,并且小写首字母

    (2)@Service,标注一个业务逻辑组件类,通常是多层架构的Service层

    (3)@Controller 标注一个控制器组件类,在struts中通常是Action层
    (4)@Repository 标注一个DAO组件类

    (5)@Scope():指定当前的Bean示例的作用域,默认值是singleton

    (6)@Resource:

    (7)@PostConstruct:作用与在配置文件中的init-method一样

    (8)@PreDestroy:作用与在配置文件中的destroy-method一样

  • 相关阅读:
    Constants and Variables
    随想
    C#基础篇之语言和框架介绍
    Python基础19 实例方法 类方法 静态方法 私有变量 私有方法 属性
    Python基础18 实例变量 类变量 构造方法
    Python基础17 嵌套函数 函数类型和Lambda表达式 三大基础函数 filter() map() reduce()
    Python基础16 函数返回值 作用区域 生成器
    Python基础11 List插入,删除,替换和其他常用方法 insert() remove() pop() reverse() copy() clear() index() count()
    Python基础15 函数的定义 使用关键字参数调用 参数默认值 可变参数
    Python基础14 字典的创建修改访问和遍历 popitem() keys() values() items()
  • 原文地址:https://www.cnblogs.com/gyouxu/p/4008411.html
Copyright © 2011-2022 走看看