首先要道歉,上篇文章忘记发了两个类,而且没有介绍我的小框架如何使用,在这章补上。另外大家如果看了我之前的文章也许会对时间产生疑问,在此要说明一下:第一篇博文开始时交代的时间为4月13号,也就是昨天。博文是后补的,所以发的比较密。
在此先把上篇文章遗漏的两个类奉上。
@Bean
package com.mxsl.framework.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.mxsl.framework.beans.BeanType;
/**
* 用于标注需要注册的Bean
* @author gr
*
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Bean {
/**
* Bean的ID
* @return
*/
String value() default "";
/**
* Bean作用域,默认单例
* @return
*/
BeanType type() default BeanType.SINGLETON;
}
@Inject
package com.mxsl.framework.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 表示此字段需要注入
* @author gr
*
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Inject {
/**
* 需要注入的Bean的ID,如果为空则默认为字段名
* @return
*/
String value() default "";
}
因为上篇文章未能介绍此框架的使用方式,在此补上。
首先此框架的注入方式与Spring类似,可以使用注解也可以使用配置文件,但各方面功能相对单一很多。
配置文件就算一个JSON文件,默认会读取/WEB-INF/Config.json文件,会读取到文件中需要扫描的路径以及配置的Bean属性。格式如下:
{
scanPath:'需要扫描的路径,如com.mxsl',
beans:[{
id:'生成Bean的Id,跟Spring中Bean的ID是一个含义,如userService',
classes:'Bean对应的Class,如com.mxsl.framework.test.UserService',
//注入属性分为两种,一种是Bean的引用,一种是初始化的
//如下则为初始化值类型
values:{
//变量名:变量值,如下
id:'001'
}
},{
id:'userAction',
classes:'com.mxsl.framework.test.UserAction',
//如下则为注入Bean,同样是变量名:Bean的ID
members:{
userService:'userService'
}
}]
以上为配置文件方式声明Bean,使用注解则为在类上加入@Bean的注解。如果需要声明ID则给予注解值即可,另外@Bean的type为Bean的作用域,默认为单例。
对于需要注入的字段,则加上注解@Inject,此注解的值为需要注入的Bean的ID,如果与字段名相同则可以不填。
配置方式就如上两种,看官觉得能满足你的需求么?如有问题或指教,欢迎评论!