Java 依赖注入框架 - Simba

agds5169 8年前

Simba是基于Java的依赖注入和AOP框架

  • 轻量级的依赖注入和AOP框架

  • 使用XML方式定义依赖注入

  • 支持面向切面的编程方式

安装方式

<dependency>      <groupId>org.pinae</groupId>      <artifactId>simba</artifactId>      <version>1.1</version>  </dependency>

XML定义方式

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../bean.xsd">      <bean name="PersonFactory" class="org.pinae.simba.context.resource.Person"          factory-bean="org.pinae.simba.context.resource.PersonFactory"           factory-method="getPerson"          create="create" run="run" singleton="true"           timeout="3" destroy="destroy">            <property name="name">              <reflection>Name</reflection>          </property>          <property name="age">              <value>27</value>          </property>          <property name="email">              <value>interhui@21cn.com</value>          </property>          <property name="admin">              <value>true</value>          </property>      </bean>        <bean name="Name" class="org.pinae.simba.context.resource.Person.Name">          <constructor>              <value>hui</value>              <value>yugeng</value>          </constructor>      </bean>  </beans>

Java Bean

public class Person {        private static Logger log = Logger.getLogger(Person.class);        private Name name;      private int age;      private String email;      private boolean admin;        public Name getName() {          return name;      }      public void setName(Name name) {          this.name = name;      }      public int getAge() {          return age;      }      public void setAge(int age) {          this.age = age;      }      public String getEmail() {          return email;      }      public void setEmail(String email) {          this.email = email;      }      public boolean isAdmin() {          return admin;      }      public void setAdmin(boolean admin) {          this.admin = admin;      }      public void create(){          log.debug("Create Person Bean");      }      public void run(){          this.age ++;      }      public void destroy(){          log.debug("Destory Person Bean");      }        public class Name {          private String firstName;          private String lastName;            public Name(String lastName, String firstName){              this.lastName = lastName;              this.firstName = firstName;          }          public String getFirstName() {              return firstName;          }          public void setFirstName(String firstName) {              this.firstName = firstName;          }          public String getLastName() {              return lastName;          }          public void setLastName(String lastName) {              this.lastName = lastName;          }      }  }

实例程序

public class DemoTestManager {        private static Logger log = Logger.getLogger(DemoTestManager.class);        public static void main(String arg[]) throws Exception {          ResourceContext bean = new FileSystemResourceContext("Person.xml");          Person person = (Person)bean.getBean("PersonFactory");            logger.debug(person.getName().getLastName() + ":" + person.getEmail());      }  }