SSM-新注解
Day5
Spring 新注解开发
原始注解对于非自定义的类无法进行注解进行配置,只能通过xml'文件配置
原始注解不能进行代替的配置又:
- 非自定义的Bean配置
- 加载properties文件配置
- 组件扫描的配置
- 引入其他文件 import
新注解
- @Configuration 指定当前的类是一个Spring配置类,当创建容器时会从该类上加载注解
- @ComponentScan 取代组件扫描标签
- @Bean 使用在方法上,将该方法的返回值存放到容器中
- @PropertySource 加载.properties文件中的配置
- @import 用于导入其他配置类
完全替代Xml配置文件
创建一个核心配置的类替代一个xml文件
- 用一个类去替代核心配置的xml文件
- 用注解取替代标签
//用一个类去替代xml配置文件
//用注解的方式替代标签
//标志该类是一个Spring核心配置类
@Configuration
@ComponentScan("cn.gyk") //配置组件扫描
@PropertySource("classpath:Jdbc.properties")
public class springConfiguration {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Bean("dataSource")//Spring会将当前方法的返回值以指定名称存放到Spring的容器中
public DataSource getDataSource() throws PropertyVetoException, SQLException {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass(driver);
dataSource.setJdbcUrl(url);
dataSource.setUser(username);
dataSource.setPassword(password);
return dataSource;
}
}
通过@Import(dataSourceConfiguration.class)加载分配置文件
到此为止就可以实现Spring全注解开发了。
Spring整合Junit
原始测试方法的问题
每个测试方法都有如下两个行代码
ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); IAccountService as = ac.getBean("accountService",IAccointService.class);这两行代码的作用是获取容器,不能删掉
- 上述问题解决思路,SpringJunit负责创建Spring容器,但是需要将配置文件告诉Junit
- 将需要进行测试的Bean直接在测试类中进行注入
Spring集成Junit步骤
- 导入Spring集成Junit的坐标
- 使用@RunWith注解替换原来的运行期 先找Spring,Spring再去找Junit
- 使用@ContextConfiguration指定配置文件或者配置类
- 使用@Autowired注入需要测试的对象
- 创建测试方法进行测试
导入坐标需要先导入Junit坐标 后导入Spring-test
@RunWith(SpringJUnit4ClassRunner.class)
//该注解先通过Spring去初始化容器,加载配置文件,再让Spring去找Junit进行测试
//xml文件配置注解情况下配置文件加载用于测试列
@ContextConfiguration("classpath:applicationContext.xml");
//注解配置情况下配置文件加载用于测试类
@ContextConfiguration(classes = springConfiguration.class)
经过上述操作就已经开启了spring容器,之后直接通过@Autowired注解直接对需要测试的进行,十分便捷
浙公网安备 33010602011771号