func initApp(confServer *conf.Server, registry *conf.Registry, confData *conf.Data, logger log.Logger, tracerProvider *trace.TracerProvider) (*kratos.App, func(), error) {
	client := data.NewEntClient(confData, logger)
	dataData, cleanup, err := data.NewData(client, logger)
	if err != nil {
		return nil, nil, err
	}
	userRepo := data.NewUserRepo(dataData, logger)
	userUseCase := biz.NewUserUseCase(userRepo, logger)
	cardRepo := data.NewCardRepo(dataData, logger)
	cardUseCase := biz.NewCardUseCase(cardRepo, logger)
	addressRepo := data.NewAddressRepo(dataData, logger)
	addressUseCase := biz.NewAddressUseCase(addressRepo, logger)
	userService := service.NewUserService(userUseCase, cardUseCase, addressUseCase, logger)
	grpcServer := server.NewGRPCServer(confServer, logger, tracerProvider, userService)
	registrar := server.NewRegistrar(registry)
	app := newApp(logger, grpcServer, registrar)
	return app, func() {
		cleanup()
	}, nil
}
Injectors from wire.go:
initApp init kratos application.
package main
import (
	"github.com/go-kratos/beer-shop/app/user/service/internal/biz"
	"github.com/go-kratos/beer-shop/app/user/service/internal/conf"
	"github.com/go-kratos/beer-shop/app/user/service/internal/data"
	"github.com/go-kratos/beer-shop/app/user/service/internal/server"
	"github.com/go-kratos/beer-shop/app/user/service/internal/service"
	"github.com/go-kratos/kratos/v2"
	"github.com/go-kratos/kratos/v2/log"
	"go.opentelemetry.io/otel/sdk/trace"
)