本片文章是针对通过注解的方式从spring获取对象实例的。案例简单,代码完整,首先把要点梳理一下,然后贴代码
几个关键点
1、依赖中添加 spring-context
2、在Bean.xml中添加<context:component-scan base-package=“cm.hq”></context:component-scan>表明自动扫描
3、@Component(“userService”)表示对象交给容器管理
4、测试
public class Test {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext(“Bean.xml”);
UserService userServcie = (UserService) ac.getBean(“userService”);
System.out.println(userServcie);
userServcie.save();
}
}
结构图
代码如下
pom.xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
Bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
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
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 告知spring创建容器时要扫描的包 -->
<context:component-scan base-package="cm.hq"></context:component-scan>
</beans>
UserDao
public interface UserDao {
void save();
}
UserDaoImpl
@Component("userDao")
public class UserDaoImpl implements UserDao{
public void save() {
System.out.println("hello world!!");
}
}
UserService
public interface UserService {
void save();
}
UserServiceImpl
@Component("userService")
public class UserServiceImpl implements UserService {
@Autowired
private UserDaoImpl userDao;
public void setUserDao(UserDaoImpl userDao){
this.userDao = userDao;
}
public void save() {
userDao.save();
}
}
Test
public class Test {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("Bean.xml");
UserService userServcie = (UserService) ac.getBean("userService");
System.out.println(userServcie);
userServcie.save();
}
}