介绍
本文在参考了如何优雅的在weblogic上部署spring-boot的基础下使用springboot整合Mybatis部署在weblogic服务器上。
环境
开发工具:Eclipse
weblogic版本:10.3.6.0
weblogic-jdk:1.8.0_91
技术实现
- 创建Maven工程,在pom文件中加入
4.0.0
com.ws
weblogic-test
0.0.1-SNAPSHOT
1.5.4.RELEASE
UTF-8
org.springframework.boot
spring-boot-starter-parent
1.5.4.RELEASE
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-jdbc
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.1.1
com.github.pagehelper
pagehelper
4.2.0
com.alibaba
druid
1.0.25
javax.servlet
servlet-api
2.5
test
org.springframework
spring-messaging
javax.servlet
javax.servlet-api
provided
org.springframework.boot
spring-boot-legacy
1.0.2.RELEASE
org.springframework.boot
spring-boot-starter-tomcat
provided
org.apache.maven.plugins
maven-war-plugin
true
${project.version}
true
lib/
${project.basedir}/src/main/resources/static
${project.basedir}/src/main/webapp
${project.artifactId}
org.springframework.boot
spring-boot-maven-plugin
${spring.boot.version}
BOOT
repackage
maven-compiler-plugin
1.6
2.创建springboot入口类,配置类和测试类
@SpringBootApplication
@MapperScan("com.ws.mapper")
public class WeblogicTestApplication extends SpringBootServletInitializer implements WebApplicationInitializer{
public static void main(String[] args) {
SpringApplication.run(WeblogicTestApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(WeblogicTestApplication.class);
}
配置文件
server.port=8888
logging.level.=INFO
server.tomcat.uri-encoding=UTF-8
spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
server.connection-timeout=5000
spring.resources.static-locations=classpath:static/,file:static/
#spring.devtools.restart.enabled: true
mybatis.configuration.mapUnderscoreToCamelCase=true
mybatis.type-aliases-package=com.df.bean
spring.dataSource.primaryDataSource.type=com.alibaba.druid.pool.DruidDataSource
spring.dataSource.primaryDataSource.url=jdbc:oracle:thin:@10.2.1.242:1521/eaidb
spring.dataSource.primaryDataSource.username=cheryeai_osbmngt
spring.dataSource.primaryDataSource.password=cheryDBeai123
spring.dataSource.primaryDataSource.driverClassName = oracle.jdbc.driver.OracleDriver
spring.dataSource.primaryDataSource.initialSize = 5
spring.dataSource.primaryDataSource.minIdle = 5
spring.dataSource.primaryDataSource.maxActive = 15
spring.dataSource.primaryDataSource.maxWait = 60000
spring.dataSource.primaryDataSource.timeBetweenEvictionRunsMillis = 60000
spring.dataSource.primaryDataSource.minEvictableIdleTimeMillis = 300000
spring.dataSource.primaryDataSource.validationQuery = SELECT 1 FROM DUAL
spring.dataSource.primaryDataSource.testWhileIdle = true
spring.dataSource.primaryDataSource.testOnBorrow = true
spring.dataSource.primaryDataSource.testOnReturn = true
配置数据源
@Component
@ConfigurationProperties(prefix = "spring.dataSource.primaryDataSource")
public class DuridBeans {
private String type;
private String url;
private String username;
private String password;
private String driverClassName;
private Integer initialSize;
private Integer minIdle;
private Integer maxActive;
private Integer maxWait;
private Integer timeBetweenEvictionRunsMillis;
private Integer minEvictableIdleTimeMillis;
private String validationQuery;
private Boolean testWhileIdle;
private Boolean testOnBorrow;
private Boolean testOnReturn;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
public Integer getInitialSize() {
return initialSize;
}
public void setInitialSize(Integer initialSize) {
this.initialSize = initialSize;
}
public Integer getMinIdle() {
return minIdle;
}
public void setMinIdle(Integer minIdle) {
this.minIdle = minIdle;
}
public Integer getMaxActive() {
return maxActive;
}
public void setMaxActive(Integer maxActive) {
this.maxActive = maxActive;
}
public Integer getMaxWait() {
return maxWait;
}
public void setMaxWait(Integer maxWait) {
this.maxWait = maxWait;
}
public Integer getTimeBetweenEvictionRunsMillis() {
return timeBetweenEvictionRunsMillis;
}
public void setTimeBetweenEvictionRunsMillis(Integer timeBetweenEvictionRunsMillis) {
this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
}
public Integer getMinEvictableIdleTimeMillis() {
return minEvictableIdleTimeMillis;
}
public void setMinEvictableIdleTimeMillis(Integer minEvictableIdleTimeMillis) {
this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
}
public String getValidationQuery() {
return validationQuery;
}
public void setValidationQuery(String validationQuery) {
this.validationQuery = validationQuery;
}
public Boolean getTestWhileIdle() {
return testWhileIdle;
}
public void setTestWhileIdle(Boolean testWhileIdle) {
this.testWhileIdle = testWhileIdle;
}
public Boolean getTestOnBorrow() {
return testOnBorrow;
}
public void setTestOnBorrow(Boolean testOnBorrow) {
this.testOnBorrow = testOnBorrow;
}
public Boolean getTestOnReturn() {
return testOnReturn;
}
public void setTestOnReturn(Boolean testOnReturn) {
this.testOnReturn = testOnReturn;
}
}
@Configuration
public class DuridSource {
@Autowired
private DuridBeans druidPrimaryDataSourceConfigProperties;
@Bean(name="dataSource")
@Primary
public DataSource primaryDataSource (){
DruidDataSource datasource = new DruidDataSource();
datasource.setUrl(this.druidPrimaryDataSourceConfigProperties.getUrl());
datasource.setUsername(this.druidPrimaryDataSourceConfigProperties.getUsername());
datasource.setPassword(this.druidPrimaryDataSourceConfigProperties.getPassword());
datasource.setDriverClassName(this.druidPrimaryDataSourceConfigProperties.getDriverClassName());
datasource.setInitialSize(this.druidPrimaryDataSourceConfigProperties.getInitialSize());
datasource.setMinIdle(this.druidPrimaryDataSourceConfigProperties.getMinIdle());
datasource.setMaxActive(this.druidPrimaryDataSourceConfigProperties.getMaxActive());
datasource.setMaxWait(this.druidPrimaryDataSourceConfigProperties.getMaxWait());
datasource.setTimeBetweenEvictionRunsMillis(this.druidPrimaryDataSourceConfigProperties.getTimeBetweenEvictionRunsMillis());
datasource.setMinEvictableIdleTimeMillis(this.druidPrimaryDataSourceConfigProperties.getMinEvictableIdleTimeMillis());
datasource.setValidationQuery(this.druidPrimaryDataSourceConfigProperties.getValidationQuery());
datasource.setTestWhileIdle(this.druidPrimaryDataSourceConfigProperties.getTestWhileIdle());
datasource.setTestOnBorrow(this.druidPrimaryDataSourceConfigProperties.getTestOnBorrow());
datasource.setTestOnReturn(this.druidPrimaryDataSourceConfigProperties.getTestOnReturn());
return datasource;
}
}
@Configuration
public class MybatisConfig {
@Autowired
private DataSource dataSource; //Durid数据源
@Bean
public SqlSessionFactoryBean createSqlSessionFactoryBean() throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
org.apache.ibatis.session.Configuration config=new org.apache.ibatis.session.Configuration();
config.setMapUnderscoreToCamelCase(true); //设置驼峰命名
sqlSessionFactoryBean.setConfiguration(config);
sqlSessionFactoryBean.setTypeAliasesPackage("com.ws.bean");
Interceptor[] plugins = new Interceptor[]{pageHelper()};
sqlSessionFactoryBean.setPlugins(plugins);
return sqlSessionFactoryBean;
}
/**
* Mybatis分页插件
*/
@Bean
public PageHelper pageHelper() {
PageHelper pageHelper = new PageHelper();
Properties p = new Properties();
p.setProperty("offsetAsPageNum", "true");
p.setProperty("rowBoundsWithCount", "true");
p.setProperty("reasonable", "true");
pageHelper.setProperties(p);
return pageHelper;
}
public interface UserMapper {
@Select({"SELECT * FROM USER_TEST"})
List getUserInfo();
}
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List getUserInfoSer(){
return userMapper.getUserInfo();
}
}
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value="/test" ,method= RequestMethod.GET)
public String testGetUserInfo() {
User user=userService.getUserInfoSer().get(0);
return "我是"+user.getUserName()+"今年"+user.getUserAge()+"岁了!";
}
}
说明:关于Durid数据源的配置这里就不详细说明了,springboot默认使用tomcat的数据源,在使用tomcat数据源部署的时候报错(NO supported Datasource type found),然后就给换成durid数据源。
3.创建web.xml和weblogic.xml
contextConfigLocation
com.ws.WeblogicTestApplication
org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener
appServlet
org.springframework.web.servlet.DispatcherServlet
contextAttribute
org.springframework.web.context.WebApplicationContext.ROOT
1
appServlet
/
/testweblogic
org.slf4j.*
org.springframework.*
说明:关于在eclipse中创建web.xml可以参考解决新建maven工程没有web.xml的问题
4.打包部署
先在pom.xml中加入
5.部署测试
在weblogic上部署web应用可以参考weblogic部署web项目(war包)。
然后在浏览器地址栏访问项目的测试路径。
6.总结
到这里我们已经成功将 springboot和mybatis整合并部署到weblogic上。