使用@Repository、@Service、@Controller注解配置,使其更加清晰属于哪一层,因为我是模拟的web层,所有没有使用@Controller注解,后面结合web开发会使用到

1.创建UserDao接口及其实现类UserDaoImpl(接口代码省略)

//<bean id="userDao" class="com.hao.dao.impl.UserDaoImpl"></bean>
@Repository("userDao")
public class UserDaoImpl implements UserDao { @Override
public void save1() {
System.out.println("save running...");
}
}

2.创建UserService接口及其实现类UserServiceImpl(接口代码省略)

//<bean id="userService" class="com.hao.service.impl.UserServiceImpl">
@Service("userService")
public class UserServiceImpl implements UserService {
// <property name="userDao" ref="userDao"/>
@Autowired //按照类型从spirng容器中进行匹配的
//@Qualifier("userDao") //按照id值从容器中进行匹配的,但是@Qualifier结合@Autowired一起使用
private UserDao userDao; @Override
public void sava() {
userDao.save1();
}
}

注意点1:可以省略set方法
注意点2:@Qualifier注解可以省略,spring会尝试从容器中找一个UserDao的bean实例,找到后直接就注入到该地方;但是如果容器当中UserDao有多个bean实例,然后它就不知道该注入哪个bean了,所以此时要加上@Qualifier注解进行id标识说明
@Qualifier是按照id值从容器中进行匹配的,但是@Qualifier必须要结合@Autowired进行使用


#然后可以不使用这两个注解,单独使用一个@Resource(name=“id值”)


3.配置组件扫描

<?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 https://www.springframework.org/schema/context/spring-context.xsd"> <!-- 配置组件扫描-->
<!-- spring会扫描hao包下的所有子包和该包下的所有类-->
<context:component-scan base-package="com.hao"/>
</beans>

4.模拟web层进行测试

public class UserController {
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
UserService service = (UserService) context.getBean("userService");
service.sava();
}
}

结果:sava running . . .

最新文章

  1. C++_系列自学课程_第_12_课_结构体
  2. 点评前端开发工具cortex安装使用方法
  3. 自定义view--实现滑动
  4. Linux makefile 教程 非常详细,且易懂
  5. Java学习——增强for循环、switch
  6. 转载:CancellationToken
  7. Arcgis-ModelBuilder和Python学习
  8. 史上最全Vim快捷键键位图(入门到进阶)
  9. 黑盒测试用例设计方法&amp;理论结合实际 -&gt; 等价类划分
  10. Ubunu下安装Docker
  11. C#实现微信开发
  12. 关于web多标签多条件筛选的思考以及缓存的正确使用方法(上)
  13. 刚收到一个吃瓜群众看了肯定不信的offer!
  14. hbase_1
  15. python接口自动化-post请求1
  16. ASP.Net Post方式获取数据流的一种简单写法
  17. luogu P4385 [COCI2009]Dvapravca
  18. CallContext,ThreadStatic,AsyncLocal&lt;T&gt;,ThreadLocal&lt;T&gt;,学习笔记
  19. vue,在模块中动态添加dom节点,并监听
  20. 基于UML的公开招聘教师管理系统建模的研究和设计

热门文章

  1. angular批量上传图片并进行校验
  2. LGP6825题解
  3. Ubuntu20.04安装RabbitMQ
  4. Java案例——字符串拼接
  5. 6月7日 python 复习 collections
  6. 4月16日 python学习总结 封装之property、多态 、classmethod和staticmethod
  7. springcloud学习03-spring cloud eureka(上)
  8. zk 节点宕机如何处理?
  9. 用 Java 写一个折半查找?
  10. 在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?