近几天问题汇总(开发访问跨域、打包、事务)

说明:都是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中去处理异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值