spring原始注解开发-01
我们使用xml-Bean标签的配置方式和注解做对比理解
1.创建UserDao接口以及UserDao的实现类UserDaoImpl(接口代码省略)
public class UserDaoImpl implements UserDao {
@Override
public void save1() {
System.out.println("save running...");
}
}
2.创建UserService接口以及UserServiceImpl实现类(接口代码省略)
public class UserServiceImpl implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void sava() {
userDao.save1();
}
}
3.配置applicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="userDao" class="com.hao.dao.impl.UserDaoImpl"></bean>
<bean id="userService" class="com.hao.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
</beans>
如果注解中有不明白的请访问我的博客中的依赖注入分析(xml配置)
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();
}
}
结果:save running…
===============================================================================================================================================================================================================================================================
然后实现注解进行操作
1.创建UserDao接口及其实现类UserDaoImpl(接口代码省略)
//<bean id="userDao" class="com.hao.dao.impl.UserDaoImpl"></bean>
@Component("userDao")
public class UserDaoImpl implements UserDao {
@Override
public void save1() {
System.out.println("save running...");
}
}
注:注释掉的bean标签的内容相当于下面的表签
2.创建UserService接口及其实现类UserServiceImpl(接口代码省略)
//<bean id="userService" class="com.hao.service.impl.UserServiceImpl">
@Component("userService")
public class UserServiceImpl implements UserService {
// <property name="userDao" ref="userDao"/>
@Autowired
@Qualifier("userDao") //要注入的id值
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void sava() {
userDao.save1();
}
}
3.进行web层模拟测试
public class UserController {
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
UserService service = (UserService) context.getBean("userService");
service.sava();
}
}
结果:
然后发现报错了,查看错误原因:发现是我们虽然使用了注解进行配置,但是没有告诉spring去哪里找注解,所以造成了没有创建实例
#配置组件扫描l告诉spring在哪个包下及其子包下的Bean需要进行扫描以便识别使用注解配置的类、字段和方法
<?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>
再此测试:
结果:save running…
补充:思考我们在类前使用@Component注解,并不能分辨这是哪一层上的(dao层,servce层,controller层),所以就引入了另外三个标签进行分辨,请访问spring原始注解开发-02查看内容
最新文章
- python笔记1-转义字符
- jquery返回滚动条顶部
- spark读取hdfs上的文件和写入数据到hdfs上面
- (转) Deep Learning Research Review Week 2: Reinforcement Learning
- Adaboost算法初识
- Machine Learning - 第5周(Neural Networks: Learning)
- oracle表数据误删还原
- Custom Action : dynamic link library
- web前后台数据交互的四种方式(转)
- python标准库 difflib-比较序列
- 2015 多校联赛 ——HDU5363(快速幂)
- jQuery 素材 缩略图轮播集合
- go etcd
- Linux 下磁盘挂载
- 如何预览Github上的页面
- 解决普通用户登录ulimit 报错问题
- demo: 全页面CSS3动画的一个参考例子
- 树状数组训练题2:SuperBrother打鼹鼠(vijos1512)
- 【AtCoder】Dwango Programming Contest V题解
- http post multipart/mixed的文件.
热门文章
- LGP4216题解
- 一次苦逼的SQL注入
- 嵌套OOPS导致系统卡死 每个CPU都上报softlockup的问题
- 进制转换 Java day6
- MVC 生成安全验证码(例:用于登陆验证) 方法2
- 实现一个函数功能:sum(1,2,3,4..n)转化为 sum(1)(2)(3)(4)…(n)?
- Ribbon和Feign的区别?
- elasticsearch 索引数据多了怎么办,如何调优,部署 ?
- 为什么使用 Executor 框架比使用应用创建和管理线程好?
- 什么是 Daemon 线程?它有什么意义?