SpringBoot迈过深坑
spring boot 不建议使用jsp,因为jsp的整体性能不如thymeleaf等模板引擎。但是如果有特殊需求要jsp,可以参考下面操作:
引入依赖包:
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<type>jar</type>
</dependency>
<!--无论你的项目中jsp,是放到web下还是放到webapp下,都要打包到META-INF/resources才能映射到,手动修改的路径映射目测只能映射静态资源-->
<resources>
<resource>
<directory>${basedir}/src/main/webapp</directory>
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/*.jsp,**/*.xml,**/*.jpg</include>
</includes>
</resource>
</resources>
1. 如何使用c3p0数据源
#applications.properties中增加配置
c3p0.driverClass=com.mysql.jdbc.Driver
c3p0.jdbcUrl=jdbc:mysql://localhost:3306/SUSONG51?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false
c3p0.user = root
c3p0.password = root
c3p0.minPoolSize=20
c3p0.maxPoolSize=20
c3p0.initialPoolSize=20
/**
*数据源配置
**/
@Configuration
public class DatasourceConfiguration {
@Bean(name = "dataSource")
@ConfigurationProperties(prefix="c3p0")
public DataSource dataSource() {
return DataSourceBuilder.create().type(com.mchange.v2.c3p0.ComboPooledDataSource.class).build();
}
}
2. sqlSessionFactory配置以及添加插件
注意return的对象应该是SqlSessionFactory而不是SqlSessionFactoryBean
@Autowired
DataSource dataSource;
@Bean(name = "sqlSessionFactory")
@ConditionalOnMissingBean
public SqlSessionFactory sqlSessionFactoryBean() {
SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
ssfb.setDataSource(dataSource);
ssfb.setPlugins(new Interceptor[] { new TagParserInterceptor(), new SpringInterceptor() });
try {
return ssfb.getObject();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
3. 防止发生冲突
//注解是重点,防止和自动配置数据源冲突
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class ZoharBootDemoApplication {
//启动代码
}
在配合shiro使用时,如果Realm中自动注入的bean使用了dataSource,有可能引发循环依赖问题。通过@Lazy注解解决
@Autowired
@Lazy
private IUserProvider userProvider;
starter主要有两个功能,一个是自动装配,二十管理依赖。
假设starter中有以下代码
@Configuration
public class OrganAutoConfigration {
@Bean
public OrganService organService() {
return new OrganService();
}
}
resources/META-INF/spring.factories中添加配置
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.zohar.OrganAutoConfigration
这样引入starter后,就可以自动配置OrganService的bean了,如果没有spring.factories中的配置,就需要在项目中手动扫描或者import.
应该尽量避免项目内的File文件操作,否则打成jar后,会有获取不到的情况。应使用Resource的方式获取资源。
以war的方式启动,需要启动类继承SpringBootServletInitializer,并重写configure方法。SpringBootServletInitializer还提供了onstart等方法,用来替换web.xml中的相关功能。
@SpringBootApplication
@ServletComponentScan
public class AtyApplacation extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(AtyApplacation.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(AtyApplacation.class);
}
}
pom中改动:
<packaging>war</packaging>
这里可以把自带的tomcat替换成想要的版本,或者替换成jetty等其他容器。 修改scope保证不被导出到war包里
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
相关文章
- 基于-SLF4J-MDC-机制的日志链路追踪配置属性
ums: # ================ 基于 SLF4J MDC 机制的日志链路追踪配置属性 ================ mdc: # 是否支持基于 SLF4J MDC
- ajax-跨域访问
ajax 跨域访问 <!DOCTYPE html> <html xmlns:th="http://www.w3.org/1999/xhtml"> <head>
- 给第三方登录时用的数据库表-user_connection-与-auth_token-添加-redis-cache
spring: # 设置缓存为 Redis cache: type: redis # redis redis: host: 192.168.88.88 port
- Java动态代理
Jdk动态代理 通过InvocationHandler和Proxy针对实现了接口的类进行动态代理,即必须有相应的接口 应用 public class TestProxy { public
- Java读取classpath中的文件
public void init() { try { //URL url = Thread.currentThread().getContextClassLo
随机推荐
- 基于-SLF4J-MDC-机制的日志链路追踪配置属性
ums: # ================ 基于 SLF4J MDC 机制的日志链路追踪配置属性 ================ mdc: # 是否支持基于 SLF4J MDC
- ajax-跨域访问
ajax 跨域访问 <!DOCTYPE html> <html xmlns:th="http://www.w3.org/1999/xhtml"> <head>
- 给第三方登录时用的数据库表-user_connection-与-auth_token-添加-redis-cache
spring: # 设置缓存为 Redis cache: type: redis # redis redis: host: 192.168.88.88 port
- Java动态代理
Jdk动态代理 通过InvocationHandler和Proxy针对实现了接口的类进行动态代理,即必须有相应的接口 应用 public class TestProxy { public
- Java读取classpath中的文件
public void init() { try { //URL url = Thread.currentThread().getContextClassLo