-
在检查映射路径和确认代码无误的前提下,发现输入正确的链接在浏览器,报404等错误
解决方法:往往是由于项目没有引入模板依赖,比如Thymeleaf,Jsp等模板。每一种模板都有各自已经配置好的路径,可以按照约定的路径存放模板文件,也可以同properties、xml、aop注入的方式重新配置模板文件路径。
Thymeleaf所用的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
Jsp所用的三个依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
还需要加入此依赖
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<!--<scope>provided</scope>-->
</dependency>
- 当在配置文件properties配置文件配置访问路径以及端口号时,可能会遇到有些变量有的项目可以使用,有的项目不能使用的纠结问题。
- 最后在设置页面存放路径的时候,如果在和resource同级的目录下没有webapp文件夹,则需要创建一个和reource同级的webapp,然后在改文件夹下存放页面文件!(容易遗漏)
解决方法:是因为springBoot的版本问题,一般是修改或增加部分变量名即可,此时上网可以查询得到答案。
- 其余常用依赖如下:
热部署依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
#热部署配置在哪个文件夹下更改时重新启动项目
spring.devtools.restart.enabled=true
spring.devtools.restart.additional-paths=src/main/java
aop注入依赖
<!--使用AspectJ方式注解需要相应的包-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
使用切面编程示例:
/**
* 创建Aspect切面类
*/
@Component
@Aspect
public class WebControllerAop {
private Logger logger = LoggerFactory.getLogger(WebControllerAop.class);
/**
* 1、execution(): 表达式主体。
2、第一个*号:表示返回类型, *号表示所有的类型。
3、包名:表示需要拦截的包名,后面的两个句点表示当前包和当前包的所有子包,com.sample.service.impl包、子孙包下所有类的方法。
4、第二个*号:表示类名,*号表示所有的类。
5、*(..):最后这个星号表示方法名,*号表示所有的方法,后面括弧里面表示方法的参数,两个句点表示任何参数
*/
@Pointcut("execution(* com.example.demo.service.user..*.*(..))")
public void pointCut(){
}
@Before("pointCut()")
public void before(){
logger.info("【注解:Before】------------------切面 before");
}
}
事务管理切面编程:
import org.aspectj.lang.annotation.Aspect;
import org.springframework.aop.aspectj.AspectJExpressionPointcut;
import org.springframework.aop.support.DefaultPointcutAdvisor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.interceptor.TransactionInterceptor;
import java.util.Properties;
@Aspect
@Configuration
public class TransactionAdviceConfig {
private static final String AOP_POINTCUT_EXPRESSION = "execution(* com.example.demo.service.user..*.*(..)))";
@Autowired
private PlatformTransactionManager transactionManager;
@Bean
public DefaultPointcutAdvisor defaultPointcutAdvisor() {
//指定一般要拦截哪些类
AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
pointcut.setExpression(AOP_POINTCUT_EXPRESSION);
//配置advisor
DefaultPointcutAdvisor advisor = new DefaultPointcutAdvisor();
advisor.setPointcut(pointcut);
Properties attributes = new Properties();
attributes.setProperty("get*", "PROPAGATION_SUPPORTS,ISOLATION_READ_COMMITTED,-Exception");
attributes.setProperty("find*", "PROPAGATION_SUPPORTS,ISOLATION_READ_COMMITTED,-Exception");
attributes.setProperty("queryRecordBy*", "PROPAGATION_SUPPORTS,ISOLATION_READ_COMMITTED,-Exception");
attributes.setProperty("queryPage*", "PROPAGATION_SUPPORTS,ISOLATION_READ_COMMITTED,-Exception");
attributes.setProperty("update*", "PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED,-Exception");
attributes.setProperty("insert*", "PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED,-Exception");
attributes.setProperty("save*", "PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED,-Exception");
attributes.setProperty("test*", "PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED,-Exception");
attributes.setProperty("modify*", "PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED,-Exception");
attributes.setProperty("cancle*", "PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED,-Exception");
attributes.setProperty("delete*", "PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED,-Exception");
TransactionInterceptor txAdvice = new TransactionInterceptor(transactionManager, attributes);
advisor.setAdvice(txAdvice);
return advisor;
}
}