spring注解方式配置mybatis数据源

来源:互联网 发布:淘宝网客服中心 编辑:程序博客网 时间:2024/06/05 04:34

一 、介绍
从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);         //    }}