spring注解:
在使用注解之前,需在配置文件中打开spring注解扫描。spring配置文件详解。开发项目概分4层:工具类及其他、持久层、业务逻辑处理层、控制层。
1.工具类及其它不好的组件中:
常用@Component。比如工具类或一些类不属于其它三层时,均可在类上标注该注解。
2.持久层中:
在类上标注@Repository注解即可。该注解用于标注数据访问层,即DAO组件。
3.业务逻辑处理层:
①.类上标注@Service。标注该类为业务逻辑处理层,即service组件。
②.@Transactional。该注解用于声明事务。我们知道,在service层中是需要进行业务逻辑处理的。
事务:在取款机取钱时,取款和扣钱就是在一个事务中,如果哪一步发生异常,便回滚。
该注解可标注在类上(给类中所有方法加事务),也可标注在方法上(给具体方法加事务)。
属性readonly:readonlu=true表明所注解的方法或类只是读取数据。readonly=fasle表明所注解的方法
或类是增加、删除、修改数据。
属性isolation:设置底层数据库的事务隔离级别,用于处理多事务并发,通常使用数据库的默认隔离级别
即可,基本不需要进行设置。
属性rollbackFor:设置需要回滚的异常类数组,当方法中抛出指定异常数组中的异常时,进行事务回滚。
@Transactional(rollbackFor= Exception.class)(指定单一异常类),
@Transactional(rollbackFor={RuntimeException.class, Exception.class})(指定多个异常类)。
属性timeout:设置事务的超时秒数(毫秒计)默认为-1永不超时。
属性propagation:事务传播行为。详见:propagation属性列表。
③.@Autowired、@Qualifier和@Resource
三者都代表装配,可以书写标注在字段或者该字段的setter方法之上,用于在类中引用已注入的bean。
@Autowired默认按照类型装配,如果想使用按照名称装配,可以结合@Qualifier一起使用,
@Resource默认按照名称装配,当找不到与名称匹配的bean时按照类型装配。可以通过name属性指定。
4.控制层:
①.@Controller:用于标注控制层注解。
②.@RequestMapping:映射url到控制器类,(或到controller控制器的处理方法上)。。(转:地址)
如上图,MyController 这个类没有被@RequestMapping标记,当需要访问showView方法时,
使用绝对路径/showView.do 请求。
如上图,在类上加了@RequestMapping 注解,访问showView方法时,就需要加上相对于
控制器MyController 上@RequestMapping 的地址,即/test/showView.do 。
③.@RequestBody和@ResponseBody:
@RequestBody用于读取Request请求的body部分数据,@ResponseBody用于将Controller的
方法返回的对象通过编码转换后写入到Response对象的body数据区。转:地址
流程介绍:用户通过请求@RequestMapping标注的地址进入控制器类(使用@Autowired、
@Qualifier和@Resource三者其一注入过service)中,调用业务逻辑处理层(使用@Autowired、
@Qualifier和@Resource三者其一注入过dao层),在调用数据访问层(dao层)。
其中,注解(@Component、@Repository、@Service、@Controller)是基于类的注解,
我们可以定义名称也可以不定义。若不定义,spring会默认以类名且首字母小写的词组为 bean 的名称