Я в основном использую @Autowired
и @Component
аннотации в моем проекте. Тем не менее, я собираюсь использовать класс DataSource
для действий с базой данных.Весна объявить компонент в xml
Итак, я использую это в моем диспетчерскую-servlet.xml:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/market"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</bean>
В моем классе дао, Мой сеттер для dataSource
является:
@Autowired
private DataSource dataSource;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
this.jdbcTemplateObject = new JdbcTemplate(dataSource);
}
Однако это не делая трюк. Мой jdbcTemplateObject
: null
.
Если я не использую «контекст: компонентное сканирование ...» и вместо этого использую классические весенние бобы, не используя аннотацию @Autowired
, все работает хорошо.
Я могу использовать свою базу данных. Тем не менее, я не хочу объявлять все компоненты по одному в моем XML-файле. По мере роста проекта это не будет практичным. Как я могу решить эту проблему ? Можно ли объявить dataSource
в моем dispatcher-servlet.xml
как компонент, поэтому @Autowired
работает на dataSource?
Когда вы используете '@ Autowired' в полях, Spring будет искать зависимости и вводить их прямо там, нет смысла использовать метод setter здесь. –
Весна сделает то, что вам не нужен сеттер. Вы можете использовать jdbctemplate в xml и autowire. –
Большое спасибо. Я не знал, что мне не нужен сеттер. Как он может установить его без сеттера? –