属性注入,applicationContext中有property属性注入时,需要在类中提供set方法。
在AccountServiceImpl中注入了accountDao,那么AccountImpl中需要有set方法。(get/set可都写)
例一:
<!--(配置AccountServiceImpl) -->
<bean id="accountService" class="service.AccountServiceImpl">
<!-- 注入dao,此时需要在AccountServiceImplements中为accountDao创建set方法 -->
<property name="accountDao" ref="accountDao"></property>
</bean>
<!-- 配置AccountDaoImpl -->
<bean id="accountDao" class="dao.AccountDaoImpl">
<!-- 注入dataSource,由于AccountDaoImpl继承了JdbcDaoSupport,所以底层会自动创建一个JdbcTemplate -->
<property name="dataSource" ref="c3p0dataSource"></property>
</bean>
public class AccountServiceImpl implements AccountService {
private AccountDao accountDao;
public AccountDao getAccountDao() {
return accountDao;
}
//在AccountServiceimpl中注入AccountDao
public void setAccountDao(AccountDao accountDao) {
this.accountDao = accountDao;
}
@Override
public void account(String outName, String inName, double money) {
// TODO Auto-generated method stub
accountDao.accountOut(outName, money);
accountDao.accountIn(inName, money);
}
}
例二:
<bean id="person1" class="pc.Person">
<property name="name" value="#{person.name}"></property>
<property name="dog" value="#{dog1}"></property>
<property name="age" value="#{person.age+10}"></property>
<!-- <property name="age" value="#{person.getAge()+10}"></property> -->
</bean>
public class Person {
private String name;
private Dog dog;
private int age;
public Person() {
}
public Person(String name, Dog dog, int age) {
super();
this.name = name;
this.dog = dog;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}