`
yaojinglive
  • 浏览: 7347 次
  • 性别: Icon_minigender_2
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Spring 注解学习记录

 
阅读更多
要使用Spring注解首先要在xml中声明
<context:annotation-config/> 

以上写法方便一次将四个关于annotationBeanPostProcessor声明

 

1AutowiredAnnotationBeanPostProcessor  提供spring特有的AutowiredQualifier注解

2CommonAnnotationBeanPostProcessor  支持JSR250的注释。

3PersistenceAnnotationBeanPostProcesser 支持JPAPersistenceUnitPersistenceContext注解

4RequiredAnnotationBeanPostProcesser 用于被检查Required注解标记的属性是否被设定

 

 

@Autowired 注解

   首先要添加负责处理注释的bean

 

<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
    
 

 

可以类成员变量、方法、构造函数进行标注,自动完成装备工作。AutowiredAnnotationBeanPostProcessor  会扫描spring中所有的Bean,默认按类型(class)匹配,只能有一个匹配的Bean,如果没有匹配的Bean或者多个匹配的bean会抛出BeanCreationException异常。

如果希望在找不到bean的情况下不报错需要@Autowired(required=false)。

如果有多个匹配的bean(class)相同,情况下不报错需要添加@Qualifier("test1"),告诉容器根据bean的Name(byName)来查找匹配的bean。

无需getter/setter方法,根据java的反射机制对成员变量进行自动注入。

 

例子如下:

 

 

package persion.springmvc.base;

public class Test1 {
    private String fist;
    private int    id;

    public String getFist() {
        return fist;
    }

    public void setFist(String fist) {
        this.fist = fist;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

 

 

public class Test2 {
    private String two;
    private int    id;

    public String getTwo() {
        return two;
    }

    public void setTwo(String two) {
        this.two = two;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

@Autowired 注解装配类成员变量

 

package persion.springmvc.base;

import org.springframework.beans.factory.annotation.Autowired;

public class AutowiredTest {
    @Autowired
    private Test1 test1;
    @Autowired
    private Test2 test2;
} 

 

使用JSR250注释

 

@Resource、@PostConstruct、@PreDestroy

1、@Resource

   首先要添加负责处理注释的bean

 

<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor "/>
 

 

相当于 @Autowired,不同的是 @Autowired根据byType自动注入而@Resource根据byName注入。

@Resource有两个属性,如果指定name属性容器根据byName查找bean,如果指定type则根据byType查找bean。如果都不指定则根据byName。

   name bean的名字

   type bean的类型

例子如下:

 

package persion.springmvc.base;
import javax.annotation.Resource;

public class ResourceTest {
    @Resource
    private Test1 test1;
    @Resource
    private Test2 test2;
}
 

 

 

2、 @PostConstruct与@PreDestroy这类注解只能使用在方法上

     @PostConstruct 表示在类初始化之后调用

     @PreDestroy 表示在类销毁前调用

 

package persion.springmvc.base;

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

public class Test1 {
    private String fist;
    private int    id;

    @PostConstruct
    public String postConstruct1() {
        return fist;
    }

    @PreDestroy
    public String preDestroy1() {
        return fist;
    }

    public String getFist() {
        return fist;
    }

    public void setFist(String fist) {
        this.fist = fist;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}
 

 

postConstruct1()方法将在Test1初始化之后被调用,preDestroy1() 将在Test1被销毁之前被调用。

 

 

@Component

将一个类注解成一个spring容器中的Bean,默认bean的作用范围是singleton的如果想要修改可以是用@scope注解。注释后spring容器还必须启用类扫描机制以启用注释驱动Bean定义和注释驱动Bean自动注入的策略。spring2.5对context命令空间进行了拓展。

@Component中有value元素代表bean的name。

代码示例:

 

package persion.springmvc.base;

import org.springframework.stereotype.Component;

@Component("test2")
public class Test2 {
    private String two;
    private int    id;

    public String getTwo() {
        return two;
    }

    public void setTwo(String two) {
        this.two = two;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

 

base-package 指定需要扫描的包

 

 

<context:component-scan base-package="persion.springmvc.base,com.core" ></context:component-scan>  
    

 

 <context:component-scan/>中还可以定义过滤器将某些类纳入或者排除。Spring支持4种类型的过滤方式:注解、类名指定、正则表达式、AspectJ。<context:include-filter/>代表纳入的包要写在<context:exclude-filter/>前面,<context:exclude-filter/>表示要过滤的包。<context:component-scan/>不但启用了对类包进行扫描以实施注解驱动bean定义的功能,同时还启动了注释驱动自动注入的功能(既还隐式的注册CommonAnnotationBeanPostProcessor和AutowiredAnnotationBeanPostProcessor)

 

 <context:component-scan base-package="com.app,com.core,JUnit4" >
    	<context:include-filter type="regex" expression="persion\.springmvc\.bb" />
    	<context:exclude-filter type="aspectj" expression="persion.springmvc.aa"/>
    </context:component-scan>  
 

@Controller 将类标注为web控制器,注册一个bean到Spring中Bean的id为类名(开头字母小写)。

@Service 将类标注为Service层服务,

@Repository 标注DAO层的数据访问

 

 

@RequestMapping 可以声明到类或者方法上。一般与@Controller同时使用,指定控制器或者方法对应URL,用在方法上可以指定method来限定。Springmvc支持的请求方法有:

 

GET 使用GET方法检索一个表述,也就是对资源的描述。多次执行同一个GET请求,不会对系统造成影响,GET方法具幂等性[指多个相同请求返回相同的结果]GET请求可以充分使用客户端请求。

 

POST 通常表示“创建一个新资源”,但它既不安全也不具幂等性(多次操作产生多个新资源)。

 

DELETE 表示删除一个资源,可以重复操作,直到得出结果;删除不存在的东西没有任何问题。

 

PUT 幂等性同样适用与PUT(基本的含义是“更新资源数据,如果资源不存在的话,则根据此URL创建一个新的资源”)。

一般浏览器只支持GETGET

 

 

@RequestParam绑定请求参数,此注解包含三个元素(参数):

value:参数名

required:是否是必须值,默认为true,表示请求中必须包含对应的参数名,如果不存在将抛异常。

 

 

分享到:
评论

相关推荐

    Spring框架学习笔记

    这份"Spring框架学习笔记"涵盖了Spring框架的基础知识、核心组件以及高级特性,对于初学者来说是一份宝贵的资料。 一、Spring框架概述 Spring框架是为了解决企业应用开发的复杂性而设计的,它提供了一个全面的基础...

    springsecurity学习笔记

    在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...

    马士兵老师spring框架学习笔记

    马士兵老师是知名的Java教育专家,他的Spring框架学习笔记深入浅出,对于初学者和进阶者来说都是一份宝贵的资源。这份笔记涵盖了Spring的核心概念、配置、AOP(面向切面编程)、DI(依赖注入)等关键知识点。 1. **...

    Spring学习笔记&源码

    本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...

    SpringCloud学习笔记

    【SpringBoot核心特性】 SpringBoot是Spring框架的一个扩展,它旨在简化Spring应用程序的开发过程,...这份学习笔记涵盖了SpringBoot的基础特性和SpringCloud的负载均衡实践,对于深入理解这两个技术有极大的帮助。

    spring aop 学习笔记

    本学习笔记将深入探讨Spring AOP的核心概念、工作原理以及实际应用。 1. **核心概念** - **切面(Aspect)**:切面是关注点的模块化,包含业务逻辑之外的横切关注点,如日志、事务管理。 - **连接点(Join Point...

    Java Spring框架学习笔记(内附源码).pdf

    在本次的Java Spring框架学习笔记中,将对Spring框架的核心概念进行详细解析,包括Spring的 IOC(控制反转)、AOP(面向切面编程)、jdbcTemplate、事务管理、Spring5新特性以及与Mybatis的整合。本学习笔记提供了...

    spring指南学习笔记

    标题和描述均提到了“spring指南学习笔记”,这意味着文档聚焦于Spring框架的学习心得与关键概念。Spring是一个开源的Java企业级应用框架,以其强大的依赖注入(Dependency Injection, DI)和面向切面编程(Aspect ...

    Spring学习笔记+学习源码.zip

    这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...

    spring框架学习笔记

    本笔记将深入探讨Spring框架的核心概念和主要功能,帮助你全面理解并掌握这一强大的工具。 一、Spring概述 Spring是一个开源的Java平台,它提供了一个全面的编程和配置模型,用于现代Java应用。其核心是IoC容器,...

    spring-boot学习笔记

    ### Spring Boot 学习笔记知识点总结 #### 一、Spring发展史 - **Spring1.x时代**:在Spring1.x的时代,主要通过XML文件来配置Bean。随着项目的规模扩大,XML配置文件的数量也随之增加,这导致开发人员需要频繁地...

    Spring的学习笔记

    以下将详细介绍Spring学习笔记中的主要知识点。 **面向抽象编程** 面向抽象编程是一种设计原则,强调在代码中使用接口或抽象类,而不是具体实现类。这使得系统更具有灵活性,易于扩展和维护。在Spring框架中,我们...

    Spring入门学习笔记|Spring学习.pdf

    Spring入门学习笔记,内容包括Spring介绍,Spring配置文件,Spring配置数据源,Spring的注解开发,Spring集成Junit,Spring的AOP,jdbcTemplate介绍,Spring控制事务流程,Spring集成web。

    尚学堂Spring学习笔记

    本文档记录了尚学堂Spring学习笔记的重要知识点,涵盖了Spring配置文件的设置、普通属性的注入、自定义属性编辑器、公共属性的注入、Spring注解等内容。 一、Spring配置文件的设置 在MyEclipse中编写Spring配置...

    spring2.0学习笔记+spring定时任务

    标题 "spring2.0学习笔记+spring定时任务" 暗示了我们即将探讨的是关于Spring框架2.0版本的学习心得以及如何在Spring中配置和使用定时任务。在这个主题下,我们将深入理解Spring的核心概念,特别是它在企业级Java...

    spring编程学习笔记

    在"Spring笔记.pdf"、"Spring笔记1.pdf"和"Spring编程学习笔记2.pdf"中,你将找到关于这些概念的详细解释和实例,包括XML配置、注解驱动的编程、AOP的实现方式、Spring Boot的快速启动指南以及Spring MVC的...

    spring入门学习笔记

    Spring框架是Java开发中不可或缺的一部分,它以其强大的功能和灵活性深受开发者喜爱。Spring的主要目标是简化企业级应用程序的开发,并且...学习并掌握Spring,对于Java开发人员来说,无疑是提升专业技能的重要一步。

    Spring技术内幕 学习笔记

    《Spring技术内幕 学习笔记》是一份深入探讨Spring框架核心机制的学习资料,结合作者zzc1684在iteye博客上的博文,我们可以从中学习到Spring框架的多个重要知识点。Spring作为Java企业级应用开发的基石,其设计思想...

    Spring Boot 学习笔记完整教程.pdf

    ### Spring Boot 学习笔记知识点 #### 1. Spring Boot 简介 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。它使用了特定的方式来配置Spring,使得开发者...

Global site tag (gtag.js) - Google Analytics