1、扫描配置

之前使用的Spring的Bean管理都是通过xml的配置文件来操作的,在Spring3.0之后已经引入了注解形式,Spring可以在指定路径下进行扫描,寻找标注了@Component、@Service、@Controller、@Repository注解的类,并将其纳入到Spring容器中进行管理。

如果采用注解方式,需要首先在配置文件中指明扫描的包,如下配置:
<context:component-scan base-package="dulk.learn.spring"></context:component-scan>  
1
 
1
<context:component-scan base-package="dulk.learn.spring"></context:component-scan>  

base-package配置为需要扫描的包(包含其子包),配置后,Spring会查找base-package下配置了注解的Java类,并加载到容器中。

2、使用注解

2.1 组件注解

上个标题中我们提到了四种注解,可以看到注解很明显地进行了分层的标志,这也是Spring推荐三层架构形式的一种体现。来看看这四个注解:
  • @Service - 标注业务层组件
  • @Controller - 标注控制层组件(如Struts中的Action)
  • @Repository - 标注数据访问组件,即DAO组件
  • @Component - 泛指组件,当组件不好归类时,即可以选择使用该注解进行标注

如下两者是相同的:
@Component(value = "boy")
public class Boy {
...
}
4
 
1
@Component(value = "boy")
2
public class Boy {
3
    ...
4
}
<bean id="boy" class="dulk.learn.spring.Boy"></bean>
1
 
1
<bean id="boy" class="dulk.learn.spring.Boy"></bean>

可以看到@Component中包含了value值,这个值对应的就是xml配置方式中Bean的id,这个值如果省略不写的话,会默认为首字母小写的当前类类名。

另外,上面四种注解实际上在功能上没有什么区别,名称的不同主要是用来进行分类标记,增强代码的可读性。

2.2 组件属性注解

注:在属性上添加注解完成注入的方式,是可以省略属性的setter方法的。

对于基本类型的属性,使用@Value注解:
@Value(value = "小明")
private String name;
2
 
1
@Value(value = "小明")
2
private String name;

如果是Bean组件属性的注入,则使用@Resource注解,这里的name即BeanId:
@Resource(name = "dog")
private Dog dog;
2
 
1
@Resource(name = "dog")
2
private Dog dog;

当然,对于自动注入,也是有注解可用的,即@Autowired注解,该注解默认是byType类型,而@Resource则是byName,两者的区别还是有的,这里就不再详细展开了。

2.3 初始化和销毁方法注解

<bean id="boy" init-method="init" destroy-method="destroy" class="dulk.learn.spring.Boy"></bean>
1
 
1
<bean id="boy" init-method="init" destroy-method="destroy" class="dulk.learn.spring.Boy"></bean>

对于Bean的初始化和销毁方法,即原来xml配置文件中Bean的“init-method”和"destroy-method"属性,也是可以分别通过@PostConstruct和@PreDestroy注解来替代,顺带一提,这两个注解不是Spring注解,而是JDK中的注解:
@PostConstruct
private void init() {
System.out.println("Boy init");
} @PreDestroy
private void destroy() {
System.out.println("Boy destroy");
}
x
 
1
@PostConstruct
2
private void init() {
3
    System.out.println("Boy init");
4
}
5

6
@PreDestroy
7
private void destroy() {
8
    System.out.println("Boy destroy");
9
}

[07] 使用注解完成IOC配置的更多相关文章

  1. 10 Spring框架--基于注解的IOC配置

    1.工程环境搭建 2.基于注解的IOC配置 IOC注解的分类 (1)用于创建对象的 他们的作用就和在XML配置文件中编写一个<bean>标签实现的功能是一样的@Component: 作用: ...

  2. 基于注解的IOC配置

    1 明确 注解配置和XML配置要实现的功能都是一样的,都是要降低程序间的耦合.只是配置的形式不一样. 关于实际的开发中到底是使用XML还是注解,每家公司有着不同的习惯.具体问题具体分析. 2 环境搭建 ...

  3. spring的基于注解的IOC配置

    1.配置文件配置 <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http: ...

  4. spring的纯注解的IOC配置

    package config; import com.mchange.v2.c3p0.ComboPooledDataSource;import org.apache.commons.dbutils.Q ...

  5. Spring 基于注解的 IOC 配置

    创建 spring 的 的 xml 配置 文件 <context:component-scan base-package="com.itheim"/> 指定创建容器时要 ...

  6. java web学习总结(二十一) -------------------模拟Servlet3.0使用注解的方式配置Servlet

    一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet- ...

  7. JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet

    一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet- ...

  8. spring注解开发中常用注解以及简单配置

    一.spring注解开发中常用注解以及简单配置 1.为什么要用注解开发:spring的核心是Ioc容器和Aop,对于传统的Ioc编程来说我们需要在spring的配置文件中邪大量的bean来向sprin ...

  9. 8 -- 深入使用Spring -- 4...5 AOP代理:基于注解的“零配置”方式

    8.4.5 基于注解的“零配置”方式 AspectJ允许使用注解定义切面.切入点和增强处理,而Spring框架则可识别并根据这些注解来生成AOP代理.Spring只是使用了和AspectJ 5 一样的 ...

随机推荐

  1. Python 操作文件

    open() 函数 模式 说明 r 只读模式 w 只写模式,文件不存在自动创建:存在则清空再写 a 只追加写,在文件最后追加写 r+ 打开一个文件用于读写.文件指针将会放在文件的开头. w+ 打开一个 ...

  2. 【CSS学习】--- 文本样式

    一.前言 CSS文本属性可以定义文本的外观.通过文本属性,可以定义文本的颜色.字符间距,对齐文本,装饰文本,对文本进行缩进,等等. CSS常用的文本属性目录: text-align 文本对齐属性 te ...

  3. 关于z-index使用方法

    z-index控制的是元素的层叠顺序,当z-index越大此层越靠上:但是z-index需在已给元素定位(定位方式不限)的前提下否则该属性失效!! jquery获取index值的方法: $(" ...

  4. 搜狐eHR团队-曾经一起奋斗过的~

    昨天所有搜狐eHR团队同事再相聚(在职+离职),大家聊的都很开心,共同回顾了eHR项目从无到有的过程. 非常感谢在搜狐的工作经历,自己成长很多,目前大家分布在各个公司为eHR做着贡献,大家都注意身体~ ...

  5. Jenkins 开启用户注册机制及用户权限设置

    Jenkins 开启用户注册机制及用户权限设置   by:授客 QQ:1033553122 步骤 1.  系统管理-Configure Global Security 2.  设置

  6. 浅谈Java多线程中的join方法

    先上代码 新建一个Thread,代码如下: package com.thread.test; public class MyThread extends Thread { private String ...

  7. springcloud 入门 7 (zuul路由网关)

    Zuul简介: Zuul的主要功能是路由转发和过滤器.路由功能是微服务的一部分,比如/api/user转发到到user服务,/api/shop转发到到shop服务.zuul默认和Ribbon结合实现了 ...

  8. 从零自学Java-8.创建第一个对象

    1.创建对象:2.使用属性描述对象:3.确定对象的行为:4.合并对象:5.从其他对象继承:6.转换对象和其他类型的信息. 程序NewRoot2:计算输入数的算数平方根并输出 package com.j ...

  9. GridSearchCV交叉验证

    代码实现(基于逻辑回归算法): # -*- coding: utf-8 -*- """ Created on Sat Sep 1 11:54:48 2018 @autho ...

  10. linux networking

    ip route解读 default via 192.168.1.1 dev wlan0 dev wlan0 proto kernel scope link src 192.168.1.100 htt ...