@[TOC]
自动注入
XML自动配置
XML自动配置通过四个注解实现,功能一样的
| 注解 | 描述
| ------ | ------ |
|@Component|一般用在身份不明确的组件上|
|@Service|一般用在service层|
|@Controller|一般用在控制层
|@Repository|一般用在数据库访问层
在applicationContext.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:aop="http://www.springframework.org/schema/aop"
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 http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
<!--扫描全部 -->
<!-- <context:component-scan base-package="com.sxt.*.dao.impl"></context:component-scan>
<!--扫描指定文件,一条语句完成 -->
<context:component-scan base-package="com.sxt.dao.impl,com.sxt.service.impl,com.sxt.controller"></context:component-scan>-->
<!--扫描指定文件 -->
<context:component-scan base-package="com.sxt.dao.impl"></context:component-scan>
<context:component-scan base-package="com.sxt.service.impl"></context:component-scan>
<context:component-scan base-package="com.sxt.controller"></context:component-scan>
</beans>
在Controller配置
@Controller//该注解作用和在applicationContext.xml中的<bean>的作用是一样的
public class UserController {
private IUserService service;
@Resource
public void setService(IUserService service) {
this.service = service;
}
public void say(String msg){
System.out.println("controller:"+service.say(msg));
}
}
在dao层的实现类配置
@Repository
public class UserDAOImpl implements IUserDAO {
@Override
public String say(String msg) {
System.out.println("--->"+msg);
return "hello";
}
}
在service层实现类配置
@Service
public class UserServiceImpl implements IUserService {
// 调用者与被调用者之间 DI 依赖注入 设值
@Resource
private IUserDAO dao;
@Override
public String say(String msg) {
return dao.say(msg);
}
/**
* 设值注入必要提供的setter方法
* @param dao
*/
public void setDao(IUserDAO dao) {
this.dao = dao;
}
}
测试
public class test {
public static void main(String[] args) {
ApplicationContext ac=
new ClassPathXmlApplicationContext("applicationContext.xml");
UserController controller = ac.getBean(UserController.class);
controller.say("aaa");
}
}
java自动配置
①配置javaConfig
@Configuration
//添加扫描
@ComponentScan("com.sxt.*")
//多个文件扫描
//@ComponentScans(value={@ComponentScan(""),@ComponentScan("")})
/*@ComponentScan(value="com.sxt.*"
,useDefaultFilters=true
,excludeFilters={@ComponentScan.Filter(type=FilterType.ANNOTATION,classes=Service.class)})*/
public class javaConfig {
}
②配置dao层实现类
//@Component // 等价于 <bean class="com.sxt.service.impl.UserDaoImpl" name="userDaoImpl"/>
@Repository
public class UserDAOImpl implements IUserDAO {
@Override
public String say(String msg) {
System.out.println("--->"+msg);
return "hello";
}
}
③配置service实现类
//@Component // 将当前类交给Spring容器管理
@Service
public class UserServiceImpl implements IUserService {
// 调用者与被调用者之间 DI 依赖注入 设值
@Resource
private IUserDAO dao;
@Override// 只能根据类型查找
public String say(String msg) {
return dao.say(msg);
}
}
④配置控制层
@Controller
public class UserController {
@Resource
private IUserService service;
public void sleep(){
System.out.println("休息一会....");
}
public void say(String msg){
System.out.println("controller:"+service.say(msg));
}
}
⑤测试
public class test {
public static void main(String[] args) {
ApplicationContext ac=
new AnnotationConfigApplicationContext(javaConfig.class);
UserController controller = ac.getBean(UserController.class);
controller.say("aaa");
}
相关推荐
4. **依赖注入**: 在实例化Bean的同时,Spring会根据Bean定义中的依赖关系,自动将所需的其他Bean注入到当前Bean中。依赖注入可以通过属性注入(setter方法)、构造器注入或者方法注入实现。 5. **生命周期管理**: ...
下面,我们将深入探讨Spring-IOC的实现,包括注解的使用和注解解析。 1. **控制反转(IOC)概念** - 控制反转是设计模式中的一个概念,它改变了传统的对象获取方式。在没有IOC的情况下,对象通常自行创建依赖。而...
Spring IoC通过XML配置文件实现了对象的实例化和依赖注入,有效地降低了对象间的耦合,提高了代码的可读性和可维护性。理解并熟练运用Spring的IoC机制是成为一名优秀的Java开发者的关键步骤之一。在实际项目中,结合...
例如,使用`@Component`标记一个类为Bean,`@Autowired`自动注入依赖,`@Value`注入属性值: ```java @Component public class ExampleClass { @Autowired private Dependency dependency; } ``` 5. **依赖...
总结,Spring-IOC实例展示了如何利用Spring框架进行对象的创建和管理,以及如何通过依赖注入实现松耦合。理解并熟练运用Spring-IOC能极大地提升Java应用的灵活性和可维护性。在实际开发中,可以根据项目需求选择合适...
在运行时,Spring会根据配置自动创建和注入相应的对象,使得我们的`Priter`类无需知道纸张的具体实现。 总结来说,这个案例展示了Spring IoC如何帮助我们构建松散耦合的系统。通过IoC,我们可以轻松地更改`Priter`...
3. **依赖注入**:依赖注入是Spring IoC的核心机制之一,通过构造器注入、setter注入或基于字段的注入等方式,Spring IoC容器可以在运行时动态地为对象提供所需的依赖。 #### 三、Spring-IoC的使用方法 1. **把...
依赖注入是Spring实现IoC的核心机制。它允许我们在不修改代码的情况下,动态地改变对象之间的依赖关系。在Spring中,我们可以通过XML配置、注解或者Java配置的方式来声明依赖。例如,我们可以在XML配置文件中定义...
Spring 框架是 Java 开发中不可或缺的一部分,其核心特性之一就是依赖注入(Dependency Injection,简称 DI),也称为控制反转(Inversion of Control,简称 IoC)。IoC 是一种设计模式,它允许我们通过外部配置来...
你可以通过@Autowired注解来告诉Spring自动注入依赖,或者通过setter方法、构造函数等方式进行注入。 3. 测试类:测试代码通常用来验证DI是否正确工作,通过@ContextConfiguration注解加载配置,并使用@Autowired...
3. **注解驱动**:通过@Component、@Service、@Repository和@Controller等注解标记组件,结合@Autowired自动注入依赖,简化了配置。 **五、Spring Ioc的工作流程** 1. **读取配置**:Spring容器读取XML、Java配置...
通过XML配置文件、注解或Java配置类,我们可以告诉Spring我们的对象需要哪些依赖,Spring会自动创建并注入这些依赖,使得代码更加松耦合,更易于测试和扩展。 举个例子,假设我们有一个`UserService`类依赖于`...
- Spring Boot简化了Spring的配置,通过自动配置机制,使得Spring IoC容器能够自动识别并配置bean。 7. **实战应用** - **配置数据库连接**:Spring IoC容器可以管理数据库连接池,如Druid、HikariCP,通过依赖...
在Spring框架中,注解(Annotation)自动匹配注入IoC(Inversion of Control,控制反转)是一种关键特性,它极大地简化了Java应用的配置管理。本文将深入探讨这一主题,帮助开发者更好地理解和利用这一功能。 首先...
"spring-demo10-注解-IOC.zip"这个压缩包文件很显然包含了关于Spring框架如何使用注解进行依赖注入的示例代码。接下来,我们将深入探讨Spring中的注解和依赖注入。 依赖注入(DI)是一种设计模式,它允许我们解耦...
- **依赖注入**:依赖注入(Dependency Injection, DI)是IoC的主要实现方式,它使得对象能够通过构造器或setter方法接受依赖项,从而实现解耦。 #### IoC的实现机制 IoC的实现主要依赖于工厂模式和反射机制: - ...
例如,使用 `@Component` 注解标记一个类为 Spring Bean,使用 `@Autowired` 注解自动注入依赖: ```java @Component public class ExampleClass { @Autowired private AnotherClass dependency; } ``` 在这里,...
而自动扫描和自动注入是Spring 2.5中实现IOC的两个核心特性,极大地简化了配置工作,提高了开发效率。以下是对这两个特性的详细解释: **自动扫描**: 自动扫描是Spring框架的一个强大功能,它允许开发者指定一个或...
通过XML配置文件或者注解方式,我们可以定义对象及其依赖关系,Spring容器会根据这些信息自动装配对象,实现依赖注入。 其次,AOP是Spring提供的另一个重要特性,它允许开发者在不修改源代码的情况下,对程序进行...