通过注解的方式配置
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(); } }
相关推荐
总结来说,SSH框架的注解配置大大简化了开发过程,通过注解可以快速定义Action的行为、自动装配bean以及实现ORM映射。这种方式使得代码更加简洁,提高了开发效率,同时也降低了出错的可能性。理解和熟练运用SSH框架...
在通过注解方式配置的ssh框架基础上通过修改得到的基于注解方式ssm开发框架
NULL 博文链接:https://shuizhongyue.iteye.com/blog/2247353
mybatis 注解+配置文件方式完整例子 包含数据库的sql文件. 所有方法都有注解, 很明了.不知道为啥这个所需积分竟然逐步增长了,描述文字也50起步了。。
使用Spring3 mvc 注解配置,学习良师。
Quartz2.2.1基于Spring注解方式配置QuartzL,具体过程的效果看博文 http://blog.csdn.net/evankaka/article/details/45400781
本篇将深入探讨如何自定义注解并模拟Spring通过注解方式创建bean实例。 首先,了解注解(Annotation)在Java中的角色。注解是一种元数据,它提供了在源代码中添加信息的方式,这些信息可以被编译器或运行时环境读取...
spring+springMVC+BlazeDS注解方式的配置文件.
Struts 2使用注解配置Action,不配置struts.xml,通过注解直接配置action
hibernate@注解方式配置实体类时,利用javadoc接口生成数据库表及字段的注释说明,支持oracle、sqlserver、db2、mysql数据库。因用到java\lib\tools.jar,需要将该jar放入工程lib下(或者tomcat\lib下、或加入...
4. **注解配置**:注解配置是一种更加简洁、直观的配置方式,可以减少大量的XML配置文件。在SSH整合中,例如,使用@Controller注解标记一个类为Spring的控制器,@Service注解标记业务服务,@Repository注解标记数据...
使用注解形式的配置实现spring framework注入
Spring框架xml注解配置方式实例,包括Maven配置文件pom.xml、Springxml配置文件ApplicationContext-1.xml,以及类源码
SSM注解和配置文件 SSM(Spring、SpringMVC、MyBatis)是一种流行的Java Web开发框架,广泛应用于企业级应用开发中。...通过使用这些注解和配置文件,开发者可以更方便地使用框架提供的功能,提高开发效率和质量。
hibernate注解配置
这个"SSH零配置,完全注解方式工程"是一个示例项目,它展示了如何在不使用XML配置文件的情况下,通过Java注解来配置和使用SSH框架。 首先,Spring框架是应用上下文和依赖注入(DI)的核心。在传统配置中,我们会在...
通过注解配置完全代替web.xml、Spring的xml文件配置,jquery递归遍历后台返回的json对象并进行拼接
下面,我们将通过详细的解释和示例代码,来介绍 Struts2 中的注解配置 Action 及拦截器几种不同方式的写法对应的路径指向。 一、Struts2 中的 Action 在 Struts2 中,Action 是处理用户请求的核心组件。Action ...
Spring AOP,即Aspect-Oriented Programming(面向切面编程),是Spring框架的重要特性,它为应用程序提供了声明式的企业级服务,如...在实际开发中,熟练掌握Spring AOP的注解配置无疑会极大地提升我们的工作效率。
struts2+hibernate+spring很详细的全注解资源配置