首先回顾一下配置文件中的方法
现在不需要这么麻烦,用注入的方法就行了,目录还是老样子
其中用到的是test.java、UserDao.java、Userservic.java。运行的时候才发现我的service少了一个e,呵呵了。
下面是@Autowired属性注入方法
UserDao.java中
package cn.day02.ano;
import org.springframework.stereotype.Component;
@Component(value="userDao")
public class UserDao {
public void add(){
System.out.println("userDao...");
}
}
Userservic.java中
@Autowired
private UserDao userdao;在运行时会自动去找类UserDao,跟value值没关系。@Autowired根据类名找这个类对应的对象来注入,称这个方法为自动注入。
package cn.day02.ano;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service("userService")
public class UserServic {
//得到dao对象
//1定义dao类型属性
//在dao的属性上面使用注解 完成对象的注入
@Autowired
private UserDao userdao;
//使用注解方式不需要set方法
public void add(){
System.out.println("userService....");
userdao.add();
}
}
test.java
package cn.day02.ano;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class test {
@Test
public void testService(){
ApplicationContext context=new ClassPathXmlApplicationContext("bean.xml");
UserServic userservise=(UserServic)context.getBean("userService");
System.out.println(userservise);
userservise.add();
}
}
运行结果,运行步骤就是在testService方法上右键,run as>>Junit test就行了。
以上是@Autowired的属性注入方法。当然bean.xml中有一句话不要忘了写。下面是bean.xml中的配置内容,就一句话,扫描包里的注解信息。
bean.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">
<!-- 开启注解扫描
(1)到包里面扫描类、方法、属性上面是否有注解 -->
<context:component-scan base-package="cn.day02"></context:component-scan>
</beans
下面还有一个属性注入的方法是@Resource,这个方法得在@Resource()中输入值@Resource(name="userDao"),即在name中输入用注解方式创建的对象的value值。也就是UserDao中的@Component(value="userDao")的value值。
测试程序运行的结果是一样的。用resource时需要指定你用的哪个对象,autowired不需要。