- 浏览: 813312 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (307)
- struts (8)
- hibernate (3)
- spring (32)
- opensourceproject (12)
- javaScript (9)
- primeton EOS (2)
- journey of heart (10)
- Design pattern (6)
- ejb (17)
- point (37)
- Linux&Unix (22)
- ibatis (10)
- AJAX (6)
- DB (26)
- Protocol (6)
- chart (4)
- web server (11)
- webservice (7)
- integration (3)
- tuxedo (5)
- ext (4)
- android (1)
- c/c++ (12)
- JVM (1)
- paginationFrame (2)
- code (2)
- report (1)
- High-performance web (1)
- svn (1)
- JQuery (1)
- workDaily (2)
- cloud (16)
- Python (8)
- English (2)
- shell (5)
- googleCode (1)
- nio (1)
- hyper-v (1)
- debug (3)
- vbs (2)
- openstack (3)
- K8S (1)
- Mesos (0)
- Spark (0)
- Marathon (0)
最新评论
-
钱图大展:
chao2751021 写道lib包哪里去下载,找不到
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
钱图大展:
无法下载
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
fm395728572:
shell脚本中用到了环境变量,但是获取不到,例如脚本中有一句 ...
ganymed-ssh2 for Java -
liuhanjiang:
我qq147229234
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
liuhanjiang:
博主 我利用您提供的方法实现博文中介绍的clickstream ...
大型网站用户行为记录的一个实现--基于clickStream(第一部分)
通过在classpath自动扫描方式把组件纳入spring容器中管理
前面的例子我们都是使用XML的bean定义来配置组件。在一个稍大的项目中,通常会有上百个组件,如果这些这组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找及维护起来也不太方便。spring2.5为我们引入了组件自动扫描机制,他可以在类路径底下寻找标注了@Component、@Service、@Controller、@Repository注解的类,并把这些类纳入进spring容器中管理。它的作用和在xml文件中使用bean节点配置组件是一样的。要使用自动扫描机制,我们需要打开以下配置信息:
<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">
<context:component-scan base-package="cn.itcast"/>
</beans>
其中base-package为需要扫描的包(含子包)。
<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">
<context:component-scan base-package="cn.itcast"/>
</beans>
其中base-package为需要扫描的包(含子包)。
@Service用于标注业务层组件、 @Controller用于标注控制层组件(如struts中的action)、@Repository用于标注数据访问组件,即DAO组件。而@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
目前的spring 只是区分了以上注解,但是在底层没有具体实现上的区分
验证步骤:
(1) 修改beans.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: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"> <!-- 扫描 cn.com.xinli包下以及子包种有 @Service @Controller @Repository @Component 注解的类,一旦发现,则将其纳入到spring容器中管理 --> <context:component-scan base-package="cn.com.xinli"></context:component-scan> </beans>
(2) 给两个类加上 @Service 注解 PersionDaoBean 和 PersionServiceBean
(3) 写测试方法,由于我们使用的spring的自动扫描 注入bean,在等到bean的时候,就无法知道bean的名字,这里有一个默认的规则,就是你要得到的bean的名字就是你注解的类的 类名第一个字符小写
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); PersionSevice ps=(PersionSevice)ctx.getBean("persionServiceBean"); PersionDao pd=(PersionDao)ctx.getBean("persionDaoBean"); System.out.println(ps); System.out.println(pd);
b.我们也可以在注解中指定bean的 生成方式,默认是 单例 ,我们可以指定为 原型 @Service("huxl") @Scope("propotype")
c.也可以使用注解指定bean的初始化和销毁方法
(4) 结果:
可见两个bean都被注入值了
注意:
a.我们也可以在注解中指定 bean的名字,以后根据注解指定名字得到bean @Service("huxl")
@PostConstruct
public void init()
{
log.info("初始化资源");
}
@PreDestroy
public void destory()
{
log.info("释放资源");
}
发表评论
-
hibernatetemplate类使用
2010-03-19 22:25 1213http://115893520.iteye.com/blog ... -
Spring 中的JdbcTemplate使用
2010-03-19 22:11 35201.JdbcTemplate的execute()方 ... -
SpringAOP 的使用(两种方式)
2009-10-22 13:42 1536使用Spring AOP 拦截 方法,给被拦截的 ... -
第30讲--Spring提供的CharacterEncoding和OpenSessionInView功能
2009-09-19 18:24 1814CharacterEncoding: 在web ... -
第29讲--为Spring集成的Hibernate配置二级缓存
2009-09-18 00:29 3417合理的使用缓存策略,往往在web开发中提高性能起到关键 ... -
第28讲--Struts与Spring集成方案2(Spring集成Struts)
2009-09-17 00:57 1661集成步骤: 1.和方案1一样需要在web. ... -
第27讲--Struts与Spring集成方案1(Struts集成Spring)
2009-09-16 08:25 1849Spring2.5+Hibernate3.3+Stru ... -
第25,26讲 --搭建和配置Spring与Hibernate整合的环境
2009-06-21 11:21 1623Spring2.5+Hibernate3.3+Stru ... -
第24讲 --使用Spring配置文件实现事务管理
2009-06-20 23:56 1786采用基于XML方式配置事务 <bean ... -
第23讲 --使用Spring注解方式管理事务与传播行为详解
2009-06-11 23:19 2263事务传播属性 REQUIR ... -
第21,22讲 --搭建和配置Spring与jdbc整合的环境+Spring集成的jdbc编码和事务
2009-06-10 08:06 2709Spring+JDBC组合开发配置数据源有两种方式: ... -
第20讲--aspectj的切入点语法定义细节
2009-06-06 17:47 3660表达式分析: expression=" ... -
第19讲 --使用Spring配置文件实现AOP
2009-06-06 17:21 1564上面我们是使用注解的方式实现spring AOP的,下面 ... -
第18讲 --使用Spring的注解方式实现AOP的细节
2009-06-06 15:48 1582上一讲我们使用spring注解的方式理由aop技术 ... -
第17讲 --使用Spring的注解方式实现AOP入门
2009-06-05 00:48 2287使用Spring进行面向切面(AOP)编程 要 ... -
第16讲 --使用CGLIB实现AOP功能与AOP概念解释
2009-06-04 07:42 1659当代理对象没有实现 ... -
第15讲 --使用JDK中的Proxy技术实现AOP功能
2009-06-04 07:34 2347当目标类实现了接口,我们可以使用jdk的Proxy ... -
第13讲 --Autowire注解与自动装配
2009-06-02 22:46 31511. Autowire 默认是 ... -
第12讲 --编码剖析@Resource注解的实现原理
2009-06-01 23:14 3309在这一讲开始之前,我们先学习一下jdk5.0 中的一个新 ... -
第11讲 --用@Resource注解完成属性装配
2009-05-31 22:42 7060bean的注入方式有3种: 第一种:使用构造器注 ...
相关推荐
- 自动扫描和管理Bean,通过@Component、@Service、@Repository和@Controller注解定义Bean。 15-20. **AOP(面向切面编程)** - AOP用于解耦关注点,例如日志、事务管理等。 - JDK动态代理和CGLIB实现AOP代理。 ...
3. **12.3 注解实现Bean定义**:使用@Configuration和@Bean注解,可以在Java类中定义和管理Bean,替代XML配置。 4. **12.4 基于Java类定义Bean配置元数据**:详细介绍了如何通过JavaConfig来定义Spring的配置,包括...
Spring Boot 是一个基于 Spring 框架的快速开发工具,它简化了初始化、配置和运行新项目的流程。这个学习笔记的完整教程将涵盖多个关键领域,帮助开发者深入理解和使用 Spring Boot。 1. **Spring Boot 教程** - *...
Spring 和 MyBatis 集成后,可以发挥各自的优势,Spring 负责业务逻辑的组织和管理,MyBatis 负责数据的CRUD操作。通常,我们会使用 Spring 的 DataSource、TransactionManager 配合 MyBatis 进行数据访问,实现事务...
本套Spring教程基于...第十一点:Bean生命周期10步讲解法,其他视频最多讲7步。 通过本套教程的学习,可以让你不仅会使用Spring框架,还会让你精通框架底层原理。无论面试也好,实际开发也好,都会有极大的帮助。
9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 事务传播 9.5.8. 通知...
2. Spring 2.0和 2.5的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件...
第14章 Spring Portlet MVC框架 544 14.1 用Spring Portlet MVC开发一个简单的Portlet 544 14.1.1 问题 544 14.1.2 解决方案 545 14.1.3 工作原理 546 14.2 将Portlet请求映射到处理程序 553 14.2.1 ...
第14章 Spring Portlet MVC框架 544 14.1 用Spring Portlet MVC开发一个简单的Portlet 544 14.1.1 问题 544 14.1.2 解决方案 545 14.1.3 工作原理 546 14.2 将Portlet请求映射到处理程序 553 14.2.1 ...
- **监控和管理**:Spring Boot提供了Actuator模块,可以方便地对应用进行监控和管理,包括健康检查、度量指标收集等功能。 #### 7. 高级内容 - **自定义配置**:虽然Spring Boot提供了丰富的默认配置,但开发者也...
通过Spring Boot自动配置功能,无需显式定义配置类,即可自动扫描和装配bean。 3. **使用注解方式注入** 使用@Autowired、@Resource等注解进行依赖注入。 4. **注解开发管理第三方bean** 通过@ComponentScan...
学习如何在非 Spring 管理的组件中获取和使用 Spring 管理的 Bean。 13. **使用模板引擎**:Spring Boot 支持多种模板引擎,如 Thymeleaf、Freemarker 等,用于动态生成 HTML。理解如何配置模板引擎,以及如何在...
问题一箩筐-扫描包,以及spring配置文件标签报错) h5 O# v1 e1 U# N │ 4.问题一箩筐-jdbc.properties属性文件设置错误,无法连接数据库, Q) {; h4 t( ?: r& ^ │ 5.问题一箩筐-关于url扩展名称问题 │ 6.问题一箩筐-...
第十四步:SpringMVC控制器 Controller是SpringMVC中的组件,处理HTTP请求,调用服务层方法,返回视图或模型数据。 第十五步:页面设计 使用JSP(JavaServer Pages)设计基本页面,如index.jsp、list.jsp、show.jsp...
【标题】"十四、商城 - 商城架构-SSM(2)1.youlexuan.zip" 暗示了这是一个关于构建电子商务平台的教程,主要使用了Spring、SpringMVC和MyBatis(简称SSM)这三大Java Web开发框架。在本教程中,我们将深入探讨如何...
12. **BeanFactory**: BeanFactory是Spring的核心容器,实现了工厂模式,负责创建和管理Bean。ApplicationContext是BeanFactory的子接口,提供了更多的企业级功能,如国际化、事件传播等。 13. **Java线程状态**: ...
jwx是开源的java公众号开发MVC框架,基于spring配置文件和微信消息或事件注解,通过微信上下文处理一个或多个微信公众号服务请求。目的主要有两个,其一生封装微信请求xml消息为java实体对象,将返回对象转换为xml...
- **注解**:如`@Autowired`用于自动装配依赖对象,`@Component`、`@Service`和`@Repository`用于标注Bean的类别。 **面向切面编程**(Aspect Oriented Programming,简称AOP)是Spring提供的另一种强大的功能,它...