@Autowire konstruktor z parametrem i przekazanie do niego zmiennej

0

Cześć.
Mam taki problem ze Springiem MVC, otóż mając klasy:

@Controller
public class IndexController {

    @Autowire
    private InnaKlasa inna;

    @RequestMapping(value = "/index", method = RequestMethod.GET)
    public String printWelcome(ModelMap model, Principal principal) {
        String name = principal.getName();
        String jakasWartosc = "ala";

        return "index";
    }
}


@Component
public class InnaKlasa {
    public InnaKlasa(String wartosc) {
    ...
    }
}

W jaki sposób przekazać do konstruktora InnaKlasa zmienną jakasWartosc?

0

A mozna wiedziec co Ty wlasciwie chcesz osiagnac? Dlaczego probujesz wartosc przekazac przez konstruktor, a nie np. przez settera?

1

Albo zrób z tego property które też będziesz wstrzykiwał, albo musisz sobie tego beana inicjalizować w xmlu / w klasie konfiguracyjnej.

0

InnaKlasa musi mieć konstruktor domyślny, albo
InnaKlasa musi być tworzona przez fabrykę, którą wstrzykujesz i z której wyciągasz obiekty za pomocą metody, która przyjmuje parametry "konfiguracyjne"

class InnaKlasaFactory{

    public InnaKlasa get(String param){
         return new InnaKlasa(param);
    }
}

W tym przypadku dobrze by było zastąpić InnaKlasa interfejsem i zamiast new użyć metody getBean z doprecyzowanym typem z kontekstu.

0

Ok, dzięki. Najlepszym rozwiązaniem dla mnie będzie użycie setterów. Dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1