欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > spring —— IoC容器(二)

spring —— IoC容器(二)

2025/2/23 10:38:50 来源:https://blog.csdn.net/firstgrass/article/details/140618188  浏览:    关键词:spring —— IoC容器(二)

二、基于注解管理 bean

(一)Autowired 自动装配

(1)属性上自动装配

package com.fourth.anno;import org.springframework.stereotype.Component;@Component
public class Dao {public void runDao(){System.out.println("hello world");}
}
package com.fourth.anno;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Component
public class Service {@Autowiredprivate Dao dao;public void runService(){dao.runDao();}
}
package com.fourth.anno;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("bean-anno.xml");Service service = context.getBean(Service.class);service.runService();}
}
<?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/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><context:component-scan base-package="com.fourth.anno"></context:component-scan>
</beans>

(2)set 方法上自动装配 

package com.fourth.anno;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Component
public class Service {    private Dao dao;@Autowiredpublic void setDao(Dao dao){this.dao=dao;}public void runService(){dao.runDao();}
}

(3)构造方法上自动装配 

package com.fourth.anno;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Component
public class Service {private Dao dao;@Autowiredpublic Service(Dao dao) {this.dao = dao;}public void runService(){dao.runDao();}
}

(4)构造方法的形参上自动装配 

package com.fourth.anno;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Component
public class Service {private Dao dao;public Service(@Autowired Dao dao) {this.dao = dao;}public void runService(){dao.runDao();}
}

 (二)Resource 自动装配

(1)属性上自动装配

package com.fourth.anno;import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;@Component
public class Service {@Resourceprivate Dao dao;public void runService(){dao.runDao();}
}

(2)set 方法上自动装配 

package com.fourth.anno;import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;@Component
public class Service {private Dao dao;@Resourcepublic void setDao(Dao dao) {this.dao = dao;}public void runService(){dao.runDao();}
}

 Autowired 与 Resource 比较:

Autowired 可以应用在属性、set 方法、构造方法、构造方法的形参上;其默认通过类型进行装配。

Resource 可以应用在属性、set 方法上;其默认通过名称进行装配。

 Autowired 基于 spring 框架;Resource 基于 java 扩展包,如果 JDK 版本高于11或低于8,应引入以下依赖:

<dependency><groupId>jakarta.annotation</groupId><artifactId>jakarta.annotation-api</artifactId><version>2.1.1</version>
</dependency>

(三)全注解开发

全注解开发,即使用配置类代替 xml 配置文件:

package com.fourth.anno;import org.springframework.stereotype.Component;@Component
public class Dao {public void runDao(){System.out.println("hello world");}
}
package com.fourth.anno;import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;@Component
public class Service {private Dao dao;@Resourcepublic void setDao(Dao dao) {this.dao = dao;}public void runService(){dao.runDao();}
}
package com.fourth.anno;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;@Configuration
@ComponentScan(value = "com.fourth.anno")
public class SpringConfig {
}
package com.fourth.anno;import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class Test {public static void main(String[] args) {ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);Service service = context.getBean(Service.class);service.runService();}
}

 

 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词