使用注解的形式来实现spring的IOC功能
使用注解,首先要在配置文件进行配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.itylm"></context:component-scan> </beans>注:<context:component-scan base-package="com.itylm"></context:component-scan>
这里表示扫描的包,当读取配置文件后,spring会扫描base-package所指定的包,将所需的对象创建并存入容器中
这里将注解分为4类
1.用于创建对象的
@Component
该注解直接写在类上边
例如
@Component(value = "account") public class AccountDaoImpl implements AccountDao { int a; }当spring扫描到@component注解后,会创建该类的对象并存入容器中,唯一标识是value值。该属性可省略不写,不写时默认为该类的名字且首字母小写
另外这里还有3类该注解的衍生注解,是专门为三层架构设计的,其作用和用法与component一样,只是名称不一样
@Controller:一般用于表现层
@Service:一般用于业务层
@Repository:一般用于持久层
2.用于注入数据的
@Autowired
一般写成员变量上,例如
@Autowired private AccountDao accountDao;在写上该注解后,spring会去容器中寻找是否有该类型的数据(AccountDao)
如果没有,则会报错
如果有一个,将会自动注入数据
如果有两个或以上,spring会将变量名称(accountDao)与容器中的bean标识进行匹配,如果配成成功将注入成功,否则将会报错。
@Qualifier 在自动按照类型注入的基础之上,再按照 Bean 的 id 注入。它在给字段注入时不能独立使用,必须和 @Autowire 一起使用;但是给方法参数注入时,可以独立使用。 属性: value:指定 bean 的 id 。 @Resource 直接按照 Bean 的 id 注入 属性: name :指定 bean 的 id 以上3种注解只能注入其他类型的bean数据,像基本类型,String则无法注入 @Value 注入基本数据类型和 String 类型数据的 属性: value :用于指定值
3.用于改变作用范围的
指定 bean 的作用范围,作用于类的上边
value:指定范围的值。
取值:singleton prototype request session globalsession 4.用于改变生命周期的 相当于:<bean id="" class="" init-method="" destroy-method="" /> @PostConstruct 用于指定初始化方法 @PreDestroy 用于指定销毁方法。 均作用于方法上边