Spring注解开发
##1、Spring配置数据源
1.1数据源(连接池)的作用
*提高程序性能
*实现化数据源,初始化部分连接资源
*使用连接资源时从数据源中获取
*使用完毕之后将连接资源归还给数据源
常用的数据源:DBCP、C3P0、DoneCP、Druid等
1、4JDBC文件的抽取
首先,引入命名空间
- 命名空间
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
<!--加载外部properties-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
2、Spring注解开发
2.1Spring原始注解
Spring是轻代码重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解替代xml配置文件可以简化配置,提高开发效率
*Spring原始注解主要是替代的配置
注解 | 说明 |
---|---|
@Component | 使用在类上用于实例化Bean |
@Controller | 使用在Web层上用于实例化Bean |
@Service | 使用在Service层上实例化bean |
@Repository | 使用在DAO层上实例化Bean |
@Autowried | 使用在属性上用于根据依赖类型依赖注入 |
@Qualifier | 结合@Autowried一起使用用于根据名称依赖注入 |
@Resource | 相当于@Autowried+@Qualifier,按照名称依赖注入 |
@Value | 注入普通属性 |
@Scope | 标注Bean的作用范围 |
@PostConstruct | 使用在方法上,标注该方法是Bean的初始化方法 |
@PreDestroy | 使用在方法上标注该方法是Bean的销毁方法 |
<!--使用注解需要配置组件扫描-->
<context:component-scan base-package="com.itcast"/>
注解:
@Component("userService")
public class UserServiceImpl implements UserService {
@Autowired
@Qualifier("userDao")
private UserDao userDao;
public void save() {
userDao.save();
}
}
自动注入
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired //按照数据类型从Spring容器中进行匹配的
//@Qualifier("userDao")//按照名称注入
private UserDao userDao;
public void save() {
userDao.save();
}
}
@Resource
@Service("userService")
public class UserServiceImpl implements UserService {
//@Autowired //按照数据类型从Spring容器中进行匹配的
//@Qualifier("userDao")
@Resource(name="userDao")
private UserDao userDao;
public void save() {
userDao.save();
}
@Scope("prototype")
public class UserServiceImpl implements UserService {}
@Value("&{jdbc.driver}")//从容器中获取
private String driver;
@PostConstruct//初始化方法
@PreDestroy //销毁方法
public void save() {
userDao.save();
System.out.println(driver);
}
2.2Spring新注解
使用上面的注解不能全部替代xml配置文件,还需要使用注解替代的配置如下
- 非自定义的Bean的配置:
- 加载properties文件的配置: context:property-placeholder
- 组件扫描contetxt:component-sca
- 引入其他文件
注解 | 说明 |
---|---|
@Configuration | 用于指定当前类是一个Spring配置类,当创建容器时会从该类上加载注解 |
@ComponentScan | 用于指定Spring在初始化容器时要扫描的包;作用在Spring的xml配置文件中的;<contetxt:component-sca base-package=“com.itcast”/>一样 |
@Bean | 使用该方法,标注将该方法返回值存储到Spring容器中 |
@PropertySource | 用于加载properties文件的配置 |
@Import | 用于导入其他配置类 |
3、Spring集成Junit
3.2解决思路
- 让SpringJunit负责创建Spring容器,但是需要配置文件的名称告诉他
- 将需要进行测试Bean直接在测试类中进行注入
3.3 Spring 集成Junit步骤
1)导入Spring集成Junit坐标
2)使用@RunWith注解替换原来的运行期
3)使用@ContextConfiguration指定配置文件活配置类
4)使用@Autowired注入需要测试的对象
5)创建测试方法进行测试
@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration("classpath:applicationContext.xml") 配置方式
@ContextConfiguration(classes = SpringConfiguration.class)
public class SpringJunitTest {
@Autowired
private UserService userService;
@Autowired
private DataSource dataSource;
@Test
public void test1() throws SQLException {
//System.out.println(dataSource.getConnection());
userService.save();
}
}