一 、介绍
从spring3添加了@Configuration 和 @Bean 两个注解,使用这两个注解可以完全代替spring xml 文件的配置。而spring4和springboot都推荐使用注解配置代替xml文件的方式。本文主要介绍用java注解的方式配置spring与mybatis整合。
1、@Configuration 作用于类上,相当于一个xml配置文件;
2、@Bean 作用于方法上,相当于xml配置中的;
二、maven依赖包
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc16</artifactId>
<version>11.2.0.3</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!--线程池-->
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.6</version>
</dependency>
<!-- mybatis核心包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.4</version>
</dependency>
<!-- mybatis/spring包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
</dependencies>
三、java配置类
@Configuration //表示配置文件类
@ComponentScan("com") //扫描的包 ,代替 <context:component-scan base-package=""/>
@PropertySource(value = {"classpath:jdbc.properties",},ignoreResourceNotFound=true) //添加配置文件
//@ImportResource(value = {"classpath*:/META-INF/spring/spring-activity-datasource.xml"}) // 引入配置文件
@MapperScan(basePackages = {"com.dao"},sqlSessionFactoryRef = "sqlSessionFactory") //指导需要注入数据原的包路径
public class SpringConfiguration {
@Value("${jdbc_driverClassName}")
private String jdbc_driverClassName ;
@Value("${jdbc_url}")
private String jdbc_url ;
@Value("${jdbc_username}")
private String jdbc_username ;
@Value("${jdbc_password}")
private String jdbc_password ;
@Value("${jdbc_initialSize}")
private Integer jdbc_initialSize ;
@Value("${jdbc_minIdle}")
private Integer jdbc_minIdle ;
@Value("${jdbc_maxIdle}")
private Integer jdbc_maxIdle ;
@Value("${jdbc_maxWait}")
private Integer jdbc_maxWait ;
@Value("${jdbc_maxActive}")
private Integer jdbc_maxActive ;
@Bean(destroyMethod="close")
public DataSource dataSource(){
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUrl(jdbc_url);
dataSource.setDriverClassName(jdbc_driverClassName);
dataSource.setPassword(jdbc_password);
dataSource.setUsername(jdbc_username);
dataSource.setMinIdle(jdbc_minIdle);
dataSource.setMaxActive(jdbc_maxActive);
dataSource.setMaxIdle(jdbc_maxIdle);
dataSource.setValidationQuery("select 1 from dual");
dataSource.setInitialSize(jdbc_initialSize);
dataSource.setMaxWait(jdbc_maxWait);
return dataSource;
}
@Bean // 带参数的bean ,有参数的bean方法。 spring会从ioc中找对应的bean注入,如果ico中没有会报错
public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactoryBean = new org.mybatis.spring.SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/META-INF/mapper/*Mapper.xml")); //mybatis的xml文件路径
sessionFactoryBean.setTypeAliasesPackage("com.entiy");
return sessionFactoryBean;
}
}
四、启动类
public class ApplicationMain {
public static void main(String agr[]) throws IOException {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(SpringConfiguration.class);
//
}
}