类似Spring Boot的开源框架jboot

    xiaoxiao2023-06-04  86

    jboot

    jboot is a similar springboot project base on jfinal and undertow,we have using in product environment.

    jboot 中文描述

    jboot是一个基于jfinal、undertow开发的一个类似springboot的开源框架, 我们已经在正式的商业上线项目中使用。她集成了代码生成,微服务,MQ,RPC,监控等功能, 开发者使用及其简单。

    maven dependency

    <dependency> <groupId>io.jboot</groupId> <artifactId>jboot</artifactId> <version>${last_version}</version> </dependency>

    controller example

    new a controller

    @RequestMapping("/") public class MyController extend JbootController{ public void index(){ renderText("hello jboot"); } }

    start

    public class MyStarter{ public static void main(String [] args){ Jboot.run(args); } }

    visit: http://127.0.0.1:8088

    mq example

    config jboot.properties

    #type default redis (support: redis,activemq,rabbitmq,hornetq,aliyunmq ) jboot.mq.type = redis jboot.mq.redis.address = 127.0.0.1 jboot.mq.redis.password = jboot.mq.redis.database =

    server a sendMqMessage

    Jboot.getMq().publish(yourObject, toChannel);

    server b message listener

    Jboot.getMq().addMessageListener(new JbootmqMessageListener(){ @Override public void onMessage(String channel, Object obj) { System.out.println(obj); } }, channel);

    rpc example

    config jboot.properties

    #type default motan (support:local,motan,grpc,thrift) jboot.rpc.type = motan jboot.rpc.requestTimeOut jboot.rpc.defaultPort jboot.rpc.defaultGroup jboot.rpc.defaultVersion jboot.rpc.registryType = consul jboot.rpc.registryName jboot.rpc.registryAddress = 127.0.0.1:8500

    define interface

    public interface HelloService { public String hello(String name); }

    server a export serviceImpl

    @JbootrpcService public class myHelloServiceImpl extends JbootService implements HelloService { public String hello(String name){ System.out.println("hello" + name); return "hello ok"; } }

    server b call

    HelloService service = Jboot.service(HelloService.class); service.hello("michael");

    cache example

    config jboot.properties

    #type default ehcache (support:ehcache,redis,ehredis (ehredis:tow level cache,ehcache level one and redis level tow)) jboot.cache.type = redis jboot.cache.redis.address = jboot.cache.redis.password = jboot.cache.redis.database =

    use cache

    Jboot.getCache().put("cacheName", "key", "value");

    database access example

    config jboot.properties

    #type default mysql (support:mysql,oracle,db2...) jboot.datasource.type= jboot.datasource.url= jboot.datasource.user= jboot.datasource.password= jboot.datasource.driverClassName= jboot.datasource.connectionInitSql= jboot.datasource.cachePrepStmts= jboot.datasource.prepStmtCacheSize= jboot.datasource.prepStmtCacheSqlLimit=

    define model

    @Table(tableName = "user", primaryKey = "id") public class User extends JbootModel<User> { }

    dao query

    public class UserDao { public static find User DAO = new User(); public User findById(String id){ return DAO.findById(id); } public List<User> findByNameAndAge(String name,int age){ return DAO.findListByColums(Columns.create().like("name","%"+name+"%").gt("age",age)); } }

    event example

    send event

    Jboot.sendEvent(actionStr, dataObj)

    event listener

    @EventConfig(action = {User.ACTION_ADD,User.ACTION_DELETE}) public class MyEventListener implements JbootEventListener { public void onMessage(JbootEvent event){ if(event.getAction.equals(User.ACTION_ADD)){ System.out.println("new user add, user:"+event.getData); }else if(event.getAction.equals(User.ACTION_DELETE)){ System.out.println("user deleted, user:"+event.getData); } } }

    read config

    config jboot.properties

    jboot.myconfig.user = aaa jboot.myconfig.password = bbb

    define config model

    @PropertieConfig(prefix = "jboot.myconfig") public class MyConfig { private String name; private String password; // getter and setter }

    get config model

    MyConfig config = Jboot.config(MyConfig.class); System.out.println(config.getName());

    code generator

    public static void main(String[] args) { String modelPackage = "io.jboot.test"; String dbHost = "127.0.0.1"; String dbName = "yourDbName"; String dbUser = "root"; String dbPassword = ""; JbootModelGenerator.run(modelPackage, dbHost, dbName, dbUser, dbPassword); }

    build

    config pom.xml

    <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>appassembler-maven-plugin</artifactId> <version>1.10</version> <configuration> <assembleDirectory>${project.build.directory}/app</assembleDirectory> <repositoryName>lib</repositoryName> <binFolder>bin</binFolder> <configurationDirectory>webRoot</configurationDirectory> <copyConfigurationDirectory>true</copyConfigurationDirectory> <configurationSourceDirectory>src/main/resources</configurationSourceDirectory> <repositoryLayout>flat</repositoryLayout> <encoding>UTF-8</encoding> <logsDirectory>logs</logsDirectory> <tempDirectory>tmp</tempDirectory> <programs> <program> <mainClass>io.jboot.Jboot</mainClass> <id>jboot</id> <platforms> <platform>windows</platform> <platform>unix</platform> </platforms> </programs> </configuration> </plugin> </plugins> </build>

    maven build

    mvn package appassembler:assemble

    start app

    cd yourProjectPath/target/app/bin ./jboot

    start app and change config

    cd yourProjectPath/target/app/bin ./jboot --jboot.server.port=8080 --jboot.rpc.type=local

    use your properties replace jboot.properties

    cd yourProjectPath/target/app/bin ./jboot --jboot.model=dev --jboot.server.port=8080

    use jboot-dev.proerties replace jboot.properties and set jboot.server.port=8080

    thanks

    rpc framework:

    motangrpcthrift

    mq framework:

    activemqrabbitmqredis mqhornetqaliyun mq

    cache framework

    ehcacheredis

    core framework:

    jfinalundertow

    author

    name:yangfuhaiqq:1506615067email:fuhai999@gmail.com

    文章转载自 开源中国社区 [http://www.oschina.net]

    相关资源:jboot 入门案例
    最新回复(0)