要使用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配置数据源,Spring的注解开发,Spring集成Junit,Spring的AOP,jdbcTemplate介绍,Spring控制事务流程,Spring集成web。
第三课:模拟Spring功能 5 第四课:搭建sping的运行环境 8 一、 建立一个新的项目 8 二、 建立spring的配置文件 8 三、 引入spring的jar包 8 四、 测试代码: 8 五、 注意接口的使用: 8 第五课:IOC(DI)配置及应用 ...
springboot的入门技术,详细的介绍了相关的技术信息,从spring的注解开发到最终的springboot整合mybatis,redis集群的组合都有详细的介绍
SpringAOP学习笔记以及四个可运行的Demo,涵盖经典代理模式、基于注解、基于xml配置这3方面的Demo
内容概要:学习Spring的一些学习笔记,主要学习Spring 框架两大核心机制(IoC、AOP) 笔记大纲:阅读笔记可以学习了解一下内容 如何使用 IoC ;配置文件;IoC 底层原理;通过运行时类获取 bean;通过有参构造创建 ...
第三课:模拟Spring功能 5 第四课:搭建sping的运行环境 8 一、 建立一个新的项目 8 二、 建立spring的配置文件 8 三、 引入spring的jar包 8 四、 测试代码: 8 五、 注意接口的使用: 8 第五课:IOC(DI)配置及应用 ...
4、想看spring aop 注解实现记录系统日志并入库等 二、能学到什么 1、收获可用源码 2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑实现 (需要知道原理的请看spring aop源码,此处不做赘述) 3、...
Spring2.5注解(标注)学习笔记: 一句话:对开发人员来说:最常用的Spring2.5最常用的注解就4个: @Resource @Qualifier @Service @Repository
SpringCloud学习笔记1. maven父子项目父工程配置新项目,maven,父工程名称字符编码,设置,编辑器文件编码注解功效激活java编译选择1.8 文件类型文件过滤删除掉父工程下的src,只保留一个pom.xml父工程的pom.xml...
Spring学习笔记Spring spring的配置 IOC 依赖注入 基于Xml的注入 基于注释的注入 Spring的自动注入和属性自动注入 AOP 静态代理 动态代理 使用spring实现AOP 基于Annotation实现AOP 基于XML实现AOP ...
狂神说Java——Spring学习笔记 内容概要: 1、了解什么是Spring 2、IOC 3、Spring配置 4、依赖注入 5、Bean的自动装配 6、注解开发 7、代理模式 8、AOP 能学到什么:详细了解Spring基础以及使用 阅读建议: 建议配合...
基于注解的spring_3.0.x_MVC学习笔记
本资源记录了在Java EE企业级应用开发学习过程中的第十天内容,重点关注了整合Spring、Spring MVC和MyBatis(SSM框架)进行注解开发的学习和应用。通过这一天的学习,您将掌握如何构建强大的Web应用程序,同时提供了...
本教程是简单笔记记录,从零到一学习 Spring Boot。本教程涉及的知识如下: Hell World 注解的使用依赖讲解 配置文件 YAML 配置文件讲解 Profile模式 配置文件优先级 外部配置加载顺序自动配置原理 日志处理 日志...
NULL 博文链接:https://coolszy.iteye.com/blog/542717
spring+springMVC+WebSocket 的学习笔记 ,超详细,源代码注释清晰,适合新手,赶紧下载吧,提高技术,面试升职加薪需要不断学习
NULL 博文链接:https://coolszy.iteye.com/blog/540465
声明式事务控制Spring提供对事务的控制管注解方式事务属性事务传播为如果当前方法有事务,当前方法事务会挂起,在为加入的方法开启一个新的事务,直到新的事务执完、