Spring 如何初始化一个容器
2个回答
2015-06-28 · 知道合伙人互联网行家
关注
展开全部
写一个类,实现InitializingBean接口,然后交由spring容器管理
Java代码
public class InitDataListener implements InitializingBean, ServletContextAware{
private UserService userService;//属性。和配置文件对应property name对应
private Logger log = Logger.getLogger(InitDataListener.class);
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
@Override
public void afterPropertiesSet() throws Exception {
//在这个方法里面写 初始化的数据也可以。
}
@Override
public void setServletContext(ServletContext arg0) {
//userMap容器存放 userList(用户数据)
List<User> userList = new ArrayList<User>();
try {
userList = userService.queryAllUser();
Map<String, Object> userMap = CachFactory.getInstance().createCach("userMap");
//一个工厂模式和单例模式的使用。文档最后有代码
for(User user:userList){
userMap.put(user.getUserid(), user);
}
} catch (Exception e) {
log.error("queryAllUser error系统初始化查询所有用户出错");
}
System.out.println(userList.size());
}
Java代码
<!-- spring系统启动以后,加载该类,查询所有数据 -->
<bean class="adtec.init.InitDataListener">
<property name="userService" ref="userService"></property>
</bean>
展开全部
BeanFactory factory = new XmlBeanFactory(resource);
3:ApplicationContext context = new ClassPathXmlApplicationContext( new String[] {"applicationContext.xml", "applicationContext-part2.xml"});
BeanFactory factory = (BeanFactory) context;详细展开 :
一:org.springframework.core.io包中主要是各样的Resource类
1:类名是斜体的表示是抽象类,正体的表示普通类2:3:
温昱说图org.springframework.core.io包中主要是各样的Resource类,Spring的 Resource 接口是为了提供更强的访问底层资源能力的抽象。相当巧妙的地方在于,为何AbstractResource的子类有的override了getFile()而有的没有?这是因为在AbstractResource的getFile()方法设计为抛出异常,如果子类没有重写此方法,说明子类不支持通过绝对路径查找资源的方式,而override的子类则提供自己的实现。这里通过类的层次设计,充分利用继承带来的优点,避免了大量的条件语句。
二:关于 org.springframework.beans.factory 包和 org.springframework.context 包:
1:BeanFactory 是个接口,LifecycleBean 是个类它负责管理bean的生命周期,它实现了4个接口,并且有一个 BeanFactory 类型的变量 owningFactory
org.springframework.beans.factory包下面的 而是
org.springframework.beans.factory.xml下面的
2。 ApplicationContext 也是个接口,它继承的 ListableBeanFactory 接口 又 继承 BeanFactory 接口
public interface ApplicationContext extends ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver {
}public interface ListableBeanFactory extends BeanFactory {
} Spring的bean包支持通过编码方式管理和操作bean的基本功能,ApplicationContext则以Framework的方式提供BeanFactory的所有功能。使用
ApplicationContext,你可以让系统加载你的bean,例如:
在Servlet容器初始化ContextLoaderServlet时,通过ContextLoader类加载Spring Framework),而不是使用编码方式来加载。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询