Spring Web Spring对web模块的支持。
Spring ORM spring对orm的支持:
jar:
bean.xml:
spring的容器,可以归类为两种类型
通过Resource获取BeanFactory
//加载Spring的资源文件
Resource resource = new ClassPathResource("applicationContext.xml");
//创建IOC容器对象【IOC容器=工厂类+applicationContext.xml】
BeanFactory beanFactory = new XmlBeanFactory(resource);
通过类路径获取ApplicationContext
// 得到IOC容器对象
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
System.out.println(ac);
在Spring中总体来看可以通过三种方式来配置对象:
在上面我们已经可以得到IOC容器对象了。接下来就是在applicationContext.xml文件中配置信息【让IOC容器根据applicationContext.xml文件来创建对象】
public class User {
private String id;
private String username;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
// 得到IOC容器对象
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = (User) ac.getBean("user");
System.out.println(user);
上面我们使用的是IOC通过无参构造函数来创建对象,我们来回顾一下一般有几种创建对象的方式:
工厂创建对象
首先bean应该带有有参构造方法
首先,使用一个工厂的静态方法返回一个对象
public class Factory {
public static User getBean() {
return new User();
}
}
public class Factory {
public User getBean() {
return new User();
}
}
通过注解来配置信息就是为了简化IOC容器的配置,注解可以把对象添加到IOC容器中、处理对象依赖关系,我们来看看怎么用吧:
使用注解步骤:
1)先引入context名称空间
2)开启注解扫描器
创建对象以及处理对象依赖关系,相关的注解:
@Resource 依赖关系
package aa;
import org.springframework.stereotype.Repository;
//把对象添加到容器中,首字母会小写
@Repository
public class UserDao {
public void save() {
System.out.println("DB:保存用户");
}
}
package aa;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
//把UserService对象添加到IOC容器中,首字母会小写
@Service
public class UserService {
//如果@Resource不指定值,那么就根据类型来找--->UserDao....当然了,IOC容器不能有两个UserDao类型的对象
//@Resource
//如果指定了值,那么Spring就在IOC容器找有没有id为userDao的对象。
@Resource(name = "userDao")
private UserDao userDao;
public void save() {
userDao.save();
}
}
package aa;
import org.springframework.stereotype.Controller;
import javax.annotation.Resource;
//把对象添加到IOC容器中,首字母会小写
@Controller
public class UserAction {
@Resource(name = "userService")
private UserService userService;
public String execute() {
userService.save();
return null;
}
}
由于Spring的自动装配并不能将第三方库组件装配到应用中,于是需要显式装配配置。显示装配有两种方式
Spring In Action作者首推使用自动装配的功能,而后是通过java代码配置bean,最后才用XML文件配置的方式..
那么怎么通过java代码来配置Bean呢??
使用配置类创建bean:
@org.springframework.context.annotation.Configuration
public class Configuration {
@Bean
public UserDao userDao() {
UserDao userDao = new UserDao();
System.out.println("我是在configuration中的"+userDao);
return userDao;
}
}