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架构来进行开发