使用@Component,@Service,@Controller,@Repositroy可以完成不用XML配置也可以将Java组件交给Spring容器
JavaBean代码如下:
package autoScan.dao;
public interface StudentDao {
public abstract void add();
}
@Repository
@Scope("singleton")
public class StudentDaoImple implements StudentDao {
// @PostConstruct用于配置初始化方法与XML中的init-method作用一致
@PostConstruct
public void myInit() {
System.out.println("初始化方法");
}
// @PreDestroy用于配置销毁方法与XML中的destroy-method作用一致
@PreDestroy
public void myDestroy() {
System.out.println("销毁方法");
}
public void add() {
System.out.println("autoScan.dao.imple.StudentDaoImple的add方法");
}
}
package autoScan.service;
public interface StudentService {
public abstract void save();
}
@Service("stuService")
public class StudentServiceImple implements StudentService {
@Resource(name = "studentDaoImple")
private StudentDao stuDao;
public void setStuDao(StudentDao stuDao) {
this.stuDao = stuDao;
}
public void save() {
stuDao.add();
}
}
那么XML中只需配置<context:component-scan>即可如下:
<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-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<!-- 通过在classpath自动扫描方式把组件纳入Spring容器中管理 -->
<context:component-scan base-package="autoScan.dao"></context:component-scan>
<context:component-scan base-package="autoScan.service"></context:component-scan>
</beans>
说明:
/**
* 通过在classpath自动扫描方式把组件纳入Spring容器中管理
*
* @author 张明学 2010-6-3下午09:52:40
*/
public class AutoScanTest {
public static void main(String[] args) {
// 通过<context:component-scan base-package="autoScan.dao"/>将base-package内
// 寻找标注了@Component,@Service,@Controller,@Repositroy的bean纳入Spring的容器中
// @Repositroy:用于标注数据访问组件
// @Service:用于标注业务层
// @Controller:用于标注控制器
// @Component:用于标注其它的组件 (暂时这四个注解功能上没有什么区别)
AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("beans5.xml");
// Bean的id默认为类名第一个字母小写,也可以@Service("stuService")进行修改
// 也可以通过@Scope("prototype")指定bean的作用域
// 也可以通过@PostConstruct指定初始化方法
// 也可以通过@PreDestroy指定销毁方法
System.out.println(ctx.getBean("studentDaoImple"));
System.out.println(ctx.getBean("stuService"));
StudentService stuService = (StudentService) ctx.getBean("stuService");
System.out.println(stuService);
System.out.println(ctx.getBean("studentDaoImple") == ctx
.getBean("studentDaoImple"));
ctx.close();
}
}
分享到:
相关推荐
这将扫描 com.eric.spring 包及其子包下所有标注了 @Component、@Repository、@Service、@Controller 等注解的组件,并将其纳入 Spring 容器中管理。 在实际应用中,我们可以使用 @Service、@Repository、@...
在Spring框架中,自动扫描(Auto-Component Discovery)是一种便捷的方式,它允许开发者无需显式配置每个bean,就能将类路径下(classpath)的特定包及其子包中的组件(即带有特定注解的类)纳入Spring容器进行管理...
总的来说,`@Component`、`@Controller`、`@Service`和`@Repository`注解是Spring框架中进行组件扫描和依赖注入的重要工具,它们帮助开发者构建出高效、可维护的Java应用程序。在实际开发中,正确理解和运用这些注解...
### Spring注解 @Component、@Repository、@Service、@Controller 的区别 #### 一、引言 在现代软件开发中,尤其是Java领域的企业级应用开发中,Spring框架因其灵活、强大的依赖注入(DI)和面向切面编程(AOP)...
在Spring框架中,`<context:component-scan/>`元素是核心组件扫描的基石,它允许我们自动检测和注册beans,极大地简化了配置工作。这篇博客将深入探讨这个功能强大的特性,以及如何在实际开发中有效利用它。 一、...
在Spring Boot中,通过`@SpringBootApplication`注解,Spring会默认进行组件扫描,寻找类路径下标记了`@Component`、`@Service`、`@Repository`和`@Controller`的类。这些注解都是`@Component`的特殊形式,分别对应...
在 Spring 2.5 中,引入了组件自动扫描机制,该机制可以在类路径下寻找标注了 @Component、@Service、@Controller、@Repository 注解的类,并将这些类纳入 Spring 容器中管理。 @Component、@Repository、@Service...
在Spring框架中,自动扫描和管理Bean是一种便捷的方式,它允许开发者无需显式地在配置文件中声明每个Bean,而是让Spring容器自动发现并管理应用中的组件。这一特性极大地简化了Spring应用的配置,提高了开发效率。...
### Spring 注解详解:@Component、@Repository、@Service、@Controller 区别 #### 一、Spring 注解概述 Spring 框架是 Java 开发领域中非常流行的一个轻量级框架,它通过依赖注入(DI)和面向切面编程(AOP)等...
在Spring框架中,`@Component`注解是核心的组件注解之一,它标志着一个类作为Spring IoC容器中的Bean。这个注解及其派生注解(如`@Service`、`@Repository`和`@Controller`)是Spring依赖注入(Dependency Injection...
你可以将它看作是一种声明,告诉Spring:“这个类是一个组件,需要被管理”。例如,你可能会创建一个名为`UserService`的类,并在顶部添加`@Component`注解: ```java @Component public class UserService { /...
自动扫描是Spring框架的一个强大功能,它允许开发者指定一个或多个包,Spring会自动查找这些包及其子包下的所有带有特定注解(如@Component、@Service、@Repository、@Controller等)的类,然后将这些类注册为bean。...
- Annotation配置:使用注解(@Component、@Service、@Repository、@Controller等)声明Bean,更简洁。 - Java配置:使用@Configuration和@Bean注解实现配置。 9. **Spring AOP的使用**: - 定义切面:使用@Aspect...
它们用于标记组件类,方便Spring自动扫描并管理。其中,@Service通常用于标记Service层的类。例如: ```java @Service public class MyServiceImpl implements MyService { // ... } ``` 使用`@Service`注解的类会...
组件扫描(Component Scanning)是Spring的核心特性之一,它允许框架自动发现并注册bean定义,而无需在XML配置文件中显式声明。在这个名为“Spring注解开发组件扫描器”的资料中,我们将深入探讨如何利用注解进行...
在Spring框架中,管理Bean的方式主要有三种:XML配置、注解配置和Java配置。下面将详细介绍这三种方式以及Spring的自动注入机制。 1. **基于XML的Bean定义**: 在XML配置中,我们通常在`applicationContext.xml`...
Spring 框架中 @Component 注解是用于标注 Bean 的一种方式,通过使用 @Component 注解,Spring 框架可以自动将该类纳入到容器中管理,从而实现了依赖注入和控制反转。 @Component 注解的作用是将普通的 POJO 对象...
- 注解配置:通过使用如@Component、@Service、@Repository、@Controller等注解来进行配置管理,这种方式更加简洁明了。 - **Bean的生命周期**:从创建到销毁的整个过程,Spring允许开发者在特定的阶段进行干预,...