目录
一、Spring注解式开发
注解式开发目的:为了提高现有的配置文件开发效率
1.开发注解扫描
2.实例化相关注解(创建对象的注解,相当于bean标签)
-
@Component("beanid")
修饰范围:类
注解作用:通用的创建实例的注解,用来创建当前这个类的实例
value属性:用来指定创建对象的beanid,如果不指定默认为类名首字母小写
-
@Repository("beanid")
修饰范围:类
注解作用:@Component的子类注解 专用于Dao组件,mybatis中用不到
value属性:用来指定创建对象的beanid,如果不指定默认为类名首字母小写
-
@Service("beanid")
修饰范围:类
注解作用:@Component的子类注解专用于Service组件
value属性:用来指定创建对象的beanid,如果不指定默认为类名首字母小写
3.控制对象的创建次数的注解
-
@Scope("singleton/prototype")
修饰范围:类
注解作用:用来控制这个实例在工厂中的创建次数
value属性:singleton为单例(单例为默认,不需要写这个注解)
prototype为多例
4.注入相关注解
-
@Autowired(由Spring提供)
修饰范围:成员变量或其setter
注解作用:用来给类中成员变量赋值
注入原则:默认根据类型自动注入
-
@Resource(由JAVAEE提供)
修饰范围:成员变量或其setter
注解作用:用来给类中成员变量赋值
注入原则:默认根据名称自动注入,找不到时自动采用根据类型注入
使用这两个注解时,成员变量可以省略setter
5.控制事务的相关注解
-
@Transactional
修饰范围:类或方法
注解作用:用来给类中的方法加入事务,当类上和方法上同时存在该注解时方法优先
-
注解属性
属性名 描述 用法举例 propagation 用来控制传播属性 @Transactional(propagation = Propagation.SUPPORTS)
isolation 用来控制隔离级别 @Transactional(isolation = Isolation.SERIALIZABLE)
timeout 用来设置超时性(毫秒) @Transactional(timeout = 1000)
rollbackFor 用来设置什么异常回滚 @Transactional(rollbackFor = Exception.class)
noRollbackFor 用来设置什么异常不回滚 @Transactional(noRollbackFor = IOException.class)
readOnly 用来设置事务读写性 @Transactional(readOnly = true)
6.配置文件中
配置文件中不再需要配置事务属性和配置事务切面
二、创建复杂对象
复杂对象:类中没有构造方法或者构造方法不能调用,如接口类型或抽象类实例。
<bean id="connection" class="com.baizhi.factorybean.ConnectionFactoryBean"/>