Spring框架学习(6)使用ioc注解方式配置bean
内容源自:使用ioc注解方式配置bean
context层 :
上下文环境/容器环境 applicationContext.xml
1 ioc注解功能
注解 简化xml文件配置 如 hibernate 映射文件
ioc注解 简化 ioc容器的配置
1 bean对象定义过程
@Component
该注解用于标注一个类
标注哪些需要使用ioc管理/实例化的类
被标注的类会成为ioc实例化的对象
ioc容器解析时,会在工程中扫描所有被该注解标注的类,使用ioc方式对其进行实例化。
@Controller 用于标注业务逻辑对象 xxServlet xxAction xxController
@Service 用于标注服务类型对象 xxService xxServiceImpl
@Repository 用于标注持久化对象 xxDao xxDaoImpl 这三个注解的使用方式和作用效果与@Component一模一样 为了程序开发的规范性,尽量什么类型的对象就使用什么注解进行标注。
2 bean之间的注入过程
@Autowired 自动装载。该注解用于标注目标对象中的一个属性,根据被标注属性的属性名和属性类型在ioc容器中查找匹配的bean,从而得到需要的bean对象。
具体示例:
现在ioc容器中添加context层支持:
包括添加xmlns:context、xsi:schema、注解扫描地址
<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-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<!--
ioc注解功能 ~ context层
导入context层对应的命名空间和schame文件
如果包结构太多,直接扫描com
-->
<context:component-scan base-package="com.etoak.action,com.etoak.dao"></context:component-scan>
</beans>
LoginAction.java:
这里面注意@Component中的参数la可以写也可以不写,写上了就指定了bean对象的id值,默认为类名开头字母小写loginAction.
@Component("la") // <bean id="la" class="xx.LoginAction"/>
public class LoginAction {
@Autowired
private UserDaoImpl ud;
/**
* 首先根据被标注属性的属性名'ud'
* 在ioc容器中查找一个 id="ud" 的bean进行注入
* 再根据被标注属性的属性类型 'UserDaoImpl'
* 在ioc容器中查找一个 class="UserDaoImpl" 的bean进行注入
* @return
*/
public String execute() {
System.out.println("处理客户端提交的login.action请求");
ud.login();
return "success";
}
}
UserDaoImpl.java
@Component // <bean id="userDaoImpl" class="xx.UserDaoImpl"/>
public class UserDaoImpl {
public boolean login(){
System.out.println("连接数据库判断登录是否成功");
return true;
}
}
测试类:
public class Test {
public static void main(String[] args) {
ApplicationContext ac = new
ClassPathXmlApplicationContext("applicationContext.xml");
/**
* 1 在使用注解方式实例化bean对象时
* 由于没有为其设置具体的ID值
*/
LoginAction la = ac.getBean(LoginAction.class);
/**
* 2 虽然没有手动为其设置ID值
* 但是注解会自动为其提供一个ID值
* 类名 首字母小写
*/
UserDaoImpl ud =
(UserDaoImpl)ac.getBean("userDaoImpl");
/**
* 3 手动为其设置一个ID值
*/
LoginAction la2 = (LoginAction)ac.getBean("la");
}
}
Spring框架学习(6)使用ioc注解方式配置bean的更多相关文章
- Spring使用ioc注解方式配置bean
context层 : 上下文环境/容器环境 applicationContext.xml 具体示例: 现在ioc容器中添加context层支持: 包括添加xmlns:context.xsi:schem ...
- 跟着刚哥学习Spring框架--通过注解方式配置Bean(四)
组件扫描:Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定组件包括: 1.@Component:基本注解,识别一个受Spring管理的组件 2.@Resposit ...
- spring学习笔记 星球日two - 注解方式配置bean
注解要放在要注解的对象的上方 @Autowired private Category category; <?xml version="1.0" encoding=" ...
- spring框架学习(五)注解
注解Annotation,是一种类似注释的机制,在代码中添加注解可以在之后某时间使用这些信息.跟注释不同的是,注释是给我们看的,Java虚拟机不会编译,注解也是不编译的,但是我们可以通过反射机制去读取 ...
- 码农小汪-spring框架学习之2-spring IoC and Beans 控制反转 依赖注入 ApplicationContext BeanFactory
spring Ioc依赖注入控制反转 事实上这个东西很好理解的,并非那么的复杂. 当某个Java对象,须要调用还有一个Java对象的时候(被依赖的对象)的方法时.曾经我们的做法是怎么做呢?主动的去创建 ...
- Spring框架的AOP技术(注解方式)
1. 步骤一:创建JavaWEB项目,引入具体的开发的jar包 * 先引入Spring框架开发的基本开发包 * 再引入Spring框架的AOP的开发包 * spring的传统AOP的开发的包 * sp ...
- Spring框架中的AOP技术----注解方式
利用AOP技术注解的方式对功能进行增强 CustomerDao接口 package com.alphajuns.demo1; public interface CustomerDao { public ...
- spring之通过注解方式配置Bean(一)
(1)组件扫描:spring能够从classpath下自动扫描.侦测和实例化具有特定注解的组件. (2)特定组件包括: @Component:基本注解,标识一个受spring管理的组件: @Respo ...
- 使用Spring框架入门二:基于注解+XML配置的IOC/DI的使用
一.简述 本文主要讲使用注解+xml配合使用的几种使用方式.基础课程请看前一节. 二.步骤 1.为Pom.xml中引入依赖:本例中使用的是spring-context包,引入此包时系统会自动导入它的依 ...
随机推荐
- 【转载】Python: Enum枚举的实现
转自:http://www.cnblogs.com/codingmylife/archive/2013/05/31/3110656.html 从C系语言过来用Python,好不容易适应了写代码不打 ...
- 关于云平台中OFFICE预览与视频预览的解决办法
最近,随着firefox x64的升级,出现flash插件完全被禁止的现象,html5替换是大势所趋,原来我们在云平台中有多处使用flash的地方,比如OFFICE预览,视频播放,游戏等,现对于OFF ...
- Python语法31[module/package+import]
一 module 通常模块为一个文件,直接使用import来导入就好了.可以作为module的文件类型有".py".".pyo".".pyc" ...
- jq函数绑定与解绑
最近学到几个新的jq函数 1.bind()绑定函数 2.unbind()解绑函数 3.add() .给元素追加字符串 4.addClass() 给某元素增加class属性值
- Flask实战第64天:帖子加精和取消加精功能完成
帖子加精和取消加精是在cms后台来设置的 后台逻辑 首页个帖子加精设计个模型表,编辑apps.models.py class HighlightPostModel(db.Model): __table ...
- poj 2262 筛法求素数(巧妙利用数组下标!)
Goldbach's Conjecture Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 41582 Accepted: ...
- hdu 1251 (Trie水题)
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submi ...
- hdu 1965 (莫比乌斯函数 莫比乌斯反演)
GCD Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- 【POJ】1088滑雪
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 97335 Accepted: 36911 Description ...
- 【树状数组】Codeforces Round #423 (Div. 1, rated, based on VK Cup Finals) C. DNA Evolution
题意跟某道我出的等差子序列求最值非常像…… 反正询问的长度只有10种,你就建立10批树状数组,每组的公差是确定的,首项不同. 然后询问的时候只需要枚举询问串的每一位,找找这一位对应哪棵树状数组即可. ...