Wstrzykiwanie zależności - Standalone app

0

Dostaję cały czas null w lini, gdzie jest pole.zapisz. Chyba nie wstrzykuje zależności, co jeszcze potrzebuje w konfiguracji, żeby to zadziałało?

 
@Service
public class KlasaTest {

    @Autowired
    private Klasa1Impl pole;


    @Test
    public void testMetody(){
        ApplicationContext context = new ClassPathXmlApplicationContext("SpringBeans.xml");
        System.out.println(context); //wypisuje adres obiektu
        pole.zapisz(jakisObiekt);
    }
}

@Repository
public class Klasa1Impl implements InterfejsDao {
    private JdbcTemplate jdbcTemplate;

    @Autowired
    public void setDataSource(DataSource dataSource){
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    }

    //jakies tam metody
}


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/cache"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd">

    <context:property-placeholder location="classpath:application.properties"/>
    <context:component-scan base-package="com.pakiet.doskanowania"/>
    <context:annotation-config/>


    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

</beans>
0

Dlaczego używasz XML zamiast Java Config?

0

@scibi92 taki wymóg. Wiem, że jest JavaConfig, wiem, że jest Spring Boot, ale ma być xml i bez boota.

0

To jest w ogóle mocny mindfuck co robisz bo co tam robi metoda z jakimś @Test? Powiedz mi jeszcze że ty to chcesz odpalać jako test? To to nie ma prawa zadziałać przecież! Instancje klasy testowej stworzy ci przecież JUnit a nie Spring, więc żadne injecty nie zadziałają, a to że potem sobie instancjonujesz Springowe Bean Factory nic nie zmienia bo springowy context utworzy kolejny obiekt tej twojej klasy i tam pewnie poprawnie wszystko wstrzyknie.

Jakbyś dał sobie KlasaTest x = context.getBean(KlasaTest.class); to obiekt x miałby powstrzykiwane pola bo jest zarządzany przez springa.
W skrócie: nie rozumiesz co robisz. Napisz moze co chcesz osiągnąć.

0

Dzięki @Shalom Twoja sugestia pomogła.

1

Ale to nie była sugestia jak to powinno wyglądać, bo nie powinno ani trochę. Jeśli piszesz test to zrób osobną klasę testową i użyj jakiegoś SpringJUnitRunnera w niej a nie cuda na kiju wyprawiaj.

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