core: function invoker can use private/protected constructor to instantiate class
spring: spring module encapsulates all config, no need to do a packages scan there