要使用Spring注解首先要在xml中声明
<context:annotation-config/>
以上写法方便一次将四个关于annotation的BeanPostProcessor声明。
1、AutowiredAnnotationBeanPostProcessor 提供spring特有的Autowired和Qualifier注解
2、CommonAnnotationBeanPostProcessor
支持JSR250的注释。
3、PersistenceAnnotationBeanPostProcesser
支持JPA的PersistenceUnit和PersistenceContext注解
4、RequiredAnnotationBeanPostProcesser
用于被检查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创建一个新的资源”)。
一般浏览器只支持GET、GET。
@RequestParam绑定请求参数,此注解包含三个元素(参数):
value:参数名
required:是否是必须值,默认为true,表示请求中必须包含对应的参数名,如果不存在将抛异常。
分享到:
相关推荐
这份"Spring框架学习笔记"涵盖了Spring框架的基础知识、核心组件以及高级特性,对于初学者来说是一份宝贵的资料。 一、Spring框架概述 Spring框架是为了解决企业应用开发的复杂性而设计的,它提供了一个全面的基础...
在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...
马士兵老师是知名的Java教育专家,他的Spring框架学习笔记深入浅出,对于初学者和进阶者来说都是一份宝贵的资源。这份笔记涵盖了Spring的核心概念、配置、AOP(面向切面编程)、DI(依赖注入)等关键知识点。 1. **...
本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...
【SpringBoot核心特性】 SpringBoot是Spring框架的一个扩展,它旨在简化Spring应用程序的开发过程,...这份学习笔记涵盖了SpringBoot的基础特性和SpringCloud的负载均衡实践,对于深入理解这两个技术有极大的帮助。
本学习笔记将深入探讨Spring AOP的核心概念、工作原理以及实际应用。 1. **核心概念** - **切面(Aspect)**:切面是关注点的模块化,包含业务逻辑之外的横切关注点,如日志、事务管理。 - **连接点(Join Point...
在本次的Java Spring框架学习笔记中,将对Spring框架的核心概念进行详细解析,包括Spring的 IOC(控制反转)、AOP(面向切面编程)、jdbcTemplate、事务管理、Spring5新特性以及与Mybatis的整合。本学习笔记提供了...
标题和描述均提到了“spring指南学习笔记”,这意味着文档聚焦于Spring框架的学习心得与关键概念。Spring是一个开源的Java企业级应用框架,以其强大的依赖注入(Dependency Injection, DI)和面向切面编程(Aspect ...
这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...
本笔记将深入探讨Spring框架的核心概念和主要功能,帮助你全面理解并掌握这一强大的工具。 一、Spring概述 Spring是一个开源的Java平台,它提供了一个全面的编程和配置模型,用于现代Java应用。其核心是IoC容器,...
### Spring Boot 学习笔记知识点总结 #### 一、Spring发展史 - **Spring1.x时代**:在Spring1.x的时代,主要通过XML文件来配置Bean。随着项目的规模扩大,XML配置文件的数量也随之增加,这导致开发人员需要频繁地...
以下将详细介绍Spring学习笔记中的主要知识点。 **面向抽象编程** 面向抽象编程是一种设计原则,强调在代码中使用接口或抽象类,而不是具体实现类。这使得系统更具有灵活性,易于扩展和维护。在Spring框架中,我们...
Spring入门学习笔记,内容包括Spring介绍,Spring配置文件,Spring配置数据源,Spring的注解开发,Spring集成Junit,Spring的AOP,jdbcTemplate介绍,Spring控制事务流程,Spring集成web。
本文档记录了尚学堂Spring学习笔记的重要知识点,涵盖了Spring配置文件的设置、普通属性的注入、自定义属性编辑器、公共属性的注入、Spring注解等内容。 一、Spring配置文件的设置 在MyEclipse中编写Spring配置...
标题 "spring2.0学习笔记+spring定时任务" 暗示了我们即将探讨的是关于Spring框架2.0版本的学习心得以及如何在Spring中配置和使用定时任务。在这个主题下,我们将深入理解Spring的核心概念,特别是它在企业级Java...
在"Spring笔记.pdf"、"Spring笔记1.pdf"和"Spring编程学习笔记2.pdf"中,你将找到关于这些概念的详细解释和实例,包括XML配置、注解驱动的编程、AOP的实现方式、Spring Boot的快速启动指南以及Spring MVC的...
Spring框架是Java开发中不可或缺的一部分,它以其强大的功能和灵活性深受开发者喜爱。Spring的主要目标是简化企业级应用程序的开发,并且...学习并掌握Spring,对于Java开发人员来说,无疑是提升专业技能的重要一步。
《Spring技术内幕 学习笔记》是一份深入探讨Spring框架核心机制的学习资料,结合作者zzc1684在iteye博客上的博文,我们可以从中学习到Spring框架的多个重要知识点。Spring作为Java企业级应用开发的基石,其设计思想...
### Spring Boot 学习笔记知识点 #### 1. Spring Boot 简介 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。它使用了特定的方式来配置Spring,使得开发者...