注解开发--依赖注入
引用类型
使用@Autowired注解开启自动装配模式(按类型)
注意多了个'd'
@Service
public class BookServiceImpl implements BookService {
@Autowired
private BookDao bookDao;
// public void setBookDao(BookDao bookDao) {
// this.bookDao = bookDao;
// }
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
}
- 自动装配基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据,因此无需提供setter方法
- 自动装配建议使用无参构造方法创建对象(默认),如果不提供对应构造方法,请提供唯一的构造方法
如果有多个相同类型的Bean
使用@Qualifier,指定名称装配bean
@Service
public class BookServiceImpl implements BookService {
@Autowired
@Qualifier("bookDao")
private BookDao bookDao;
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
}
简单数据类型(值类型)
使用@Value实现简单类型注入
@Repository("bookDao")
public class BookDaoImpl implements BookDao {
@Value("100")
private String connectionNum;
}
@Value可以加载外部的.properties配置文件
加载外部properties配置文件
使用@PropertySource
// SpringConfig.java
@Configuration
@ComponentScan("com.abc")
@PropertySource("jdbc.properties")
// @PropertySource({"jdbc.properties","jdbc2.properties"}) // 加载多个
public class SpringConfig {
}
资源通配符 *.properties 不被允许使用
可以写classpath——>@PropertySource("classpath:jdbc.properties")
# jdbc.properties
name=woc666
// BookDaoImpl.java
@Repository("bookDao")
public class BookDaoImpl implements BookDao {
@Value("${name}")
private String connectionNum;
}