SeaSar是日本的一个很火的框架,类似于Spring,开发起来也很快,很牛逼的,我做了一个简单的SeaSar的案例和他开发的环境搭建,大致流程是写好Bean,然后在app.icon这个配置文件中,配置Bean,然后调用
环境搭建
2.3.23版本的Seasar需要的依赖也挺多的,不同的版本依赖的dao包也是不一样的,下面图片的依赖中,jboss的javassist 不是上面的版本,把我坑了一下,句话疼
pom.xml配置文件
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>seasar</groupId>
<artifactId>demo</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>demo Maven Webapp</name>
<url>http://maven.apache.org</url>
<repositories>
<repository>
<id>aliyunmaven</id>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
<repository>
<id>seasar</id>
<url>https://www.seasar.org/maven/maven2/</url>
</repository>
</repositories>
<dependencies>
<!-- 导入jsp -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2.1-b03</version>
<scope>provided</scope>
</dependency>
<!-- 导入servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- seasar框架 的容器 BEGIN-->
<dependency>
<groupId>org.seasar.container</groupId>
<artifactId>s2-framework</artifactId>
<version>2.3.23</version>
</dependency>
<!-- https://mvnrepository.com/artifact/aopalliance/aopalliance -->
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/jboss/javassist -->
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.21.0-GA</version>
</dependency>
<!-- https://mvnrepository.com/artifact/ognl/ognl -->
<dependency>
<groupId>ognl</groupId>
<artifactId>ognl</artifactId>
<version>2.6.9-patch-20070624</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<!-- seasar框架 的容器 END-->
<!--seasar框架 Dao-->
<!-- 不同版本的s2-dao依赖的s2-framework不一样 -->
<dependency>
<groupId>org.seasar.dao</groupId>
<artifactId>s2-dao</artifactId>
<version>1.0.50</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seasar.container/s2-extension -->
<dependency>
<groupId>org.seasar.container</groupId>
<artifactId>s2-extension</artifactId>
<version>2.3.23</version>
</dependency>
</dependencies>
<build>
<finalName>demo</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<!-- 配置war包的名称 -->
<warName>hello</warName>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.4.6.v20170531</version>
<configuration>
<scanIntervalSecond>10</scanIntervalSecond>
<webApp>
<contextPath>/users</contextPath>
</webApp>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>8080</port>
<maxIdleTime>60000</maxIdleTime>
</connector>
</connectors>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
入门案例
我们建立一个UserDao的对象,然后通过Seasar来管理Dao,我们通过配置文件的方式来获取到Dao的实例,然后调用里面的方法
UserDao
package com.yellowcong.dao;
/**
*
*作者:yellowcong
*日期:2017/08/29
*時間:16:16:38
*描述:用户操作的Dao
*/
public interface UserDao {
/**
* 获取用户名称
* @param username
* @return
*/
String getUserName(String username);
}
UserDaoImpl
package com.yellowcong.dao.impl;
import com.yellowcong.dao.UserDao;
/**
*
*作者:yellowcong
*日期:2017/08/29
*時間:16:17:32
*描述:
*/
public class UserDaoImpl implements UserDao{
@Override
public String getUserName(String username) {
return "Doubi"+username;
}
}
app.icon
注册我们配置的Dao
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
"http://www.seasar.org/dtd/components.dtd">
<components>
<component name="userDao" class="com.yellowcong.dao.impl.UserDaoImpl"/>
</components>
Demo.java
调用我们的配置文件,通过seasar来获取Dao对象
package com.yellowcong.test;
import org.seasar.framework.container.S2Container;
import org.seasar.framework.container.factory.S2ContainerFactory;
import com.yellowcong.dao.UserDao;
/**
*
* 作者:yellowcong 日期:2017/08/29 time:15:58:24 描述:
*/
public class Demo {
//配置文件的位置
private static final String APP_PATH = "app.dicon";
public static void main(String[] args) {
//获取到容器对象
S2Container container = S2ContainerFactory.create(APP_PATH);
//容器初始化
container.init();
UserDao userDao = (UserDao) container.getComponent("userDao");
String str = userDao.getUserName("yellowcong");
System.out.println(str);
}
}