Component可以使用value属性指定对象的名称,相当bean标签的id属性 测试类中
<context:component-scan base-package="com.itheima"> <!--include : 包含--> <!--filter: 过滤--> <!--<context:include-filter type="annotation" expression="org.springframework.stereotype.Service" ></context:include-filter>--> <!--exclude: 排除--> <!--<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"></context:exclude-filter>--> </context:component-scan>开启注入扫描, 指定扫描的包, 扫描 Component注解 base-package: 指定扫描的包, 扫描com.itheima 包及其子包 如果将数据源和注入分开 context 必须写在主中
@Autowired: 自动装配 * 可以直接把容器中的对象注入到另外一个对象中 * 如果该接口有多个实现类, 需要指定对象的名称,如果不指定,会报错 * * 如果没有指定名称,有多个实现类,根据属性名称在容器中查找
@Qualifier(“userDaoImpl2”): 可以指定对象在容器中的名称 该注解必须结合Autowired进行使用@Resource: 自动装配 --可以使用name属性指定对象在容器中的名称@Autowired 和@Resource 都是自动装配 Autowired, 默认按照类型装配,如果类型有多个,则按照名称查找, 由spring提供 @Resource:默认是按照名称装配,如果名称没有找到,则按照类型装配, 有Jdk提供a. Bean: 标记在方法上,作用:将方法返回值放到springIOC容器中,可以使用value属性指定对象的名称 该注解适合创建 引用(其他)类对象 与xml映射: b. Value: 标记在属性上,作用:给简单类型的属性赋值 相当于xml的 value属性 c. 【重点】Component: 标记在类上,作用:创建该类的对象,放到springIOC容器中,可以使用value属性指定对象的名称 该注解适合创建自定义的类对象 子注解:@Service(用于业务层) @Repository(用于持久层), @Controller(用于表现层)的作用与@Component 一样
与xml映射: <bean id="" class="">d. 【重点】Autowired: 标记在属性和set方法上, 可以没有set方法,作用:自动注入依赖的对象 Qualifier:标记在属性和set方法上, 作用:指定依赖对象的名称
e. Resource: 标记在属性和set方法上, 可以没有set方法,作用:自动注入依赖的对象 可以使用name属性指定依赖对象的名称 f. Autowired 和Resource对比 两个都是自动注入(自动装配) Autowired:默认按照类型装配,如果类型有多个,按照指定的名称装配, 由spring提供 Resource: 默认按照指定的名称装配,如果没有找到名称,按照类型装配, 由jdk提供 g. @Import: 标记在配置类上,作用引入其他的配置文件(xml) 【重点】 h. @PropertySource :标记在类上,作用引入属性文件(properties) 【重点】xml 映射:<context:property-placeholder location=“classpath:db.properties”></context:property-placeholder> i. Configuration:标记在类上,作用 代表该类为配置文件 j. ComponentScan:标记在类上,作用 扫描包,创建对象 【重点】<context:component-scan base-package=“com.itheima”></context:component-scan> l. Scope: 指定对象的范围 m: 与生命周期相同的注解 @PostConstruct:对象初始化执行的方法 @PreDestory:对象销毁时执行的方法