Spring注解介绍

Spring常用注解

Spring常用注解
Spring的核心功能是IOC,就是将Bean初始化加载到容器中·,可以使用xml配置文件或者Spring注解来实现

Spring注解方式减少了配置文件内容,使其便于管理,提高了开发效率

组件类注解
@Component:标注一个普通的Spring Bean类。
@Repository:标注一个DAO组件类
@Service:标注一个业务逻辑组件类
@Controller:标注一个控制器组件类
@Component可以代替@Repository、 @Service、@Controller,因为这三个注解是被@Component标注的

总结
1.被注解的java类当作Bean实例,Bean实例的名称默认是Bean类的首字母小写,其他部分不变

2.尽量使用对应组件注解的类替换@Component注解

3.指定了某些类可作Spring Bean类使用后,最好还让spring搜索指定路径,在spring配置文件加入:

<!-- 自动扫描指定包及其子包下的所有Bean类 -->
<context:component-scan base-package="org.springframework.*"/>

装配bean时常用注解(有四种装配方式,no、byType、byName、construct)

@Autowired: 属于Spring 的org.springframework.beans.factory.annotation包下,可用于为类的属性、构造器、方法进行注值。

@Resource:不属于spring的注解,而是来自于JSR-250位于java.annotation包下,使用该annotation为目标bean指定协作者Bean,默认按照byName自动注入。

@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作

总结
@Resource作用相当于@Autowired,均可标注在字段或属性的setter方法上

@Resource默认按Name自动注入,可提供按Type注入,@Autowired只按Type注入

@Resource注解的使用性更为灵活,可指定名称,也可以指定类型 ;

@Autowired注解进行装配容易抛出异常,特别是装配的bean类型有多个的时候,而解决的办法是需要在增加@Qualifier进行限定

使用@Resource也要在配置文件开启注解配置 :

<context:annotation-config/>

配置类注解
@Configuration:声明当前类为配置类
@Bean:注解在方法上,声明当前方法的返回值为一个bean,替代xml中的方式

spring MVC模块注解
@Controller:表明该类会作为与前端交互的控制层组件,通过服务接口定义的提供访问应用程序的一种行为,解释用户的输入,将其转换成一个模型然后将试图呈现给用户

@RequestMapping:用于映射web请求,包括访问路径和参数

@RequestParam:将请求的参数绑定到方法中的参数上,有required,默认情况下,required=true

@PathVariable:用于方法修饰方法参数,会将修饰的方法参数变为可供使用的url变量

@ResponseBody与@RequestBody类似,它的作用是将返回类型直接输入到HTTP response body中,在输出JSON格式的数据时,会经常用到

@RestController:相当于@ResponseBody+@Controller

Spring事务模块注解(@Transactional)
在处理dao层或service曾的事务操作时,如增删改操作
在配置文件中开启:

<tx:annotation-driven transaction-manager="transactionManager" />

spring事务传播特性:
事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播。spring支持7种事务传播行为:

propagation_requierd:如果当前没有事务,就新建一个事务,如果已存在一个事务中,加入到这个事务中,这是最常见的选择。

propagation_supports:支持当前事务,如果没有当前事务,就以非事务方法执行。

propagation_mandatory:使用当前事务,如果没有当前事务,就抛出异常。

propagation_required_new:新建事务,如果当前存在事务,把当前事务挂起。

propagation_not_supported:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

propagation_never:以非事务方式执行操作,如果当前事务存在则抛出异常。

propagation_nested:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与propagation_required类似的操作

Spring 默认的事务传播行为是 PROPAGATION_REQUIRED,它适合于绝大多数的情况

Spring JdbcTemplate简介

Spring框架对JDBC进行封装,使用jdbcTemlate方便实现对数据的操作,可直接在Java代码中编写sql,无需配置xml文件,提高了开发效率
缺点:
使用时频繁的创建释放连接,非常浪费资源,影响性能。且sql在直接写在java代码中怖不便于维护。
在团队开发中一般使用mybatis架构来进行开发

上一篇:c – 当你使用std :: move返回时,“return-by-rvalue-ref”和“return-by-value”之间的区别?


下一篇:OpenGL Shading language学习总结