代码部分
项目结构:
springmvc.controller.EmployeeController
@Controller
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
public EmployeeController() {
System.out.println("EmployeeController对象被创建!");
}
/*
Spring整合SpringMVC
1.不整合:
方式一:将所有的配置都配置到springMVC的配置文件中
方式二:也可以创建多个配置文件,在Springwvc的配置中通过import标签将其他配置文件引入
2.整合(通常使用此方案):
spring的配置文件负责管Dao、Service、数据源、事务管理器以及与其他第三方框架的整合等
SpringMVC的配置文件中负责管理controller、视图解析器、拦截器等
问题一: Spring 的Toc容器何时初始化,即ISpring的配置文件谁来加载
Java工程: new classpathxmLApplicationcontext ( "beans.xmL " );
web工程:在iveb.xmL配置文件种配置一个监听器contextLoaderListener,用来加载Spring配置文件
问题二: Controller利IService被创建了两次
解决方案:
spring不扫描controlLer
SpringMVC只扫描controlLer
*/
@RequestMapping("/getEmployees")
public String getEmployees(){
System.out.println("注入的EmployeeService对象是:"+employeeService);
return "success";
}
}
springmvc.service.EmployeeService
springmvc.service.impl.EmployeeServiceImpl
public interface EmployeeService {
public void getEmployees();
}
@Service()
public class EmployeeServiceImpl implements EmployeeService {
public EmployeeServiceImpl() {
System.out.println("EmployeeServiceImpl对象被创建!!");
}
@Override
public void getEmployees() {
//调用EmployeeDap查看数据库获取所有的员工信息
System.out.println("调用EmployeeDap查看数据库获取所有的员工信息!");
}
}
bean.xml
<!-- 配置自动扫描的包-->
<c:component-scan base-package="com.atguigu.springmvc" use-default-filters="false">
<!-- 配置spring不扫描controller-->
<c:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</c:component-scan>
web.xml
<!-- 配置前端控制器-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 修改默认页面允许html-->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:beans.xml</param-value>
</context-param>
<!-- 配置contextLoaderListener监听器,目的是为了加载spring的配置文件,帮我们初始化Ioc容器-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
springmvc.xml
<!-- 配置自动扫描的包-->
<c:component-scan base-package="com.atguigu.springmvc">
<!-- 配置springmvc只扫描Controller-->
<c:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</c:component-scan>
<!-- 视图解析器-->
<bean id="resourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".html"/>
</bean>
<!-- 解除springmvc对静态资源的访问限制,让静态资源先通过-->
<mvc:default-servlet-handler/>
<mvc:annotation-driven/>