spring注入bean,怎么直接调用其方法
发布网友
发布时间:2022-04-22 12:02
我来回答
共2个回答
热心网友
时间:2023-06-27 15:42
1jsp页面如果想要根据id直接查询信息的话,可能会需要这样的代码
2而应用类Spring框架之后如上图的NewsService里面是没有实例化过的NewsDao的,这样上面图中的方法就执行不了
3那假如想要使用NewsServcie中的方法,就需要去找Spring,在Action因为设置了setter方法注入所以可以直接获得实例化好的对象,那在jsp中呢?
4首先你需要有一个jar包,形如spring-web-3.2.0.M2.jar,将此包加入build Path并部署或者直接复制到WEB-INF/lib下,这是spring应用在web项目时需要用到的jar包
然后在jsp页面中导入相关的工具类:
<%@ page import="org.springframework.web.context.support.WebApplicationContextUtils"%><%@ page import="org.springframework.web.context.WebApplicationContext"%>
5最后通过以下语句获取配置文件中相应的Bean
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext()); NewsService service = (NewsService)wac.getBean("newsService");
注意getBean()方法中传入的是配置文件中的Bean的id
这样就可以在页面中访问Spring的Bean了,同时也可以访问service的方法了
热心网友
时间:2023-06-27 15:43
<!-- 配置一个singleton Bean实例:默认 -->
<bean id="bean1" class="com.Bean1" />
<!-- 配置一个prototype Bean实例 -->
<bean id="bean2" class="com.Bean2" scope="prototype"/>
</beans>
程序中获取bean的操作:
public class SpringTest {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
//判断两次请求singleton作用域的Bean实例是否相等
System.out.println(ctx.getBean("bean1")==ctx.getBean("bean1"));
//判断两次请求prototype作用域的Bean实例是否相等
System.out.println(ctx.getBean("bean2")==ctx.getBean("bean2"));
}
}