1:属性注入:是指在创建对象的时候,向类里面的属性设置值
2:属性注入的三种方式:
1:使用属性的set方式注入
private String username;
private String password;
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
User user=new User();
user.setUsername("zhangsan");
2:有参数构造注入
private String username;
public User(String username){
this.username=username;
}
User user=new User("lucy");
3:使用接口注入
public interface Dao{
public void delete(String name){};
}
public class DaoImp implements Dao{
private String name;
@Overrider
public void delete(String name){
this.name=name;
}
}
但是!!在spring中只支持前面两种注入方式!!
3:Spring中进行属性注入
1):使用构造器注入
public class ConstructorDI {
private String username;
public ConstructorDI(String username) {
this.username = username;
}
public void test1(){
System.out.println("有参构造方法注入属性"+username);
}
}
xml文件
扫描二维码关注公众号,回复:
2249378 查看本文章
<bean id="demo" class="com.PropertyInspect.ConstructorDI">
<constructor-arg name="username" value="zhangsan"></constructor-arg>
</bean>
单元测试
@Test
public void constructorTest(){
ApplicationContext context=new ClassPathXmlApplicationContext("spring-config.xml");
ConstructorDI setdi=(ConstructorDI) context.getBean("demo");
setdi.test1();
}
2):使用set方法进行注入
public class Book {
private String bookname;
//set方法
public void setBookname(String bookname) {
this.bookname = bookname;
}
//测试方式
public void demoBook(){
System.out.println("通过set方法注入属性"+bookname);
}
}
xml文件配置
<!--使用set方法注入属性-->
<bean id="book" class="com.PropertyInspect.Book">
<!--设置属性值-->
<property name="bookname" value="c语言"></property>
</bean>
单元测试:
@Test
public void setDi(){
ApplicationContext context=new ClassPathXmlApplicationContext("spring-config.xml");
Book book=(Book) context.getBean("book");
book.demoBook();
}