SpringIOC注解
组件添加标记注解:
@Component:该注解标记类表示该类为一个普通类,表示为IOC中的一个组件bean
@Repository:该注解用于将数据访问层(Dao层)的类标识为Spring中的Bean
@Service:该注解作用域业务层(Service层),用于将业务层的类标识为Spring中的Bean
@Controller:该注解通常作用于控制层(controller),用于将控制层的类标识为Spring中的Bean
注解中可以使用value,对应Bean中的id属性
自动装配:
@Autowired:在成员变量上直接标记@Autowried注解即可,实现自动装配,还可以使用构造器、set方法上,默认根据类型进行装配,如果想根据名称进行匹配,需要配合@Qualifier注解一起用
@Resource:默认根据Bean名称装配,未指定name时,使用属性名作为name,通过name找不到的话,会自动启动类型匹配
注入外部属性:
@value:可以作用于成员变量,方法参数等,
java
/**
* 情况1: ${key} 取外部配置key对应的值!
* 情况2: ${key:defaultValue} 没有key,可以给与默认值
*/
@Value("${catalog:hahaha}")
private String name;
基于配置类管理Bean注解
@Configurtion:标注当前类是配置类,代替XML文件
@PropertySource("classpath:配置文件名"):使用注解读取外部配置,替代<context:properity-placeholder标签
@ComponentScan(basePackages = {"包名"}):用于配置扫描包,替代<context:component-scan标签
@Bean
@Bean:注释用于方法实例化、配置和初始化要由SpringIoc容器管理的对象,对应于XML文件中的
指定初始化和销毁回调方法@Bean(initMethod="init")和@Bean(destoryMethod="cleanup")
@scope:指定Bean的作用域,例如@Scope("prototype")
@import:注释允许从另一个配置类加载@bean定义
@Conditional:能根据一定条件进行判断,满足条件就给容器注入Bean
整合Spring-test5
@SpringJunitConfig(locations = {"classpath:xml文件"}):指定XML配置文件
@SpringJunitConfig(Value = {BeanConfig.class}):指定配置类
SpringAOP注解
@Aspect:表示这个类是一个切面类
@Before("execution(切点表达式)"):声明当前方法是前置通知方法
@AfterReturning("execution(切点表达式)")
@AfterThrowing("execution(切点表达式)")
@After("execution(切点表达式)")
上述三个注解的参数:
value:切点表达式,例如:"execution(切点表达式)"
returning:获取方法返回值
throwing:获取目标方法派出的异常对象
@pointcut("execution(切点表达式)"):在一个方法上使用注解,其他的注解可以通过对该注解作用的方法进行调用实现切入点表达式的重用
环绕通知:对应整个try...catch...finally结构
@Around
作用于配置类上:
@EnableAspectJAutoProxy("execution(切点表达式)"):作用等同于aop:aspect-autoproxy/配置类上开启Aspectj注解支持
事务
@Transactional:声明方法为一个事务
事务属性:
只读属性:readOnly,默认值为false,
超时时间属性:timeout,默认值为-1
事务异常:
1、默认情况:只针对运行时异常回滚,编译时异常不回滚
2、设置回滚异常:rollbackFor属性:指定哪些异常才是回滚异常,默认是RuntimeException和Error
3、设置不会滚异常:在默认设置和已有设置的基础上,再指定一个异常,碰到它不会回滚noRollbackFor
4、事务的隔离级别:
5、事务的传播行为: