- @Auotwired : 根据属性进行自动装配
- 把service 和dao 的对象床架,在service 和到 类添加创建对象注解
- 在service 注入dao对象,在service类添加dao类型属性
- @Qualifier : 根据属属性名称进行注入
- 要和@Autowired一同使用
- @Resource: 可以根据类型注入,可以根据名称注入
- 根据类型注入直接加@Resource , 根据名称注入 @Resource(name = “UserDaoImpl1”),在name中写上对应类的注解名称
- @Value: 注入普通属性
实现
-
在xml文件中创建扫描
引入context
-
加入xmlns:context=“http://www.springframework.org/schema/context”,
-
在xsi:schemaLocation中添加http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
-
开启组件扫描
<?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="com.Zhibin.dao,com.Zhibin.service,com.Zhibin.dao"></context:component-scan> </beans>
-
-
创建接口dao,和 实现类daoImpl,在daoImpl类加上注解 @Repository 标注其名称,相当于使用xml时的 id标签
package com.Zhibin.dao; public interface UserDao { public void add(); }
package com.Zhibin.dao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Repository; @Repository(value = "UserDaoImpl1") public class UserDaoImpl implements UserDao { // 定义dao的属性 // 不需要添加set 属性 // 添加注入属性注解 @Override public void add() { System.out.println("this is userMethod"); } }
-
在Service类加上@Service标签,定义相应的对象 使用Resource 标签,或者Qualifiar标签 在相应的value值中写上相应impl的Repository的value值
package com.Zhibin.service; import com.Zhibin.dao.UserDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.stereotype.Repository; import org.springframework.stereotype.Service; import javax.annotation.Resource; @Service public class UserService { // @Autowired // 根据类型进行注入 // @Qualifier(value = "UserDaoImpl1")// 根据名称使用 使用Qualifier 时,要和Autowired 一块使用 // @Resource //根据类型进行注解 @Resource(name = "UserDaoImpl1")// 根据名称注入 private UserDao userDao; @Value(value="abc") private String name; // 对普通的值进行注解时 使用value标签 public void add(){ userDao.add(); System.out.println("service add............"); } }
完全注解开发
-
创建配置类,替代xml配置文件
package config; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration // 将当前类 作为配置类,用作替代配置文件 @ComponentScan(basePackages = "com.Zhibin") // 开启扫描 指定相应的包 public class SpringConfig { }
package com.Zhibin.test; import com.Zhibin.service.UserService; import config.SpringConfig; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class test { @Test public void test01(){ ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); // 将原来的ClassPathXmlApplicationContext() 更换为 AnnotationConfigApplicationContext(这里协商配置类的class) UserService userService = context.getBean("userService", UserService.class); userService.add(); } }