springboot
Posted sjp007
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot相关的知识,希望对你有一定的参考价值。
1.pom配置
遇到的问题:
1.根pom依赖的jar,maven插件子模块共享。
2.如果不需要向私服发包,install、deploy,就不需要配置distributionManagement
根pom.xml:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.shfb</groupId> <artifactId>oa</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.2.RELEASE</version> </parent> <modules> <module>report</module> <module>common</module> </modules> <properties> <java.version>1.8</java.version> <java.encoding>UTF-8</java.encoding> </properties> <dependencies> <!--springboot--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> </dependencies> <build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>${java.version}</source> <target>${java.version}</target> <encoding>${java.encoding}</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.12.4</version> <configuration> <testFailureIgnore>false</testFailureIgnore> <forkMode>once</forkMode> <argLine>-Dfile.encoding=UTF-8</argLine> <skipTests>true</skipTests> </configuration> </plugin> </plugins> </build> </project>
report_pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <artifactId>oa</artifactId> <groupId>com.shfb</groupId> <version>1.0-SNAPSHOT</version> </parent> <packaging>jar</packaging> <artifactId>report</artifactId> <dependencies> <!--common util--> <dependency> <groupId>com.shfb</groupId> <artifactId>common</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!--mybatis--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.0</version> </dependency> </dependencies> </project>
common_pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>oa</artifactId> <groupId>com.shfb</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <packaging>jar</packaging> <artifactId>common</artifactId> <!--发布到私服install、deploy--> <distributionManagement> <repository> <id>shfb-release</id> <name>User Project Release</name> <url>http://101.201.31.68:8888/repository/shfb-release/</url> </repository> <snapshotRepository> <id>shfb-snapshots</id> <name>User Project SNAPSHOTS</name> <url>http://101.201.31.68:8888/repository/shfb-release/</url> </snapshotRepository> </distributionManagement> </project>
数据源配置
遇到的问题:
[email protected]注入不进来,原因:application.properties未找到,需要直接挂在classpath下。也可以通过@PropertySource(value={"classpath:application.properties"})指定路径
DataSourceConfig.java
package com.shfb.easyoa.report.config.datasource; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.sql.DataSource; /** * 数据源配置 * Created by shenjp on 2019/1/13. **/ @Configuration public class DataSourceConfig { @Value("${easyoa.report.datasource.username}") private String username; @Value("${easyoa.report.datasource.password}") private String password; @ConfigurationProperties(prefix = "easyoa.report.datasource") @Bean(name = "dataSource") public DataSource dataSource() { return DataSourceBuilder.create() .username(this.username) .password(this.password) .build(); } @Bean(name = "sqlSessionFactory") public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") final DataSource dataSource) throws Exception { final SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); return bean.getObject(); } }
application.properties
server.port=8080 server.servlet.context-path=/easyoa/report mybatis.type-aliases-package=com.shfb.easy.report mybatis.mapper-locations=classpath:mapper/*.xml easyoa.report.datasource.type=com.alibaba.druid.pool.DruidDataSource easyoa.report.datasource.driver-class-name=com.mysql.jdbc.Driver easyoa.report.datasource.jdbc-url=*** easyoa.report.datasource.username=*** easyoa.report.datasource.password=*** easyoa.report.datasource.max-active=10 easyoa.report.datasource.min-idle=0 easyoa.report.datasource.maxWait=60000 easyoa.report.datasource.timeBetweenEvictionRunsMillis=60000 easyoa.report.datasource.minEvictableIdleTimeMillis=300000 easyoa.report.datasource.validationQuery=SELECT ‘x‘ easyoa.report.datasource.testWhileIdle=true easyoa.report.datasource.testOnBorrow=false easyoa.report.datasource.testOnReturn=false easyoa.report.datasource.filters=stat,log4j
多环境部署
本地开发:在application.properties中增加配置:spring.profiles.active=dev
部署:java -jar xxx.jar --spring.profiles.active=prod
springboot获取配置
遇到的问题:
1.static 变量在启动时注入不进来,解决:
@Configuration public class PcacIntegrationUtil { private static String publicCertFilePath; @Value("${pcacmgr.publicCertFilePath}") public void setPublicCertFilePath(String publicCertFilePath) { PcacIntegrationUtil.publicCertFilePath = publicCertFilePath; } }
1.利用@PropertySource获取resource下面的资源,Environment获取属性
@Configuration @EnableTransactionManagement @PropertySource(value = {"classpath:DBsource.properties"}) public class DBBeanConfig { @Autowired private Environment env; @Bean(destroyMethod = "close") public DataSource dataSource(){ DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(env.getProperty("source.driverClassName").trim()); dataSource.setUrl(env.getProperty("source.url").trim()); dataSource.setUsername(env.getProperty("source.username").trim()); dataSource.setPassword(env.getProperty("source.password").trim()); return dataSource; } }
[email protected]获取resource下面的资源,@ConfigurationProperties找到该资源的头部@Value注入属性
@PropertySource({"classpath:redis-config.properties"}) @ConfigurationProperties(prefix="spring.redis") public class RedisConfig { @Value("${host}") private String host; @Value("${port}") private int port; }
[email protected]找到该资源的头部,通过getter、setter方法注入及获取配置
@PropertySource({"classpath:redis-config.properties"}) @ConfigurationProperties(prefix="spring.redis") public class RedisConfig2 { private String host; private int port; public String getHost() { return host; } public void setHost(String host) { this.host = host; } public int getPort() { return port; } public void setPort(int port) { this.port = port; } }
4.若是获取application.yml、application.properties中的属性,可以直接注入
@Value("${spring.redis.host}")
5.利用PropertiesLoaderUtil加载配置文件
public class RedisConfig3 { public static String host; public static int port; private static String property="redis-config.properties"; private static RedisConfig3 mConfig; static { mConfig=loadConfig(); } public static RedisConfig3 loadConfig(){ if (mConfig==null){ mConfig=new RedisConfig3(); Properties properties = null; try { properties = PropertiesLoaderUtils.loadAllProperties(property); host=properties.getProperty("spring.redis.host"); port=Integer.valueOf(properties.getProperty("spring.redis.port")); System.out.println(host+":"+port); } catch (IOException e) { e.printStackTrace(); } } return mConfig; } public RedisConfig3 getInstance(){ return mConfig; } }
以上是关于springboot的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot中表单提交报错“Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported“(代码片段
Spring boot:thymeleaf 没有正确渲染片段