zoukankan      html  css  js  c++  java
  • 使用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>

  • 相关阅读:
    Nginx中工作进程(work-process)为多少合适?
    Ubuntu中安装启动Nginx
    怎么获得类加载器?
    XML解析方式有哪些?
    HashMap常见面试题
    IO流分类
    集合之间的区别
    css布局2
    css布局1
    css3 总结01
  • 原文地址:https://www.cnblogs.com/pier2/p/spring-ioc-groovy.html
Copyright © 2011-2022 走看看