通过注解的方式配置
spring能够从classpath下自动扫描具有特定注解的组件
特定注解的组件包括
@Component基本注解,标识一个受Spring管理的组件
@Respository标识持久层组件
@Service标识服务层组件
@Controller标识表现层组件
对于扫描的组件,spring默认命名策略非限定类名第一个字母小写
也可以通过注解的value属性标识组件的名称
在组件类上使用特定注解后,还需要在spring配置文件中声明<context:component-scan>
-base-package属性指定需要扫描的基类包,spring容器会扫描这个基类包及其子包所有类
-扫描多个包时可以使用逗号隔开
-如果扫描特定类,非基类包,可使用resource-pattern属性过滤特定类
-<context:include-filter>子节点要包含的目标类
-<context:exclude-filter>子节点表示要排除在外的目标类
-<context:component-scan>下可以拥有若干个<context:include-filter>和<context:exclude-filter>
<?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:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util" 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/util http://www.springframework.org/schema/util/spring-util-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"> <!-- 扫描子包的类 --> <!-- <context:component-scan base-package="com.hous" resource-pattern="controller/*.class"> </context:component-scan> --> <!-- exclude-filter:排除指定表达式的组件(@Service等) --> <context:component-scan base-package="com.hous" use-default-filters="false"> <!-- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/> --> <!-- <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"></context:include-filter> --> <!-- <context:exclude-filter type="assignable" expression="com.hous.service.UserService"/> --> <context:include-filter type="assignable" expression="com.hous.service.UserService"/> </context:component-scan> </beans>
package com.hous.test; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.hous.controller.UserController; import com.hous.respository.UserRespository; import com.hous.service.UserService; public class Test { public static void main(String[] args) { //1.创建spring的IoC容器 ClassPathXmlApplicationContext cxt = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService userService = (UserService) cxt.getBean("userService"); userService.save(); UserRespository userRespository = (UserRespository) cxt.getBean("userRespositoryImpl"); userRespository.save(); UserController userController = (UserController) cxt.getBean("userControllerImpl"); userController.save(); //关闭容器 cxt.close(); } }
bean之间的关系
使用@Autowired自动装配Bean
1)@Autowired注解自动装配具有兼容类型的单个Bean属性
构造器,普通字段(非public)和一切具有参数方法的都可以应用@Autowired注解
2)使用@Autowired注解属性时,当spring找不到匹配的Bean属性会抛出异常,
若某一属性不允许被设置,可以设置@Autowired注解的required属性为false
3)当IoC容器中存在多个类型兼容的Bean时,自动装配无法工作,可以使用
@Qualifier注解提供Bean的名称
4)@Autowired注解应用在数组类型属性上,会把所有匹配的Bean自动装配
5)@Autowired注解应用在集合属性上,会读取集合类型信息然后自动装配与之兼容的Bean
6)@Autowired注解应用在java.util.Map上时,若Map的键值为String,则Spring将
自动装配与之Map值类型兼容的Bean,此时Bean的名称做为键值
使用@Resource或@Inject自动装配Bean
@Resource提供Bean名称属性,该属性为空则自动采用标注处变量或方法名
做为Bean的名称
@Inject和@Autowired注解一样,按照类型匹配注入Bean,但没有required属性
package com.hous.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.hous.respository.UserRespository; @Service(value="userService") public class UserServiceImpl implements UserService { @Autowired private UserRespository UserRespository; @Override public void save() { System.out.println("UserServiceImpl save()方法"); UserRespository.save(); } }
package com.hous.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.TestBean; import com.hous.respository.UserRespository; @Service(value="userService") public class UserServiceImpl implements UserService { @Autowired(required=false) private TestBean testBean; @Override public void save() { System.out.println("UserServiceImpl save()方法"); System.out.println(testBean); } }
package com.hous.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import com.hous.respository.UserRespository; @Service(value="userService") public class UserServiceImpl implements UserService { // @Autowired // @Qualifier("userRespositoryImpl") private UserRespository UserRespository; @Autowired public void setUserRespository(@Qualifier("userRespositoryImpl") UserRespository userRespository) { UserRespository = userRespository; } @Override public void save() { System.out.println("UserServiceImpl save()方法"); UserRespository.save(); } }
相关推荐
在Spring MVC框架中,配置方式主要有两种:一种是基于XML的配置,另一种是基于Java的注解配置。本文将详细探讨非注解方式,即XML配置Spring MVC的相关知识点。 首先,Spring MVC的核心配置文件通常为`spring-...
总结来说,SSH框架的注解配置大大简化了开发过程,通过注解可以快速定义Action的行为、自动装配bean以及实现ORM映射。这种方式使得代码更加简洁,提高了开发效率,同时也降低了出错的可能性。理解和熟练运用SSH框架...
然而,使用注解配置后,我们可以通过在类或属性上添加`@Component`、`@Service`、`@Repository`或`@Controller`注解,以及在属性上使用`@Autowired`来自动装配依赖,大大简化了配置过程。 #### 结论 基于注解的...
总结,通过上述步骤,我们已经成功地使用Spring注解配置了Quartz2.2.1,实现了基于注解的任务调度。这种方式简化了配置,使得任务管理和扩展更加方便。在实际开发中,可以根据项目需求调整触发规则,实现复杂的定时...
全注解配置是Spring MVC中的一种现代配置方式,它允许开发者在不使用XML配置文件的情况下,通过注解来声明和管理组件。这种方式简化了项目的配置,提高了代码的可读性和可维护性。 在Java环境下,我们通常使用...
在传统的XML配置方式下,我们通过编写大量的XML配置文件来定义bean及其依赖关系。然而,随着注解(Annotation)技术的发展,Spring框架引入了基于注解的配置,使得代码更加简洁、直观。本示例将详细介绍如何使用注解...
在IT行业中,SpringMVC、JdbcTemplate和MySQL是构建web...通过注解方式,开发者可以快速搭建系统,专注于业务逻辑,而无需过多关注底层配置。这个技术栈的使用能够提升开发效率,同时保持代码的可维护性和可扩展性。
通过以上步骤,我们就成功地将MyBatis的注解和配置文件结合使用,实现了对数据库的CRUD操作。这种灵活的方式使得开发者可以根据项目需求自由选择使用注解还是XML来定义SQL,提高了代码的可读性和维护性。
首先,SpringMVC 的注解配置包括: 1. `@Controller`:标记一个类作为Spring MVC的控制器,处理HTTP请求。 2. `@RequestMapping`:用于映射HTTP请求,可以注解在类或方法上,指定URL和HTTP方法。 3. `@GetMapping`...
Spring框架是Java开发中广泛应用的轻量级框架,它提供了丰富的功能,如依赖注入(DI)、面向切面编程(AOP)以及各种模块支持。...这种配置方式有助于提高开发效率,减少配置错误,并使得代码更加可读。
本篇将深入探讨如何自定义注解并模拟Spring通过注解方式创建bean实例。 首先,了解注解(Annotation)在Java中的角色。注解是一种元数据,它提供了在源代码中添加信息的方式,这些信息可以被编译器或运行时环境读取...
在MyBatis中,除了传统的基于XML的配置方式,还可以使用注解来完成映射和数据操作。本篇将详细介绍MyBatis如何利用注解进行配置,以及这种方式的优点和常见用法。 1. **注解简介** MyBatis的注解功能使得开发者...
这个"ssm纯注解配置例子.rar"文件显然包含了关于如何在项目中使用SSM框架进行纯注解配置的示例代码。下面将详细阐述SSM框架中的注解配置及其相关知识点。 首先,Spring框架提供了丰富的注解来简化配置,如`@...
在这个“SSH注解方式整合小例子”中,我们将深入探讨如何使用注解来简化SSH框架的配置过程,使得开发更加便捷。 **Struts2** 是一个基于MVC设计模式的Action驱动的Web应用框架,它通过注解可以实现Action类的声明式...
hibernate@注解方式配置实体类时,利用javadoc接口生成数据库表及字段的注释说明,支持oracle、sqlserver、db2、mysql数据库。因用到java\lib\tools.jar,需要将该jar放入工程lib下(或者tomcat\lib下、或加入...
在这个“hibernate双向多对多关联映射(注解版)”的主题中,我们将深入探讨如何使用Hibernate的注解配置来处理数据库中的双向多对多关联关系。 首先,多对多关联在数据库设计中是指两个实体之间存在多个对应关系,...
4. **注解配置**:注解配置是一种更加简洁、直观的配置方式,可以减少大量的XML配置文件。在SSH整合中,例如,使用@Controller注解标记一个类为Spring的控制器,@Service注解标记业务服务,@Repository注解标记数据...
通过注解方式配置,使得代码更加简洁,减少了XML配置的工作量。同时,案例中包含完整的数据库和业务逻辑,便于初学者快速理解Spring MVC和JdbcTemplate的使用方法。 综上所述,这个案例涵盖了Spring MVC的基本使用...
本主题聚焦于Spring框架的配置文件以及其中的注解配置方式。注解配置是Spring框架的一种简化配置手段,它允许开发者通过在类或方法上添加特定的注解,替代传统的XML配置文件,使得代码更加简洁且易于维护。 首先,...
在实际开发中,这种注解配置方式使得代码更加简洁,降低了维护成本。同时,由于注解是编译时的元数据,编译器可以在编码阶段就检查出配置错误,提高了开发效率。 在"AnnotationTest"项目中,你可能会找到一些示例...