Spring全注解使用
Spring使用全注解进行配置核心配置文件
在之前我们在使用spring配置文件时,需要在Resource文件下进行编写applicationContext.xml核心配置文件,
然而当我们使用注解开发时,需要在配置文件进行扫描使用注解的各个文件:
<!-- component-scan进行扫描 base-package基础包,
com.qinfeng可以扫描这个包以及包下的子包。-->
<!-- <context:component-scan base-package="com.qinfeng"/>-->
而且还需要在文件去注入注解的各个文件,这样注解才能实现。
现在使用全注解的方式进行使用spring注解:
1.在加载好spring所需的jar坐标后创建一个类来代替spring,如创建一个SpringConfig类
/**
* Spring主配置Bean文件
*/
//<context:component-scan base-package="com.qinfeng"/>
@ComponentScan("com.qinfeng")//代表可以在初始化容器时要扫描的包 和上面在bean中的一样
//加载数据源的配置文件
@Import(DataSourceConfig.class)
//@Import(DataSourceConfig.class,xxx.class)相当于一个数组,可以放置多个配置文件
public class SpringConfig {
/**
* 使用全注解,使用一个类把Spring配置文件全部使用注解进行配置
*/
}
2.在创建一个DataSourceConfig类用来管理数据池的连接使用,并使用注解配置到容器中
/**
* 属于连接池(数据源的配置文件)
*/
//<context:property-placeholder location="classpath:db.properties"/>
@PropertySource("db.properties")//用来加载properties文件的配置
public class DataSourceConfig {
@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(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
// 在spring容器中注入jdbcTemplate
@Bean("jdbcTemplate")
public JdbcTemplate jdbcTemplate(){
JdbcTemplate template = new JdbcTemplate();
template.setDataSource(getDataSource());
return template;
}
}
3.在配置好上面两个后,我们在其他文件中使用注解后就不用在到spring核心配置文件中去注入。
4.在使用spring集成Junit进行测试。
@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration("classpath:applicationContext.xml")//使用配置文件
@ContextConfiguration(classes = {SpringConfig.class})
public class SpringJunit {
@Autowired
private UserService userService;
@Test
public void test(){
userService.save();
}
}
然而在我们使用spring注解时,看自己的个人习惯进行选择使用,但是在后续进行学习SpringBoot时,使用的都是注解,这样不得不要求我们要熟悉这些注解。

浙公网安备 33010602011771号