a.基本类型和String
b.其他bean类型
c.复杂类型/集合类型
在
里面加入
标签里的属性:
type:指定注入数据类型
index:注入数据位置,从0开始
name:给构造函数指定名称的参数
value:用于提供基本类型和String类型的数据的值
ref:用于指定其他bean类型数据,就是在Spring的Ioc核心容器中出现过的bean对象
如:配置一个String类型变量s:
<bean id="s" class="java.lang.String">
<constructor-arg ref="s"/>
</bean>
<!--
setter方法注入普通数据 <property name=" " value="值">
* 引用数据 <property name="" ref="另一个bean">
->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="jdbcUrl" value="jdbc:sqlserver://localhost:1433;DatabaseName=user"/>
<property name="user" value="asd"/>
<property name="password" value="123"/>
</bean>
<!--
集合的注入都是给<property>添加子标签
数组:<array>
List:<list>
Set:<set>
Map:<map> ,map存放k/v 键值对,使用<entry>描述
Properties:<props> <prop key=""></prop>
普通数据:<value>
引用数据:<ref>
-->
<bean id="collectionDataId" class="com.collectionData" >
<property name="arrayData">
<array>
<value>a</value>
<value>b</value>
</array>
</property>
<property name="listData">
<list>
<value>一</value>
<value>二</value>
</list>
</property>
<property name="setData">
<set>
<value>one</value>
<value>two</value>
</set>
</property>
<property name="mapData">
<map>
<entry key="name" value="xiaohua"></entry>
<entry key="age" value="12"></entry>
</map>
</property>
<property name="propsData">
<props>
<prop key="1">a</prop>
<prop key="2">b</prop>
<prop key="3">c</prop>
</props>
</property>
</bean>
注意:结构相同,标签是可以互换的
用于给List结构集合注入的标签:list,array,set
用于给Map结构集合注入的标签:map,props
使用注解的前提是告知spring创建容器时要扫描的包,配置所需要的标签不是在bean约束,而是一个名称为context名称空间和约束
<?xml version="1.0" encoding="UTF-8"?>
<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
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
<!--组件扫描,扫描含有注解的类 -->
<context:component-scan base-package="com.lby"/>
</beans>
1.作用:用于把当前类存入spring容器, @Component(“id”)相当于
2.属性:
value:用于指定bean的id,当我们不写时默认值是当前类名,且首字母改成小写
3.web开发,提供3个@Component注解衍生注解(功能一样)取代
@Repository:dao层
@Service:service层
@Controller:web层
在使用注解时set方法不是必须的
a. 作用:自动按照类型注入,只要容器中有唯一的一个bean对象类型和要驻入的变量类型匹配,就可以注入成功
b. 出现位置:可以是变量上,也可以是方法上
a.作用:在按照类中注入的基础上再按照名称注入,它在给类成员注入时不能单独使用(需要和Autowired一起使用),但在给方法参数注入时可以
b.属性:
value:用于指定bean的id
a.作用:按照bean注入bean,可以独立使用
b.属性:
name:用于指定bean的id
以上三个注入都只能注入其他bean类型的数据,而基本类型和String类型无法使用上述注解实现
另外,集合类型的注入只能通过XML实现
a.作用:用于实现基本类型和String类型的注入
b.属性:
value:指定数据的值,可以使用el表达式
@Service(value = "accountService")
public class AccountServiceImpl implements IAccountService {
@Resource(name = "accountDao")
private IAccountDao accountDao = null;
public void saveAccount() {
accountDao.saveAccount();
}
}
@Value("${jdbc.password}")
private String password;
@Value("${jdbc.user}")
private String user;
@Value("${jdbc.driverClass}")
private String driverClass;
@Value("${jdbc.jdbcUrl}")
private String jdbcUrl;
@Autowired
private QueryRunner runner;
普通值:@Value("")
引用值:
方式1:按照【类型】注入
@Autowired
方式2:按照【名称】注入1
@Autowired
@Qualifier("名称")
方式3:按照【名称】注入2
@Resource("名称")
和bean中的init-method和destory-method作用一样
初始化:@PostConstruct
销毁:@PreDestroy
和bean标签中使用scope属性实现的功能一致
scope:
作用:用于指定bean的作用范围
属性:
value:指定范围的取值(prototype(多例),singleton(单例))
@Scope("prototype")