一、XML文件实现
1.Spring环境的搭建
- 在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>com.apesourse</groupId>
<artifactId>Spring_ioc_04</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.27</version>
</dependency>
</dependencies>
</project>
- 在resources中创建配置文件Spring Config
2.Spring DI
1.找到需要以解耦方式获取实例对象的类(使用set方法)
//各个实现类以及接口
//Controller
public interface IUserContraller {
public void save();
}
public class UserContrallerImp implements IUserContraller{
IUserService service;
public void setService(IUserService service) {
this.service = service;
}
@Override
public void save() {
System.out.println("Contraller.method");
service.save();
}
}
//Service
public interface IUserService {
public void save();
}
public class UserServiceImp implements IUserService {
IUserDao dao;
public void setDao(IUserDao dao) {
this.dao = dao;
}
@Override
public void save() {
System.out.println("service.method");
dao.save();
}
}
//Dao
public interface IDao {
public void save();
}
public class daoImp implements IDao{
@Override
public void save() {
System.out.println("dao的方法");
}
}
2.将需要spring管理的类注入spring容器(配置文件中 beans.xml)
<bean id="Contraller" class="com.apesource.Contraller.UserContrallerImp">
<property name="service" ref="Service"></property>
</bean>
<bean id="Service" class="com.apesource.Service.UserServiceImp">
<property name="dao" ref="Dao"></property>
</bean>
<bean id="Dao" class="com.apesource.Dao.UserDaoImp"></bean>
3.向spring容器中索取java实例(解耦)(测试类)
3.1.加载spring核心配置文件,获取spring容器对象
3.2.获取对象
public class test01 {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
IUserContraller contraller = (IUserContraller)applicationContext.getBean("Contraller");
contraller.save();
}
}
二、XML文件和注解实现
1.搭建环境
<?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>com.apesourse</groupId>
<artifactId>Spring_ioc_06</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.27</version>
</dependency>
</dependencies>
</project>
2.使用注解注入数据访问层、业务层、控制层
使用@Autowired 进行类型装配,省略set方法
//各个实现类以及接口
//Controller
public interface IUserContraller {
public void save();
}
@Controller("contraller")
public class UserContrallerImp implements IUserContraller{
@Autowired
IUserService service;
@Override
public void save() {
System.out.println("Contraller.method");
service.save();
}
}
//Service
public interface IUserService {
public void save();
}
@Service("service")
public class UserServiceImp implements IUserService {
@Autowired
IUserDao dao;
@Override
public void save() {
System.out.println("service.method");
dao.save();
}
}
//Dao
public interface IDao {
public void save();
}
@Repository("dao")
public class UserDaoImp implements IUserDao {
@Override
public void save() {
System.out.println("dao.mothod");
}
}
3.扫描所有被@Component注解所修饰的类,注入容器
<?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">
<context:component-scan base-package="com.apesourse"></context:component-scan>
</beans>
4.向spring容器中索取java实例
public class text01 {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationcontext.xml");
IUserContraller contraller = (IUserContraller)applicationContext.getBean("contraller");
contraller.save();
}
}
三、注解和配置类实现
1.配置类
@Configuration
@ComponentScan(basePackages = "apesourse")
public class applicationconfig {
@Bean
public IUserDao dao(){
return new UserDaoImp();
}
@Bean
public IUserService service(@Autowired IUserDao dao){
return new UserServiceImp(dao);
}
@Bean
public IUserContraller contraller(@Autowired IUserService service){
return new UserContrallerImp(service);
}
}
2.使用注解注入数据访问层、业务层、控制层
使用@Autowired 进行类型装配,省略set方法
//Controller
public interface IUserContraller {
public void save();
}
@Controller("contraller")
public class UserContrallerImp implements IUserContraller{
@Autowired
IUserService service;
@Override
public void save() {
System.out.println("Contraller.method");
service.save();
}
}
//Service
public interface IUserService {
public void save();
}
@Service("service")
public class UserServiceImp implements IUserService {
@Autowired
IUserDao dao;
@Override
public void save() {
System.out.println("service.method");
dao.save();
}
}
//Dao
public interface IDao {
public void save();
}
@Repository("dao")
public class UserDaoImp implements IUserDao {
@Override
public void save() {
System.out.println("dao.mothod");
}
}
3.向spring容器中索取java实例
public class text01 {
public static void main(String[] args) {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(applicationconfig.class);
IUserContraller contraller = (IUserContraller)applicationContext.getBean("contraller");
contraller.save();
}
}