Spring boot: преобразование класса в bean-компонент - PullRequest
0 голосов
/ 19 июня 2020

Новое в весенних ботинках. У меня есть класс , реализующий интерфейс , и я хотел бы преобразовать этот класс в bean-компонент. Есть способ сделать это?

Вот класс:

public class UnitTestContextProvider implements MockDataProvider {

    @Override
    public MockResult[] execute(MockExecuteContext ctx) throws SQLException {

        // You might need a DSLContext to create org.jooq.Result and org.jooq.Record objects
        DSLContext create = DSL.using(SQLDialect.POSTGRES);
        MockResult[] mock = new MockResult[1];

        // The execute context contains SQL string(s), bind values, and other meta-data
        String sql = ctx.sql();

        // Exceptions are propagated through the JDBC and jOOQ APIs
        if (sql.toUpperCase().startsWith("DROP")) {
            throw new SQLException("Statement not supported: " + sql);
        }

        // You decide, whether any given statement returns results, and how many
        else if (sql.toUpperCase().startsWith("SELECT")) {

            // Always return one record
            Result<Record2<UUID, String>> result = create.newResult(CLIENT.CLIENT_ID, CLIENT.CLIENT_NAME);
            result.add(create
                    .newRecord(CLIENT.CLIENT_ID,CLIENT.CLIENT_NAME)
                    .values(UUID.fromString("88ccc2c2-492f-4f03-9676-3c39e0c51514"), "Orwell"));
            mock[0] = new MockResult(1, result);
        }

        // You can detect batch statements easily
        else if (ctx.batch()) {
            // [...]
        }

        return mock;
    }
}

И это то, что я пытаюсь :

 @Configuration
 public class ContextProviders{

    @Bean
    public UnitTestContextProvider unitTestContext() {
      //This is similar to the class described above.
    }
 }

Моя основная проблема заключается в том, как обрабатывать интерфейсную часть.

1 Ответ

2 голосов
/ 19 июня 2020

измените вашу конфигурацию на следующую. Вам нужно аннотировать его аннотацией @Bean. теперь вы сможете использовать аннотацию @Autowired или @Inject, чтобы внедрить ее в другой управляемый bean-компонент Spring.

@Configuration
public class ContextProviders{
    @Bean
    public MockDataProvider unitTestContext() {
        return new UnitTestContextProvider();
    }
}
...