第 2 章 IoC容器装配Bean_基于注解配置方式
2.1
Bean的定义(注册) -- 扫描机制(用 注解就要用扫描激活 用xml配置要用bean激活 property添加链接 set方法注入 )
第一步:导入jar包(4个核心包+2个日志包)
导入log4j.properties
导入applicationContext.xml
Spring XML开发和注解开发 导入jar包是相同的
第二步:编写service 和Dao的注册
XML做法 :<bean id=”customerService” class=”…” />,用<bean>的方式创建对象
注解做法 :spring2.5引入 @Component 注解 如果放置到类的上面,相当于在spring容器中定义<bean id=”” class=””>
/**
* @Component注解放置到类上
* 相当于spring容器中定义:<bean id="customerService" class="com.igeek.ioc.CustomerService">
* 其中id属性默认bean的名字是类名的小写
* ——————————————————————————————————————————————————————
* @Component(value="customer")//自定义bean的名字
* 相当于spring容器中定义:<bean id="customer" class="com.igeek.ioc.CustomerService">
* ——————————————————————————————————————————————————————
*/
@Component("customer")
public class CustomerService{
}
第三步: 配置注解开启和注解Bean的扫描
<context:component-scan base-package="com.igeek.ioc"/>指定扫描哪个路径
实际开发中,使用的是@Component三个衍生注解(“子注解”)
子注解的作用 :有分层的意义(分层注解)
@Service用于标注业务层组件、(如Service层)
@Controller用于标注控制层组件(如struts中的action层)
@Repository用于标注数据访问组件,(如DAO层组件)。
Bean属性的依赖注入
复杂类型数据依赖注入:
注解实现属性依赖注入,将注解加在setXxx方法上 或者 属性定义上 !
/*
* DI - 依赖注入
* 直接定义关联依赖对象属性
*
* @AutoWired 按照类型注入
* @Resource 先按照名称注入,如果没找到,则按照类型注入
*
* @vale(SpEL) ----不用
*
*/
注释里面标明初始化和销毁:
(1)当bean被载入到容器的时候调用setup ,
注解方式如下:?
@PostConstruct
初始化
(2)当bean从容器中删除的时候调用teardown(scope= singleton有效)
注解方式如下:
@PreDestroy
销毁
日志:
//在类里面加日志 首先实例化工具
Logger logger = Logger.getLogger(UserServiceImpl.class);
public void login() {
System.out.println("---ServiceImpl.login---");
logger.debug("-----debug开始---");//在stdout 的不过模式下可看到
useDao.login();
logger.debug("---debug结束----");
}
设置日志信息:在log4j里面设置
#choose stdout or file