springmvc无法扫描到jar包的@Controller注解

James11 发布于 2015/10/26 21:27
阅读 11K+
收藏 1

最近在学习maven 想用maven构建项目试试 但是却遇到问题 无法继续

下面是目录结构

view是web层

其他都是以jar包的形式集成在view项目中

这是view项目中的一段能访问的代码

@Controller
public class baseController {
	
	@RequestMapping("sb.do")
	@ResponseBody
	public String sb(){
	
		return "sb";
	}
}




我在common项目中写一点类似的代码 却无法访问 

@Controller
public class BaseController {
	
		@Resource
		IUserCityService cityService;
	
		@RequestMapping("city.do")
		@ResponseBody
		public Object cityByParent(Integer parent){
			if(parent==null){
				parent=0;
			}
			return cityService.selectByParent(parent);
			
		}
		
}




springMvc配置文件

<context:component-scan base-package="com.*"	use-default-filters="false">
		<context:include-filter type="annotation"
			expression="org.springframework.stereotype.Controller" />
		<context:include-filter type="annotation"
			expression="org.springframework.web.bind.annotation.ControllerAdvice" />
	</context:component-scan>
	<!-- 会自动注册了 -->
	<mvc:annotation-driven enable-matrix-variables="true" />

	<mvc:default-servlet-handler />

	<mvc:resources mapping="/css/**" location="/css/" />
	<mvc:resources mapping="/js/**" location="/js/" />
	<mvc:resources mapping="/images/**" location="/images/" />



	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass"	value="org.springframework.web.servlet.view.JstlView" />
		<property name="contentType" value="text/html" />
		<property name="prefix" value="/WEB-INF/jsp/" />
		<property name="suffix" value=".jsp" />
	</bean>
	<!--MVC的ResponseBody输出中文编码设定,防止中文乱码 -->
	<bean
		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list>
				<bean
					class="org.springframework.http.converter.StringHttpMessageConverter">
					<property name="supportedMediaTypes">
						<list>
							<value>text/plain;charset=UTF-8</value>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>



view 项目打包配置pom文件

<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.store</groupId>
		<artifactId>store</artifactId>
		<version>1.0-SNAPSHOT</version>
	</parent>

	<artifactId>store-view</artifactId>
	<packaging>war</packaging>

	<name>store-view Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<dependencies>
		<!-- 引用其他模块 -->
		<dependency>
			<groupId>com.store</groupId>
			<artifactId>store-buy</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>com.store</groupId>
			<artifactId>store-common</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>com.store</groupId>
			<artifactId>store-user</artifactId>
			<version>${project.version}</version>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.4</version>
				<configuration>
					<warName>store</warName>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.0.2</version>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
					<encoding>utf-8</encoding>
				</configuration>
			</plugin>
		</plugins>
	</build>




加载中
0
James11
James11
有大哥帮忙看看吗
0
随风所欲
随风所欲
是否能确定 包扫描是否能扫描到你那个controller?
James11
James11
不能扫描到 因为无法访问
0
就是个精虫上脑的地方
就是个精虫上脑的地方
为什么要写在另外的包里? 搞这么多入口不乱吗
James11
James11
按业务分成多个应用,然后每个应用由不同项目组开发 互不影响。
James11
James11
我是模拟我们公司的架构做的,我们公司的架构是这样的 但是是用的struts 所以不存在这个这个问题。
0
空香沾手
空香沾手
context:component-scan base-package="com.*" 改成context:component-scan base-package="com.###,com.***" 试试。 #和*为具体的包名,用逗号分割。
James11
James11
我用过具体的包名了,还是无法访问
0
冷川
冷川
打成jar包应该是不能访问到的,你打成war包试试看。
0
伤心的布鱼
伤心的布鱼
打成war包引用就可以了
nan45444
nan45444
打成war包也不会扫描
0
nan45444
nan45444

请问问题解决了吗?@我叫Yogi

James11
James11
已经解决了,但是我电脑出问题格式化了, 代码也丢失了。
0
任重而道元
任重而道元

把你的返回类型修改为String试试,别用Obejct!

0
微寒Super

看到最后解决了,说答案啊亲

James11
James11
忘记了啊。代码都丢了。。。
0
maoxf
maoxf

在启动的主类main方法中添加扫描的包:

比如在spring boot中就是:

@SpringBootApplication(scanBasePackages = {"com.zhangsan","com.zhanger"})

返回顶部
顶部