当前位置:首页 > 行业动态 > 正文

springboot读取jar外部配置文件,spring mybatis配置文件(springboot读取jar包外的配置文件)

在Spring Boot中,我们可以使用@PropertySource注解来读取外部配置文件,以下是详细的步骤和小标题:

1、创建一个外部配置文件

我们需要创建一个外部配置文件,例如application.properties,并将其放在与jar包相同的目录下,在这个文件中,我们可以定义一些配置属性,例如数据库连接信息、MyBatis配置等。

2、在Spring Boot项目中添加依赖

在项目的pom.xml文件中,添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>springbootstarter</artifactId>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatisspringbootstarter</artifactId>
    <version>2.1.4</version>
</dependency>

3、创建配置类

创建一个配置类,例如AppConfig.java,并使用@Configuration注解标记它,在这个类中,我们可以使用@PropertySource注解来指定要读取的外部配置文件,我们可以使用@Value注解将配置文件中的属性值注入到相应的字段或方法参数中。

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.beans.factory.annotation.Value;
@Configuration
@PropertySource(value = "classpath:application.properties")
public class AppConfig {
    @Value("${db.url}")
    private String dbUrl;
    @Value("${db.username}")
    private String dbUsername;
    @Value("${db.password}")
    private String dbPassword;
    // 其他配置...
}

4、在MyBatis配置类中使用外部配置

在MyBatis的配置类中,我们可以使用SqlSessionFactoryBean来创建SqlSessionFactory实例,通过设置DataSource、MapperLocations等属性,我们可以将外部配置文件中的配置应用到MyBatis中。

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
import java.util.Properties;
@Configuration
@EnableTransactionManagement
@MapperScan(basePackages = "com.example.mapper") // 扫描Mapper接口所在的包
public class MyBatisConfig {
    @Autowired
    private AppConfig appConfig; // 注入AppConfig类,获取外部配置信息
    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource()); // 设置数据源
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*Mapper.xml")); // 设置Mapper映射文件的位置和名称模式
        sessionFactory.setTypeAliasesPackage("com.example.entity"); // 设置实体类的包名,用于自动扫描和注册实体类到MyBatis中
        sessionFactory.setConfigurationProperties(properties()); // 设置MyBatis的配置属性,从外部配置文件中读取值
        return sessionFactory.getObject();
    }
    @Bean
    public PlatformTransactionManager transactionManager() {
        return new DataSourceTransactionManager(dataSource()); // 设置事务管理器的数据源为上面创建的数据源实例
    }
    private DataSource dataSource() { // 创建数据源实例,这里可以根据实际情况选择使用不同的数据源实现,如Druid、HikariCP等,这里以Druid为例:
        DruidDataSource dataSource = new DruidDataSource(); // 创建Druid数据源实例,并设置相关属性值,如URL、用户名、密码等,这些属性值可以从外部配置文件中读取。... return dataSource; } private Properties properties() { // 从外部配置文件中读取MyBatis的配置属性,并返回一个Properties对象。... return properties; } } } } } } } } } } } } } } } } } } } } } } } } } } } } }
0

随机文章