使用Groovy进行依赖注入

为什么选择Groovy?

传统的依赖注入是XML,对我而言,可读性太差,太不美观,强烈地想换一个方式进行依赖注入,Groovy作为XML的替代方案,在Spring4之后被引入,是基于JVM的一门方言,具有较强的可读性,写更少的更易懂的脚本,完成同样的功能。

基于Spring boot框架

我选择了Spring boot框架作为MVC,看重了它的惯例大于配置,不用繁琐地配置。

以下代码是伪代码,只是大概说明使用的方式

Application.java

@SpringBootApplication
class Application {
  public static void main(String[] args) {
    Object[] sources = new Object[]{ Application.class, new ClassPathResource("application_context.groovy") };
    SpringApplication.run(sources, args);
  }
}

在Application启动的时候读入该脚本,解析出错会抛出异常。

src/main/resources/application_context.groovy

beans {
  userService(UserMockService) {
    parameter = "你能在这初始化参数"
  }
}

在groovy配置文件里能声明要注入的beans,可以配置初始化时的参数值,这里就是声明一个userService,它的实现是UserMockService

UserController.java

@Controller
class UserController {
  @Autowired
  private UserService userService;

  public User getUserAction(Long userId) {
    return userService.findByUserId(userId);
  }
}

User.java

class User {
  String name;
  public User(String name) {
    this.name = name;
  }
}

UserService.java

interface UserService {
  User findByUserId(Long userId);
}

UserMockService.java

class UserMockService implements UserService {
  private String parameter;
  
  public String getParameter() { return parameter; }
  public void setParameter(String parameter) {
    this.parameter = parameter;
  }
  public User findByUserId(Long userId) {
    return new User("mockUser");
  }
}

参考资料

< fuck>XML< /fuck>

posted @ 2016-03-28 22:28  Srggggg  阅读(3170)  评论(0编辑  收藏  举报