导航:首页 > 文件教程 > spring注解教程

spring注解教程

发布时间:2023-05-18 12:47:38

1. Spring 常用注解大全

@Controller:组合注解(组合了@Component注解),应用在Controller层(控制层)。

@Service:组合注解(组合了@Component注解),应用在Service层(业务逻辑层)。

@Reponsitory:组合注解(组合了@Component注解),应用在Dao层(数据访问层)。

@Component:表示类是一个“组件”,成为Spring管理的Bean。同时@Component还是一个元注解。

@Autowired:Spring提供的工具(由Spring的依赖注入工具BeanPostProcessor或BeanFactoryPostProcessor自动注入)。

@Resource:JSR-250提供的注解。

@Inject:JSR-330提供的注解。

@Configuration:声明当前类是一个配置类(相当于一个Spring配置文件)。

@ComponentScan:自动扫描指定包下所有使用@Service,@Component,@Controller,@Repository的类并注册。

@Bean:注解在方法上,声明当前方法的返回值为一个Bean。返回的Bean对应的类中可以定义init()方法和destroy()方法,然后在@Bean(initMethod=”init”, destroyMethod=”destroy”)定义,在构造之后执行init,在销毁之前执行destroy。

@Aspect:声明一个切面。

@After:后置建言(advice),在原方法前执行。

@Before:前置建言(advice),在原方法后执行。

@Around:环绕建言(advice),在原方法执行前执行,在原方法执行后再执行。

@PointCut:声明切点,即定义拦截规则,确定有哪些方法会被切入。

@Transactional:声明事务(一般默认配置即可满足要求,当然也可以自定义)。

@Cacheable:声明数据缓存。

@EnableAspectJAutoProxy:开启Spring对AspectJ的支持。

@Value:值得注入。经常与Sping EL表达式语言一起使用,注入普通字符,系统属性,表达式运算结果,其他Bean的属性,文件内容,网址请求内容,配置文件属性值等。

@PropertySource:指定文件地址。提供了一种方便的、声明性的机制,用于向Spring的环境添加PropertySource。与@Configuration类一起使用。

@PostConstruct:标注在方法上,该方法在构造函数执行完成之后执行。

@PreDestroy:标注在方法上,该方法在对象销毁之前执行。

@Profile:表示当一个或多个指定的文件是活动的时,一个组件是有资格注册的。使用@Profile注解类或者方法,达到在不同情况下选择实例化不同的Bean。@Profile(“dev”)表示为dev时实例化。

@EnableAsync:开启异步任务支持。注解在配置类上。

@Async:注解在方法上表示这是一个异步方法,在类上表示这个类所有的方法都是异步方法。

@EnableScheling:注解在配置类上,开启对计划任务的支持。

@Scheled:注解在方法上,声明该方法是计划任务。支持多种类型的计划任务:cron,fixDelay,fixRate。

@Conditional:根据满足某一特定条件创建特定的Bean。

@Enable*:通过简单的@Enable*来开启一项功能的支持。所有@Enable*注解都有一个@Import注解,@Import是用来导入配置类的,这也就意味着这些自动开启的实现其实是导入了一些自动配置的Bean。

@RunWith:这个是Junit的注解,SpringBoot集成了junit。一般在测试类里使用:@RunWith(SpringJUnit4ClassRunner.class) — SpringJUnit4ClassRunner在JUnit环境下提供Sprng TestContext Framework的功能

@ContextConfiguration:用来加载配置ApplicationContext,其中classes属性用来加载配置类:@ContextConfiguration(classes = {TestConfig.class(自定义的一个配置类)})

@ActiveProfiles:用来声明活动的profile–@ActiveProfiles(“prod”(这个prod定义在配置类中))

@EnableWebMvc:用在配置类上,开启SpringMvc的Mvc的一些默认配置:如ViewResolver,MessageConverter等。同时在自己定制SpringMvc的相关配置时需要做到两点:1:配置类继承WebMvcConfigurerAdapter类,2:就是必须使用这个@EnableWebMvc注解。

@RequestMapping:用来映射web请求(访问路径和参数),处理类和方法的。可以注解在类和方法上,注解在方法上的@RequestMapping路径会继承注解在类上的路径。同时支持Serlvet的request和response作为参数,也支持对request和response的媒体类型进行配置。其中有value(路径),proces(定义返回的媒体类型和字符集),method(指定请求方式)等属性。

@ResponseBody:将返回值放在response体内。返回的是数据而不是页面

@RequestBody:允许request的参数在request体中,而不是在直接链接在地址的后面。此注解放置在参数前。

@PathVariable:放置在参数前,用来接受路径参数。

@RestController:组合注解,组合了@Controller和@ResponseBody,当我们只开发一个和页面交互数据的控制层的时候可以使用此注解。

@ControllerAdvice:用在类上,声明一个控制器建言,它也组合了@Component注解,会自动注册为Spring的Bean。

@ExceptionHandler:用在方法上定义全局处理,通过他的value属性可以过滤拦截的条件:@ExceptionHandler(value=Exception.class)–表示拦截所有的Exception。

@ModelAttribute:将键值对添加到全局,所有注解了@RequestMapping的方法可获得次键值对(就是在请求到达之前,往model里addAttribute一对name-value而已)。

@InitBinder:通过@InitBinder注解定制WebDataBinder(用在方法上,方法有一个WebDataBinder作为参数,用WebDataBinder在方法内定制数据绑定,例如可以忽略request传过来的参数Id等)。

@WebAppConfiguration:一般用在测试上,注解在类上,用来声明加载的ApplicationContext是一个WebApplicationContext。他的属性指定的是Web资源的位置,默认为src/main/webapp,我们可以修改为:@WebAppConfiguration(“src/main/resources”)。

@EnableAutoConfiguration:此注释自动载入应用程序所需的所有Bean——这依赖于Spring Boot在类路径中的查找。该注解组合了@Import注解,@Import注解导入了类,它使用SpringFactoriesLoader.loaderFactoryNames方法来扫描具有META-INF/spring.factories文件的jar包。而spring.factories里声明了有哪些自动配置。

@SpingBootApplication:SpringBoot的核心注解,主要目的是开启自动配置。它也是一个组合注解,主要组合了@Configurer,@EnableAutoConfiguration(核心)和@ComponentScan。可以通过@SpringBootApplication(exclude={想要关闭的自动配置的类名.class})来关闭特定的自动配置。

@ImportResource:虽然Spring提倡零配置,但是还是提供了对xml文件的支持,这个注解就是用来加载xml配置的。例:@ImportResource({“classpath

@ConfigurationProperties:将properties属性与一个Bean及其属性相关联,从而实现类型安全的配置。例:@ConfigurationProperties(prefix=”authot”, locations={“classpath

@ConditionalOnBean:条件注解。当容器里有指定Bean的条件下。

@ConditionalOnClass:条件注解。当类路径下有指定的类的条件下。

@ConditionalOnExpression:条件注解。基于SpEL表达式作为判断条件。

@ConditionalOnjava:条件注解。基于JVM版本作为判断条件。

@ConditionalOnJndi:条件注解。在JNDI存在的条件下查找指定的位置。

@ConditionalOnMissingBean:条件注解。当容器里没有指定Bean的情况下。

@ConditionalOnMissingClass:条件注解。当类路径下没有指定的类的情况下。

@:条件注解。当前项目不是web项目的条件下。

@ConditionalOnResource:条件注解。类路径是否有指定的值。

@ConditionalOnSingleCandidate:条件注解。当指定Bean在容器中只有一个,后者虽然有多个但是指定首选的Bean。

@ConditionalOnWebApplication:条件注解。当前项目是web项目的情况下。

@EnableConfigurationProperties:注解在类上,声明开启属性注入,使用@Autowired注入。例:@EnableConfigurationProperties(HttpEncodingProperties.class)。

@AutoConfigureAfter:在指定的自动配置类之后再配置。例:@AutoConfigureAfter(WebMvcAutoConfiguration.class)。

转自:https://www.cnblogs.com/alter888/p/9083963.html

2. Spring注解

     @Component(当一个类无法确定分类,但需要存入ioc容器可以使用这个注解)

        @ Controller(表现层) 、@ Service(业务层) 、@ Repository(持久层)。

             作用:用于把当前类对象存入spring容器中

            属性: value :用于指定bean的id。当我们不写时,它的默认值是当前类名,且首字母改小写。

    @ Autowire:自动按类型注入。弯早 出现位置:可以在变量上、也可以是方法上。

         细节:在使用注解注入时,set方法就不是必须的了

    @ Qualifier:按照类中注入的基础之上再按照名称注入。

    @ Resource : 直接按照bean的id注入。它可以独立使用

    @ Value:用于注入基本类型和String类型的数据

   ( 作用就和在bean标签中使用scope属性实现的功能是一样的 )

    @ Scope: 常用取值: singleton 、prototype

    ( 作用就和在bean标签中使用init-method和destroy-method的作用是一样的 )

     @ PostConstruct:用于指定初始化方法。 在类中方法上指定

    @ PreDestroy:用于指定销毁方法。 在类裂液中方法埋源雀上指定(最好是单例对象,因为多例对象有java回收垃圾机制回收)

    @ Configuration: 指定当前类是一个配置类

    @ ComponentScan: 指定创建容器时要扫描的包。和本文开头加入的内容作用是一致的

    @ PropertySource ("classpath:jdbc.properties"):加载配置文件

    @ Import: 用于引入其他的类,将其他配置类导入总配置类

3. spring注解怎么使用

spring注解镇滑

1.准备工作
(1)导入common-annotations.jar
(2)导入schema文件 文件名为spring-context-2.5.xsd
(3)在搜旅者xml的beans节点中配世薯置

2.xml配置工作

4. java开发中spring注解的使用方法

注解方式李态配置(简化XML配置文件)
组件自动扫描功能
首先需要在applicationContext.xml中添加<context:component-scan/>
a.扫描Bean组件的注解,替代xml中的<bean>元素的定义。
@Service 用于Service业务组件
@Control 用于Action控制组件
@Respository 用于DAO数据访问组哪源源件
@Component 用于其他组件
Bean组件扫描到容器后,裂羡默认名字为类名(首字母小写)
如果需要自定义名称可以使用@Service("id名")
b.依赖注入的注解标记
@Resource 按名称@Resource(name="id名")
@AutoWired 按名称
@Autowired
@Qualifier("id名")
c.其他注解
@Scope 等价于<bean scope="">
@PostConstruct 等价于<bean init-method="">
@PreDestroy 等价于<bean destroy-method="">

5. spring常用注解

一、组件注解

1、 @Component(“xxx”)

指定某个类是容器的bean, @Component(value="xx") 相当于 ,其中 value 可以不写。

用于标注类为spring容器bean的注解有四个, 主要用于区别不同的组件类,提高代码的可读性:

a、 @Component, 用于标注一个普通的bean

b、 @Controller 用于标注一个控制器类(控制层 controller)

c、 @Service 用于标注业务逻辑类(业务逻辑层 service)

d、 @Repository 用于标注DAO数据访问类 (数据访问层 )

对于上面四种注解的解析可能是相同的,尽量使用不同的注解提高代码可读性。

注解用于修饰类,当不写value属性值时,默认值为类名首字母小写。

2、 @Scope(“prototype”)

该注解和 @Component 这一类注解联合使用,用于标记该类的作用域,默认 singleton 。
也可以和 @Bean 一起使用,此时 @Scope 修饰一个方法。关于@Bean稍后有说明

3、 @Lazy(true)

指定bean是否延时初始化,相当于 ,默认false。@Lazy可以和@Component这一类注解联合使用修饰类,也可以和@Bean一起使用修饰方法

注 :此处初始化不是指不执行 init-method ,而是不创建bean实例和依赖注入。只有当该bean(被@Lazy修饰的类或方法)被其他bean引用(可以是自动注入的方式)或者执行getBean方法获取,才会真正的创建该bean实例,其实这也是BeanFactory的执行方式。

4、 @DepondsOn({“aa”,“bb”})

该注解也是配合 @Component 这类注解使用,用于强制初始化其他bean

上面的代码指定,初始化bean “userAction"之前需要先初始化“aa”和“bb”两个bean,但是使用了@Lazy(true)所以spring容器初始化时不会初始化"userAction” bean。

5、 @PostConstructor和@PreDestroy

@PostConstructor 和 @PreDestroy 这两个注解是j2ee规范下的注解。这两个注解用于修饰方法,spring用这两个注解管理容器中spring生命周期行为。

a、 @PostConstructor 从名字可以看出构造器之后调用,相当于 。就是在依赖注入之后执行

b、 @PreDestroy 容器销毁之前bean调用的方法,相当于

6、 @Resource(name=“xx”)

@Resource 可以修饰成员变量也可以修饰set方法。当修饰成员变量时可以不写set方法,此时spring会直接使用j2ee规范的Field注入。

@Resource有两个比较重要的属性,name和type

a、 如果指定了name和type,则从Spring容器中找到唯一匹配的bean进行装配,找不到则抛出异常;

b、 如果指定了name,则从spring容器查找名称(id)匹配的bean进行装配,找不到则抛出异常;

c、 如果指定了type,则从spring容器中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常;

d、 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配

如果没有写name属性值时

a、 修饰成员变量,此时name为成员变量名称

b、 修饰set方法,此时name 为set方法的去掉set后首字母小写得到的字符串

7、 @Autowired(required=false)

@Autowired可以修饰构造器,成员变量,set方法,普通方法。@Autowired默认使用byType方式自动装配。required标记该类型的bean是否是必须的,默认为必须存在(true)。

可以配合 @Qualifier(value="xx") ,实现按beanName注入:

a、 required=true(默认),为true时,从spring容器查找和指定类型匹配的bean,匹配不到或匹配多个则抛出异常

b、 使用 @Qualifier("xx") ,则会从spring容器匹配类型和 id 一致的bean,匹配不到则抛出异常

@Autowired会根据修饰的成员选取不同的类型:

a、 修饰成员变量。该类型为成员变量类型

b、 修饰方法,构造器。注入类型为参数的数据类型,当然可以有多个参数

8、demo

业务逻辑层:

数据访问层:

测试类:

输出结果:

可以看到虽然UserDao 使用@Lazy,但是还是在spring容器初始化的时候还是创建了UserDao实例。原因很简单,因为在UserService中需要注入UserDao,所以在此时创建的UserDao实例也属于延时初始化。

在上面我们还使用了两个接口InitializingBean 和DisposableBean,这两个接口用于管理 singleton 作用域的bean的生命周期,类似init-method和destroy-method。不同之处就是调用的循序不一致:

a、 初始化调用顺序 :@PostConstructor > InitializingBean > init-method 用于指定bean依赖注入后的行为

b、 销毁调用顺序 @PreDestroy > DisposableBean > destroy-method 用于定制bean销毁之前的行为

该注解是AspectJ中的注解,并不是spring提供的,所以还需要导入aspectjweaver.jar,aspectjrt.jar,除此之外还需要依赖aopalliance.jar

依赖包:

UserDao.java

配置文件 applicationContext.xml:

测试类:

1、 @Aspect

修饰Java类,指定该类为切面类。当spring容器检测到某个bean被@Aspect修饰时,spring容器不会对该bean做增强处理(bean后处理器增强,代理增强)

2、 @Before

修饰方法,before增强处理。用于对目标方法(切入点表达式表示方法)执行前做增强处理。可以用于权限检查,登陆检查。

常用属性:

value: 指定切入点表达式 或者引用一个切入点

对com.example.aop 包下所有的类的所有方法做 before增强处理:

结果:

如果同一条切入点表达式被使用多次,可以使用更友好的方式。定义一个切入点:

增强方法可以接受一个JoinPoint 类型的参数,用于获取被执行目标方法的一下属性。

结果:

3、 @AfterReturning

修饰方法,afterreturning增强处理。目标方法正常结束后做增强处理。

常用属性:

a、 pointcut/value:指定切入点表达式

b、 returning:指定一个参数名,用于接受目标方法正常结束时返回的值。参数名称需要在增强方法中定义同名的参数。

注意:

a、 如果使用了returning 。那么增强方法中的数据类型必须是返回结果的类型或者父类型,否则不会调用该增强处理。

b、 使用了returning 还可以用来 修改返回结果 。

以上面的例子来说,目标方法返回结果类型应该满足下面的条件

修改返回值:

结果:

可以看到 AfterReturning 修改了返回结果。

4、 @AfterThrowing

修饰方法,afterthrowing增强处理。当目标程序方法抛出 异常或者异常无法捕获时,做增强处理。

常用属性:

a、 pointcut/value :指定切入点表达式

b、 throwing:指定一个形参,在增强方法中定义同名形参,用于访问目标方法抛出的异常

参数类型必须是 Throwable 的子类,同样也会有上面@AfterReturning 参数类型匹配的问题。

5、 @After

修饰方法 ,after增强处理。无论方法是否正常结束,都会调用该增强处理(@After= @AfterReturning+@AfterThrowing)。但是该增强方式无法获取目标方法的返回结果,也获取目标方法抛出的异常。所以一般用于进行释放资源,功能类似于 finally。

常用属性:

a、 value :指定切入点表达式

结果:

从上面的结果来看 After 增加处理 ,因为不能接受返回结果作为参数,所以不能修改返回结果。

6、 @Around

修饰方法, around增强处理。该处理可以目标方法执行之前和执行之后织入增强处理(@Before+@AfterReturning)。

Around增强处理通常需要在线程安全的环境下使用,如果@Before和@AfterReturning可以处理就没必要使用@Around。

常用属性:

a、 value :指定切入点表达式

当定义一个Aound增前处理时,增强方法第一形参需要时ProceedingJoinPoint类型。ProceedingJoinPoint有一个Object proceed()方法,用于执行目标方法。当然也可以为目标方法传递数组参数,来修改目前方法的传入参数。

around小结:

a、 Around增强处理通常需要 在线程安全 的环境下使用

b、 调用 proceed()可以获取返回结果,所以可以修改目标方法的返回值

c、 proceed(Object[] var1) 可以修改入参,修改目标方法的入参

d、 可以进行目标方法执行之前和执行之后织入增强处理

around 和 afterReturning 都可以修改返回结果。不过两者的原理不同:

a、 around:可以任意修改,或者返回不相关的值。这个返回值完全可以自主控制

b、 afterReturning,通过方法参数 ,使用对象引用的方式来修改对象。修改对象引用地址那么修改时无效的

除此之外从输出结果来看,增强处理是有序的:

around 和 afterReturning小结:

a、 只有 around 和 afterReturning 可以获取并修改返回结果。需要注意两种方式修改的区别。

b、 around 需要线程安全

c、 虽然增强处理都需要 切入点表达式,并不是都支持 pointcut 属性,所以最好都是用value 属性指定。当注解只需要value属性时,value可以省略

7、 @Pointcut

修饰方法,定义一个切入点表达式用于被其他增强调用。使用该方式定义切入点方便管理,易复用。

切入点方法定义和测试方法定义类似,具有以下特点:

a、 无返回值 (void)

b、 无参数

c、 方法体为空

d、 方法名就是切入点名称

e、 方法名不能为 execution

切入点表达式

切入点表达式可以通过 && 、 || 、 ! 连接

1)、execution 表达式:

2)、within 表达式:

a、匹配指定类下的所有方法。

b、匹配执行包及其子包下所有类的所有方法。

所以within可以看做execution的简写,不需要指定返回类型、方法名、参数( 最小作用单位是类 )

3)、 @annotation:匹配使用指定注解修饰的目标方法;

匹配使用@CustomMethodAnnotation注解的目标方法。

4)、 @within: 用于匹配使用指定注解修饰的类下的所有方法

within 作用范围是类,@within的作用范围与其一致。不同的是@within 指定的不是类而是注解

匹配使用@ResponseBody 注解的类 下的所有方法。

AOP小结:

1)、 Around增强处理通常需要 在线程安全 的环境下使用

2)、 使用 around 和 afterReturning 可以获取并修改返回结果

3)、 增强处理指定 切入点表达式时,最好使用value 属性

4)、 切入点 名称(方法名)不能为 execution

5)、 AfterReturning 指定了 returning 属性接受目标方法返回结果,注意 参数类型需要和返回结果类型一致(满足 resutType instanceof argsType )

增强方式的顺序:

1、 @Bean(name=“xxx”)

修饰方法,该方法的返回值为spring容器中管理的bean。当然该注解和上面的@Component效果一样,主要用于做区分。

@Bean 通常使用在 @Configuration 修饰的配置类中,该注解功能相当于 元素

常用的属性:

a、 name:bean id 。name可以省略,省略时bean名称为方法名。也可以指定多个名称(逗号隔开)。

b、 autowire: 是否自动注入,默认Autowire.NO

c、 initMethod:bean的初始化方法。在依赖注入之后执行

d、 destroyMethod: spring容器关闭时bean调用的方法
当然 @Bean 还可以配合 @Scope 指定bean的作用域

2、 @ConfigurationProperties

用于从属性文件中获取值 application.properties 或者 application.yml 。当然了 如果在配置文件中引入其他配置文件,也可以获取到属性值。

包含的属性:

a、 value | prefix 两者互为别名。指定前缀,默认为""

b、 ignoreUnknownFields:默认为true。是否忽略未知字段,当实体中的字段在配置文件中不存在时,是忽略还是抛出异常

c、 ignoreInvalidFields: 默认false。 是否忽略不合法的字段,此处的不合法是指类型不合适,配置文件中存在改配置但是无法转化为指定的字段类型。

Mybatis属性配置

application.properties:

ConfigurationProperties 可以配置前缀,然后会根据实体的变量名拼接前缀,去配置文件中查询配置。

3、 @Configuration

修饰一个Java类,被修饰的类相当于一个xml配置文件。功能类似于 。在springboot中大量使用了该注解,该注解提供了一种使用Java类方式配置bean。

可以发现 @Configuration使用了@Component 注解修饰。

实例

配置Mybatis会话工厂

4、 @Import

功能和 类似,修饰Java类,用于向当前类导入其他配置类。 可以导入多个配置文件,通常用于导入不在包扫描范围内的配置文件。可以被扫描的配置类可以直接访问,没有必要使用@Import 导入。

比如 SpringBoot的启动类指定的包扫描路径为 com.example

数据库的配置文件在 com包下。

在MyBatisConfig 中引入 DataSourceConfig, 就会解析DataSourceConfig。将解析出的Bean交给容器管理

5、 @ImportResource

修饰Java类,用于向类引入xml配置文件。

用于导入包含bean定义的配置文件,功能和 类似。默认情况下可以处理后缀为 .groovy 和.xml 的配置文件

6、 @Value("${expression}")

修饰成员变量或者 方法、构造器的参数,用于属性值注入(在配置文件中配置的值)。

注意: @Value不能对 static 属性注入。

如果的确需要注入到静态变量,可以通过以下方式间接进行注入:

1)、设置一个私有静态 实例

2)、通过构造函数或者 @PostConstruct 注解为 静态实例 赋值,指向本身(this)

3)、对成员属性注入内容

4)、提供静态方法,使用静态实例获取成员属性

7、@PropertySource(value=“classpath:jdbc.properties”)

该注解用来加载属性文件。

常用属性:

a、 ignoreResourceNotFound: 当资源文件找不到的时候是否会忽略该配置,而不是抛出错误。一般用于可选项

b、 encoding : 资源文件使用什么编码方式

c、 value : 指定属性文件位置。可以配置多个属性文件,不可以使用通配符。

在 PropertySource 中可以指定多个路径,并且会将属性文件中的值加载到 Environment 中。

@ConfigurationProperties 和 @PropertySource

它们的使用有一些差异:

1)、 @PropertySource 使用该注解加载的是 相对独立的属性文件,可以同时加载多个文件 (xxx.properties),而且 不支持自动注入 , 不支持前缀注入

2)、 @ConfigurationProperties 用于加载配置文件(application.properties | application.yml)。该注解功能更强大:

a、 支持前缀注入 ( prefix )

b、 相同属性名的自动注入

c、 $("") 支持EL表达式注入

应用实例:

在以往的开发中通常会将数据库连接信息存放在单独的属性文件中(jdbc.properties)。而在spring boot 中我们会将数据库的信息存放在配置文件中,这会极大便利开发工作。

jdbc.properties:

可以通过 @Value 注解将配置文件的值注入到实体类中

也可以注入Environment ,通过Environment 获取值

1、 @ResponseBody

控制器方法返回值会使用 HttpMessageConverter 进行数据格式化,转化为JSON字符串。

同样的 ResponseBodyAdvice: 针对使用@ResponseBody的注解的类,方法做增强处理。

2、 @RestController

@RestController = @Controller + @ResponseBody , 所以通常直接使用@RestController 注解

3、 @RequestBody

从Reuqest请求体中获取内容,绑定到方法的指定参数上。 SpringMVC 使用HttpMessageConverter 接口将请求体中的数据转化为方法参数类型。

SpringMVC 给用户对参数的处理提供了很大支配权。 我们可以使用 接口RequestBodyAdvice 来实现对参数进行拦截处理。

注意

1)、 RequestBodyAdvice : 针对所有以@RequestBody的参数做处理

2)、 自定义的处理对象类上必须得加上@ControllerAdvice注解!

利用此功能我们可以做以下处理工作:

1)、参数做解密处理。

2)、修改接受的参数数据。

4、 @RequestParam

从Request请求中获取指定的参数。

可以设置的属性:

1)、 required : 默认为true 参数必须存在 。参数不存在时抛出异常(). 提示信息

2)、 defaultValue : 设置参数默认值。 当参数没有提供或者为空值时生效, 包含隐式定义 required=false

3)、 name | value , 互为别名的属性, 绑定请求中的参数名。 request.getParameter(name);

5、 @RequestMapping

用于设置 请求 和 Method 的映射关系。指明何种请求可以和方法匹配

可配置属性值:

1)、 path、value、 name, 互为别名,设置可以处理的url。

2)、 consumes,字符串数组。 指定可以处理的 媒资类型,仅当请求头中的 Content-Type 与其中一种媒体类型匹配时,才会映射请求。所以该配置会缩小可匹配的请求。 当url 匹配但是consumes不匹配时, 状态码415。 不设置的话,表示不限制媒资类型,参数的具体使用何种方式解析,SpringMVC会选择合适的处理器处理。

3)、 proces,字符串数组。 生成的媒资类型,该属性会影响实际的输出类型。和consumes一样,改配置会缩小匹配的范围。 只有当请求头中的 Accept 与 配置的任意一个媒资类型匹配时,才会映射请求。 当url 匹配与consumes不匹配时, 状态码406 。 比如:为了生成UTF-8编码的JSON响应,应使用 MediaType.APPLICATION_JSON_UTF8_VALUE。

6. spring怎么配置注解

@Repository注解:

1 package imooc_spring.test.anotation.myrepository;

2

3 import org.springframework.stereotype.Repository;

4

5 /**

6 * 指定id,默认为dAO,即类名首字母小写,如果指定了名称那么只能ctx.getBean(指定名称)来获取bean

7 * 这个例子里就只能通过ctx.getBean("wyl)来获取DAO 的实例了;

8 *

9 * @author Wei

10 */

11 @Repository("wyl")

12 public class DAO {

13 /**

14 * 返回x和y的乘积

15 *

16 * @param x

17 * @param y

18 * @return x*y

19 */

20 public int multi(int x, int y) {

21 return x * y;

22 }

23 }

复制代码

@Component 注解:

复制代码

1 package imooc_spring.test.anotation;

2

3 import org.springframework.stereotype.Component;

4 /**

5 * Component 注解

6 * @author Wei

7 *

8 */

9 @Component

10 public class TestObj {

11 public void SayHi(){

12 System.out.println(" Hi this is TestObj.SayHi()...");

13 }

14 }

复制代码

@Controller注解闷吵:

复制代码

1 package imooc_spring.test.anotation;

2

3 import org.springframework.stereotype.Controller;

4

5 @Controller

6 public class UserController {

7 public void execute(){

8 System.out.println(" UserController.execute()...");

9 }

10 }

复制代码

@Repository注解:

复制代码

1 package imooc_spring.test.anotation;

2

3 import org.springframework.stereotype.Repository;

4

5 //@Repository

6 @Repository("wyl_repo")

7 public class UserRepositoryImpl implements IUserRepository {

8 //模誉拍拟持久化层

9 庆罩羡 @Override

10 public void save() {

11 // TODO Auto-generated method stub

12 System.out.println(" UserRepositoryImpl.save()...");

13 }

14

15 }

复制代码

@Service注解:

复制代码

1 package imooc_spring.test.anotation;

2

3 import org.springframework.stereotype.Service;

4

5 @Service

6 public class UserService {

7 public void add(){

8 System.out.println(" UserService.add()...");

9 }

10 }

阅读全文

与spring注解教程相关的资料

热点内容
编程怎么做3d生存游戏 浏览:955
word使用教程下载 浏览:295
电脑文件平铺图片默认大小 浏览:115
文件查看设置信息失败 浏览:668
编程如何编出乌鸦喝水的课文 浏览:20
国家反诈app报案助手怎么使用 浏览:439
秘密文件丢失多少天 浏览:237
js中csstext 浏览:382
目标文件名过长复制 浏览:892
乐动力计步器老版本 浏览:933
压缩文件链接怎么编辑 浏览:808
如何锁定PDF文件里的图章 浏览:89
数据库超时是什么 浏览:649
文件怎么改整列内容 浏览:764
360压缩文件发邮件空白 浏览:813
上哪里查自己大数据 浏览:907
编程语言怎么学车 浏览:189
编程该怎么学才能先找工作 浏览:524
文件刻制光盘多少钱 浏览:861
校园网的网络组成结构 浏览:862

友情链接