基于xml、注解、JavaConfig实现spring的ioc

张开发
2026/4/9 20:36:24 15 分钟阅读

分享文章

基于xml、注解、JavaConfig实现spring的ioc
代码结构如下//IUserDao package com.example.dao; public interface IUserDao { void getUser(); }//UserDao package com.example.dao; public class UserDao implements IUserDao { Override public void getUser() { System.out.println(查询用户); } }//IUserService package com.example.service; public interface IUserService { void getUser(); }//UserService package com.example.service; import com.example.dao.IUserDao; import com.example.dao.UserDao; public class UserService implements IUserService { IUserDao userDao new UserDao(); Override public void getUser() { userDao.getUser(); } }//test import com.example.service.IUserService; import com.example.service.UserService; public class Test { org.junit.Test public void test(){ IUserService userService new UserService(); userService.getUser(); } }1.xml方式在resources里新建spring.xml文件?xml version1.0 encodingUTF-8 ? !-- 1.XML方式 -- beans xmlnshttp://www.springframework.org/schema/beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd !-- 让Spring帮我们去new对象对象直接的依赖也让spring帮我们进行组织 -- bean classcom.example.service.UserService !-- 依赖注入 -- property nameuserDao refuserDao/property /bean bean classcom.example.dao.UserDao nameuserDao/bean /beans注意需要在UserService里面写set方法名称为set加property的name//UserService package com.example.service; import com.example.dao.IUserDao; public class UserService implements IUserService { //依赖spring注入 IUserDao userDao; public IUserDao getUserDao() { return userDao; } public void setUserDao(IUserDao userDao) { this.userDao userDao; } Override public void getUser() { userDao.getUser(); } }//test import com.example.service.IUserService; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { org.junit.Test public void test(){ // 要依赖spring注入就需要从spring容器中获取UserService ClassPathXmlApplicationContext ioc new ClassPathXmlApplicationContext(spring.xml); IUserService service ioc.getBean(IUserService.class); service.getUser(); } }2.注解方式修改spring.xml文件?xml version1.0 encodingUTF-8 ? !-- 2.注解 -- beans xmlnshttp://www.springframework.org/schema/beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:contexthttp://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 http://www.springframework.org/schema/context/spring-context.xsd !-- 告诉spring注解所在的位置 -- context:component-scan base-packagecom.example/context:component-scan /beans修改UserService 和 UserDao test不做修改//UserService package com.example.service; import com.example.dao.IUserDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; //标识当前类交给spring去new交给spring进行管理 Component public class UserService implements IUserService { //依赖spring注入 //让spring自动注入进来 Autowired IUserDao userDao; Override public void getUser() { userDao.getUser(); } }//UserDao package com.example.dao; import org.springframework.stereotype.Component; Component public class UserDao implements IUserDao { Override public void getUser() { System.out.println(查询用户); } }3.JavaConfig方式不再使用spring.xml 文件新建JavaConfig类代替spring.xml 文件UserService 和 UserDao仍使用注解//javaConfig package com.example.config; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; // Configuration xml配置文件 Configuration // ComponentScan(com.example) context:component-scan base-packagecom.example/context:component-scan ComponentScan(com.example) public class javaConfig { }修改test//test import com.example.config.javaConfig; import com.example.service.IUserService; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Test { org.junit.Test public void test(){ AnnotationConfigApplicationContext ioc new AnnotationConfigApplicationContext(javaConfig.class); IUserService service ioc.getBean(IUserService.class); service.getUser(); } }

更多文章