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