配置文件
Bean实例化三种方式.
1.无参构造
<bean id="daoDemo" class="org.example.dao.impl.daoDemo1impl" scope="prototype"/>
<bean id="userDao" class="org.example.dao.impl.UserDaoImpl" init-method="init" destroy-method="destory"/>
2.工厂静态
<bean id="getUserDao" class="org.example.factory.staticFactory" factory-method="getUserDao"/>
3.工厂实例
<bean id="factory" class="org.example.factory.dynamicFactory"/>
<bean id="getDynamicUserDao" factory-bean="factory" factory-method="getDynamicUserDao"/>
*Bean的依赖注入
- set方法
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
<bean id="userDao" class="org.example.dao.impl.UserDaoImpl" init-method="init" destroy-method="destory"/>
<bean id="userService" class="org.example.service.Impl.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
- 构造方法
private UserDao userDao;
public UserServiceImpl(){}
public UserServiceImpl(UserDao userDao) {
this.userDao = userDao;
}
<bean id="userService" class="org.example.service.Impl.UserServiceImpl">
//第一个userDao是构造方法的参数, 第二个是引用容器中的bean的id
<constructor-arg name="userDao" ref="userDao"/>
</bean>
Bean依赖注入的数据类型
普通数据类型
private String username;
private int age;
public void setUsername(String username) {
this.username = username;
}
public void setAge(int age) {
this.age = age;
}
<bean id="userDao001" class="org.example.dao.impl.UserDaoImpl001">
<property name="username" value="zhangsan"/>
<property name="age" value="19"/>
</bean>
引用数据类型
集合数据类型
* List
<property name="strList">
<list>
<value>haha</value>
<value>haa</value>
<value>aha</value>
<value>hahaaahaha</value>
</list>
</property>
Map
'''
<property name="userMap">
<map>
<entry key="zhangsan" value-ref="user1"/>
<entry key="lisi" value-ref="user2"/>
</map>
</property>
<bean id="user1" class="org.example.domain.User">
<property name="name" value="张三"/>
<property name="age" value="229"/>
</bean>
<bean id="user2" class="org.example.domain.User">
<property name="name" value="李四"/>
<property name="age" value="888"/>
</bean>
'''
引入其他配置文件
使用import引入
Spring相关API
-
ApplicationContext的实现类
'''- ClassPathXmlApplicationContext: 从类的根路径加载 , 推荐使用.
- FileSystemXmlApplicationContext: 从磁盘加载
- AnnotationConfigApplicationContext: 当使用注解配置容器对象时, 需要使用此类来创建spring容器, 它用来读取注解.
'''
-
getBean()方法的使用
- 使用id eg. app.getBean(id)
- 使用字节码文件
eg. app.getBean(class)
Spring配置数据源
- 连接池(数据源)的作用
Other
@Resource 和 @Autowired,两者的区别,@Resource 是 javax.annotation.Resource包下,是JavaEE支持的;@Autowired 是org.springframework.beans.factory.annotation.Autowired 包下,是spring提供的,这会导致@Resource 的可扩展性优于 @Autowired,因为在导出一个项目时,使用 @Resource 注解,可以通过Java环境提供,而使用 @Autowired 注解的,需要额外引入spring包。
网友评论