介紹
本文在參考了如何優雅的在weblogic上部署spring-boot的基礎下使用springboot整合Mybatis部署在weblogic服務器上。
環境
開發工具:Eclipse
weblogic版本:10.3.6.0
weblogic-jdk:1.8.0_91
技術實現
- 創建Maven工程,在pom文件中加入
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ws</groupId>
<artifactId>weblogic-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<spring.boot.version>1.5.4.RELEASE</spring.boot.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.2.0</version>
</dependency>
<!--使用durid數據源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.25</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-messaging</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-legacy</artifactId>
<version>1.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<attachClasses>true</attachClasses>
<archive>
<manifestEntries>
<Weblogic-Application-Version>${project.version}</Weblogic-Application-Version>
</manifestEntries>
<manifest>
<addClasspath>true</addClasspath>
<addClasspath>lib/</addClasspath>
</manifest>
</archive>
<webResources>
<resource>
<directory>${project.basedir}/src/main/resources/static</directory>
</resource>
<resource>
<directory>${project.basedir}/src/main/webapp</directory>
</resource>
</webResources>
<warName>${project.artifactId}</warName>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<configuration>
<classifier>BOOT</classifier>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
說明:由於maven倉庫中無法拉ojdbc包,需要我們手動導入。
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);
}
@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<User> getUserInfo();
}
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> 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默認使用tomcate的數據源,我在使用tomcate數據源在部署的時候報錯(NO supported Datasource type found),然後就給換成durid數據源了。一開始我使用的springboot-mybatis整合包的版本是1.1.3,在部署的時候報錯,把版本換成1.1.1就可以了。
3.創建web.xml和weblogic.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.ws.WeblogicTestApplication</param-value>
</context-param>
<listener>
<listener-class>org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextAttribute</param-name>
<param-value>org.springframework.web.context.WebApplicationContext.ROOT</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app
xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://xmlns.oracle.com/weblogic/weblogic-web-app
http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
<wls:context-root>/testweblogic</wls:context-root>
<wls:container-descriptor>
<wls:prefer-application-packages>
<wls:package-name>org.slf4j.*</wls:package-name>
<wls:package-name>org.springframework.*</wls:package-name>
</wls:prefer-application-packages>
</wls:container-descriptor>
</wls:weblogic-web-app>
說明:關於在eclipse中創建web.xml可以參考解決新建maven工程沒有web.xml的問題
4.打包部署
先在pom.xml中加入<packaging>war</packaging>。在eclipse中可以右擊pom.xml->Run As->Maven instal 將項目打成war包
5.部署測試
在weblogic上部署web應用可以參考weblogic部署web項目(war包)。
然後在瀏覽器地址欄訪問項目的測試路徑。
6.總結
到這裏我們已經成功將 springboot和mybatis整合並部署到weblogic上。