Как создать экземпляр конструктора со значением Dynami c и автоматически связать его? - PullRequest
0 голосов
/ 11 марта 2020

Я создал экземпляр параметризованного конструктора, который называется операцией запроса со значениями c. как @Autowire это в Requestclass? впоследствии, в классе запроса, я создал новый RatingResponse как @Autowire это также?

Инициализатор класса

public class Intializer
{ 
NewClass newclass = new NewClass();
String testName = Number + "_" + "Test"; -->getting the String number dynamically
Test test = new Test(testName); -> this is  a different class 

Operation operation = new RequestOperation(test, newclass  , 
                  sxxx, yyy, zzz); - argumented constructor
opertaion.perform();
}

RequestClass

public class RequestOperation implements Operation { 

// the constructor 
public RequestOperation(Test test, Sheet reportSheet, XElement element, TestDataManager testDataManager, Report report) 
{       
this.test = test;
this.newclass  = newclass  ;
this.sxxx= sxxx;
this.yyy= yyy;
this.zzz= zzz; 
    } 
    @Override   
public boolean perform(String CompanyName, String Province) {
Response response = new RatingResponse(this.test, this.reportSheet,
callService(this.buildRequest(CompanyName, Province)), this, this.report);-> create a new paramterizedconstructor
    } 

private String buildRequest(String CompanyName, String Province) { 
return pm.getAppProperties().getProperty(constructedValue); }
    }

** Класс ответа **

    public class RatingResponse implements Response {
    public RatingResponse(Test test, Sheet reportSheet, Object obj, RequestOperation requestOperation, Report report) {
this.test = test;
if (obj instanceof Document) {
this.document = (Document) obj;
}
this.operation = requestOperation;
this.reportSheet = reportSheet;
this.report = report;
}

** интерфейс **

@Component
public interface Operation {    
    public boolean perform(String Name, String Province);
    }

@Component
public interface Response {

    void construct();

}

1 Ответ

0 голосов
/ 11 марта 2020

При весенней загрузке вы можете автоматически связывать только типы, помеченные @Bean, или классы, помеченные @Component, или его производные, такие как @Service, @ Controller

. Особенность этих аннотаций заключается в том, что только один экземпляр класс хранится в памяти.

Так что, если вам требуется создание новых классов для каждого набора новых значений Dynami c, то их автоматическое подключение не является правильным способом для go.

Однако, если у вас есть ограниченное число возможных динамических c значений, которые может иметь ваш класс, вы можете создать bean-компоненты для каждого из них, как это

@Configuration
class MyBeans{

    @Bean
    public RatingResponse ratingResponse(){

        Response response = new RatingResponse(this.test, this.reportSheet,
        callService(this.buildRequest(CompanyName, Province)), this, this.report);
        return response
    }

}

Затем в классе вам нужно использовать его, Вы можете сделать

@Autowired 
RatingResponse ratingResponse
...