接Spring框架(三)-------完结
1.Spring的注解式开发
1.开启注解扫描配置
<!--开启注解扫描-->
<context:component-scan base-package="com"/>
2.实例化相关注解
Spring自2.5版本以后提供了一些注解用来在使用spring时进行快速开发
# 1. @Component(value="beanid")
修饰范围: 用在类上
注解作用: 通用的创建实例的注解,用来创建当前这个类的实例
value属性: 用来指定创建的对象在工厂中的唯一标识 如果不指定默认创建对象在工厂中的标识为类名首字母小写
# 2. @Repository
修饰范围: 用在类上
注解作用: @component的子类注解专用于DAO组件的创建,通常加在DAO组件上
value属性: 用来指定创建的对象在工厂中的唯一标识 如果不指定默认创建对象在工厂中的标识为类名首字母小写
# 3. @Service
修饰范围: 用在类上
注解作用: @component的子类注解专用于Service组件的创建,通常加在Service组件上
value属性: 用来指定创建的对象在工厂中的唯一标识 如果不指定默认创建对象在工厂中的标识为类名首字母小写
# 4. @Controller
修饰范围: 用在类上
注解作用: @component的子类注解专用于Action组件的创建,通常加在Action组件上
value属性: 用来指定创建的对象在工厂中的唯一标识 如果不指定默认创建对象在工厂中的标识为类名首字母小写
3.控制对象的创建次数的注解
# @Scope(value="singleton|prototype")
修饰范围: 用在类上
注解作用: 用来控制这个实例在工厂中的创建次数
value属性: singleton为单例,prototype为多例 默认单例
4.注入相关的注解
# 1. @Autowired(Spring提供)
修饰范围: 用在成员变量或成员变量的GET/SET方法上
注解作用: 用来给类中成员变量赋值
注入原则: 默认根据类型自动注入
# 2. @Resource(JAVAEE提供)
修饰范围: 用在成员变量或成员变量的GET/SET方法上
注解作用: 用来给类中成员变量赋值
注入原则: 默认根据名称自动注入名称找不到根据类型自动注入
注意:在使用注解进行注入时spring为了方便开发日后可以不再为成员变量提供set方法
5.控制事务的相关注解
# @Transactional
修饰范围: 用在类上主要用在业务层组件类上或者是方法上
注解作用: 用来给类中方法加入事务,当类上和方法上同时存在该注解时局部优先
注解属性:
propagation 用来控制传播属性
Isolation 用来控制隔离级别
timeout 用来设置超时性
rollback-for 用来设置什么异常回滚
norollback-for 用来设置什么异常不会滚
readonly 用来设置事务读写性
注意:如果要使用事务注解在配置文件中必须开启事务注解生效加入如下配置:
<tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
2.通过spring读取外部properties配置文件
1.定义一个properties配置文件
mysql.driverClassName = com.mysql.jdbc.Driver
mysql.url = jdbc:mysql://localhost:3306/ssm
mysql.username = root
mysql.password = root
2.在spring配置文件中读取properties配置文件
a. 使用PropertyPlaceholderConfigure 读取配置文件
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<!--注入外部配置文件位置-->
<property name="location" value="classpath:db.properties" />
</bean>b. 读取方式
<context:property-placeholder location="classpath:db.properties" />
注意:使用这种方式在读取配置文件中username这个key时读取的是当前计算机的名称