说明:都是springboot下的,大佬们有啥指点的欢迎评论区点出
**
1、前后端分离开发访问跨域跨源问题
**
这个需要在config类中做点小手段
@Bean
public WebMvcConfigurer corsConfigurer(){//WebMvcConfigurerAdapter
return new WebMvcConfigurer(){
@Override
public void addCorsMappings(CorsRegistry registry){
registry.addMapping("/**")
.allowCredentials(true).allowedMethods("*");
}
};
}
当时看的别人的忘记链接了,比较久了,抱歉,他用的WebMvcConfigurerAdapter接口,不过这个有些过时了,换上WebMvcConfigurer。
**
2、项目打包将properties文件提取出来的问题
**
将项目打jar包,把properties打在jar外面
<build>
<finalName>udpprojects</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<plugins>
<!--排除工程不deploy到远程服务器上-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--项目启动类的位置-->
<mainClass>com.cy.UdpProjectsApplication</mainClass>
<!--打包方式-->
<layout>JAR</layout>
<executable>true</executable>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>make-zip</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<!--配置文件-->
<descriptor>src/main/resources/assembly.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<finalName>udpprojects</finalName>
这个是打包后的名称,根据你自己设置的修改,不过只对单独的jar有效,打成的zip压缩包解压出来的jar名字无效,不过你可以把zip里面的jar替换了就是了
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>bin</id>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>src/main/resources</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>application.properties</include>
<include>temp.properties</include>
</includes>
</fileSet>
<fileSet>
<directory>src/bin</directory>
<filtered>true</filtered>
<outputDirectory>/</outputDirectory>
<includes>
<include>startup.bat</include>
</includes>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<useProjectArtifact />
<outputDirectory>lib</outputDirectory>
<includes>
<include>${project.groupId}:${project.artifactId}</include>
</includes>
</dependencySet>
</dependencySets>
</assembly>
直接粘贴复制就可以用的,pom文件代码你就只需要改一下启动类的位置就OK了,注意assembly.xml文件是在resources文件下的,和properties同级。
这儿需要注意的是打包后的zip文件
zip解压出来后properties和jar不是同级的,需要放在同一目录下properties文件才会生效
参考文章
因为我之前有个项目整合了websocket打包总是会报错这时候就需要(idea开发的)命令行输入mvn package -DskipTests打包跳过test步骤就OK了
参考文章
3、springboot+mybatis开启事务以及事务无法回滚问题
这个问题说简单也简单说麻烦也麻烦,网上很多说得不全,找了大半天归纳一下可能存在的问题
①、mysql是否开启了innodb?
mysql命令行输入show engines;查看
查看innodb是否为YES,如果为no那么需要在my.ini配置文件中注释掉loose-skip-innodb(貌似之前老版本的是skip-innodb)
如果还是不行估计是你mysql没有下载innodb引擎之类的吧!(没有遇到过要是解决不了我也不清楚了)
②、看表的引擎是否为innodb
如果你之前innodb都没开启的话你的表肯定也是不支持的,这时候需要将表的引擎设置为innodb才会起效果,我是直接用傻瓜式界面设置的了,命令行也可以设置,更加方便(不过我只需要几个表就懒得弄了)
③、添加注解
springboot启动类中添加@EnableTransactionManagement注解开启事务,之后再去service类中在你想要的方法上面添加@Transactional注解(类上添加就所有方法都开启事务),注意一点单单一个@Transactional还是有问题,只会回滚运行时异常,再大一级的异常就无法回滚了,需要再添加一个rollbackFor = Exception.class这样就OK了,@Transactional(rollbackFor = Exception.class)
④、注意事项
service和mapper类中方法都应该是public的
只支持外部调用的方法,你内部调用事务方法貌似不行(还未测试,看别人这么说的)
不要service方法中加try-catch这样就无法抛出异常也就没法捕捉回滚了,你可以在controller中去处理异常