注解方法注入属性:
首先还是创建一个Book类:
public class Book {
public void print(){
System.out.println("Book---方法");
}
}
再创建一个User类:
public class User {
private String name;
private Book book;//此属性是一个类
public void print(){
System.out.println("User--方法");
System.out.println("name:"+name);
book.print();
}
}
注解需要用到@
- @Component(衍生以下三个)
- @Controller:web层
- @Service:业务层
- @Repostory:持久层(dao层)
- 这四个注解都是用来创建对象的
在Book类上声明@Service(value=“book”):
@Service(value="book")//创建一个名为book的Book类对象
public class Book {
public void print(){
System.out.println("Book---方法");
}
}
如在User类上使用@Component,:
@Component(value="user")//value如同用位置文件创建对象的id
public class User {
@Value(value = "张三")//为name属性赋值
private String name;
//@Autowired//自动匹配Book类对象
@Resource(name="book")//向book属性注入名为book的对象(在Book类已声明)
private Book book;
public void print(){
System.out.println("User--方法");
System.out.println("name:"+name);
book.print();
}
}
创建配置文件:bean5.xml
在这里插入代码片
<?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"
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">
<!-- 开启注解扫描
扫描包里属性,方法,属性里是否有注解
-->
<context:component-scan base-package="iocdemo"></context:component-scan>
<!--base-package填写你要扫描的包名 -->
</beans>
测试代码:
public class TextZhuJie {
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("bean5.xml");
User user=(User) context.getBean("user");
user.print();
}
}
结果:
User–方法
name:张三
Book—方法//Book类中的print方法被调用(说明User类中book属性已被注入)