建的项目是用maven的方式创建的:
创建好后文件的格式:
pom.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>spring_ioc_annotaction_maven</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
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
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<!--开启事务-->
<!-- <context:annotation-config/>-->
<!-- 告诉spring 造定时扫描包 cn.javabs-->
<context:component-scan base-package="cn.javabs"/>
</beans>
UserDaoImpl 的文件
package cn.javabs.dao.impl;
import cn.javabs.dao.UserDao;
import org.springframework.stereotype.Repository;
@Repository("userDao")
// <bean id="userDao" class="cn.javabs.dao.impl.UserDaoImpl"/>
public class UserDaoImpl implements UserDao {
public void addUser() {
System.out.println("用户已被添加");
}
}
UserDao 接口
```java
package cn.javabs.dao;
public interface UserDao {
void addUser();
}
UserServiceImpl 类
package cn.javabs.service.impl;
import cn.javabs.dao.UserDao;
import cn.javabs.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service("userService")
// 相当于 <bean id="userService" class="cn.javabs.service.impl.UserServiceImpl"/>
public class UserServiceImpl implements UserService {
// @Resource (“userDao‘)=@Autowired + @Qualifier("userDao")
// 相当于下面两个方法的省略
@Autowired
// 相当于 略了 setter 方法
@Qualifier("userDao")
// 相当于name的值 <property name="userDao" ref="userDao"/>
private UserDao userDao;
//
// public void setUd(UserDao ud) {
// this.ud = ud;
// }
public void add() {
System.out.println("用户已被调用");
userDao.addUser();
}
}
UserService 接口
package cn.javabs.service;
public interface UserService {
void add();
}
MyTest
package cn.javabs.text;
import cn.javabs.service.UserService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* 项目的运行 是由 读取 执行 bea.xml (Spring 的核心配置文件)
*/
public class MyTest {
private UserService userService;
@Test public void funcation(){
// 1. 读取 根路径下的 配置文件 bean.xml
ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
// 得到代理对象 userService | // 是去获取的@Service("userService")
userService = (UserService) ac.getBean("userService");
System.out.println(userService);
// 调用添加方法
userService.add();
}
}
运行的结果:
错误: