运行问题 求解

运行问题 求解

package priv.jwh.aop.demo3;

public interface StudentDao {
   void save();
   void update();
}

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:context="http://www.springframework.org/schema/context"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
   <!--  <bean id="userService" class="priv.jwh.ioc.demo1.UserServiceImpl">
         <property name="name" value="贾伟航"/>
     </bean>

     <bean id="food" class="priv.jwh.ioc.demo1.Food">
         <property name="name" value="苹果"/>
         <property name="taste" value="很脆"/>
         <property name="kind" value="富士"/>
     </bean>
     &lt;!&ndash;Bean实例化的三种方式&ndash;&gt;
     <bean id="bean1" class="priv.jwh.ioc.demo2.Bean1"/>
     <bean id="bean2" class="priv.jwh.ioc.demo2.Bean2Factory" factory-method="createBean2"/>
     <bean id="bean3Factory" class="priv.jwh.ioc.demo2.Bean3Factory"/>
     <bean id="bean3" factory-bean="bean3Factory" factory-method="createBean3"/>

     <bean id="person" class="priv.jwh.ioc.demo3.Person" scope="prototype"/>-->
   <context:component-scan base-package="priv.jwh.ioc.demo4"/>

   <bean id="studentDao" class="priv.jwh.aop.demo3.StudentDaoImpl"/>
   <bean id="myBeforeAdvice" class="priv.jwh.aop.demo3.MyBeforAdvice"/>

   <bean id="studentDaoProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
       <property name="target" ref="studentDao"/>
       <property name="proxyInterfaces" value="priv.jwh.aop.demo3.StudentDao"/>
       <property name="interceptorNames" value="myBeforeAdvice"/>
   </bean>

</beans>

package priv.jwh.aop.demo3;

import org.springframework.aop.MethodBeforeAdvice;

import java.lang.reflect.Method;

public class MyBeforAdvice implements MethodBeforeAdvice {
   @Override
   public void before(Method method, Object[] objects, Object o) throws Throwable {
       System.out.println("前置增强");
   }
}

package priv.jwh.aop.demo3;

public class StudentDaoImpl implements StudentDao {
   @Override
   public void save() {
       System.out.println("存储学生信息");
   }

   @Override
   public void update() {
       System.out.println("删除学生信息");
   }
}

package priv.jwh.aop.demo3;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.annotation.Resource;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringDemo {
   private StudentDao studentDao;

   @Resource(name = "studentDao")
   public void setStudentDao(StudentDao studentDao) {
       this.studentDao = studentDao;
   }

   @Test
   public void demo1() {
      /* ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
       StudentDao studentDao = (StudentDao) applicationContext.getBean("studentDaoProxy");*/
       studentDao.save();
       studentDao.update();
   }
}

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>

 <groupId>priv.jwh</groupId>
 <artifactId>spring_ioc</artifactId>
 <version>1.0-SNAPSHOT</version>
 <packaging>war</packaging>

 <name>spring_ioc Maven Webapp</name>
 <!-- FIXME change it to the project's website -->
 <url>http://www.example.com</url>

 <properties>
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   <maven.compiler.source>1.7</maven.compiler.source>
   <maven.compiler.target>1.7</maven.compiler.target>
 </properties>

 <dependencies>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-beans</artifactId>
     <version>4.3.14.RELEASE</version>
   </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-context</artifactId>
     <version>4.3.14.RELEASE</version>
   </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-core</artifactId>
     <version>4.3.14.RELEASE</version>
   </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-expression</artifactId>
     <version>4.3.14.RELEASE</version>
   </dependency>
   <!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-aop</artifactId>
     <version>4.3.14.RELEASE</version>
   </dependency>
   <!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-test</artifactId>
     <version>4.3.14.RELEASE</version>
   </dependency>

   <!-- https://mvnrepository.com/artifact/aopalliance/aopalliance -->
   <dependency>
     <groupId>aopalliance</groupId>
     <artifactId>aopalliance</artifactId>
     <version>1.0</version>
   </dependency>

   <dependency>
     <groupId>commons-logging</groupId>
     <artifactId>commons-logging</artifactId>
     <version>1.2</version>
   </dependency>
   <!-- https://mvnrepository.com/artifact/log4j/log4j -->
   <dependency>
     <groupId>log4j</groupId>
     <artifactId>log4j</artifactId>
     <version>1.2.17</version>
   </dependency>
   <!-- https://mvnrepository.com/artifact/junit/junit -->
   <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>4.12</version>
   </dependency>
 </dependencies>

 <build>
   <finalName>spring_ioc</finalName>
   <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
     <plugins>
       <plugin>
         <artifactId>maven-clean-plugin</artifactId>
         <version>3.0.0</version>
       </plugin>
       <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
       <plugin>
         <artifactId>maven-resources-plugin</artifactId>
         <version>3.0.2</version>
       </plugin>
       <plugin>
         <artifactId>maven-compiler-plugin</artifactId>
         <version>3.7.0</version>
       </plugin>
       <plugin>
         <artifactId>maven-surefire-plugin</artifactId>
         <version>2.20.1</version>
       </plugin>
       <plugin>
         <artifactId>maven-war-plugin</artifactId>
         <version>3.2.0</version>
       </plugin>
       <plugin>
         <artifactId>maven-install-plugin</artifactId>
         <version>2.5.2</version>
       </plugin>
       <plugin>
         <artifactId>maven-deploy-plugin</artifactId>
         <version>2.8.2</version>
       </plugin>
     </plugins>
   </pluginManagement>
 </build>
</project>

在测试类中 使用注解就会产生 空指针异常,,,使用以前的加载 配置文件的方法 就可以正常输出,请问是怎么回事?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

6回答
qq_蓝骏毅_04076633 2018-10-06 15:14:34

我就是jdk1.8呀

  • 建议同学把你的所有代码贴完整,我们运行一下试试。祝学习愉快!
    2018-10-07 09:05:33
qq_蓝骏毅_04076633 2018-10-03 12:48:16
package Test;

import static org.junit.Assert.*;

import javax.annotation.Resource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.imooc.aop.StudentDao;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringAOPDemo {
	@Resource(name="studentDao")
	private StudentDao studentDao;
	
	@Test
	public void demo1() {
		studentDao.save();
		
	}

}


  • 建议同学看一下你的StudentDao 类是否在applicationContext.xml中配置了。 并且,建议同学自己开一个问答,以便于与对同学问题的追踪 祝学习愉快。
    2018-10-06 12:20:09
qq_蓝骏毅_04076633 2018-10-03 12:47:50
java.lang.NoClassDefFoundError: Could not initialize class org.springframework.test.context.junit4.SpringJUnit4ClassRunner
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
	at org.junit.vintage.engine.discovery.DefensiveAllDefaultPossibilitiesBuilder$DefensiveAnnotatedBuilder.buildRunner(DefensiveAllDefaultPossibilitiesBuilder.java:74)
	at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
	at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
	at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
	at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
	at org.junit.vintage.engine.discovery.TestClassRequestResolver.createRunnerTestDescriptor(TestClassRequestResolver.java:54)
	at org.junit.vintage.engine.discovery.VintageDiscoverer.lambda$discover$0(VintageDiscoverer.java:53)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
	at java.util.Iterator.forEachRemaining(Iterator.java:116)
	at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
	at java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312)
	at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:743)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
	at org.junit.vintage.engine.discovery.VintageDiscoverer.discover(VintageDiscoverer.java:55)
	at org.junit.vintage.engine.VintageTestEngine.discover(VintageTestEngine.java:65)
	at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:130)
	at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:117)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
	at org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:86)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)


我不不不不是我 2018-08-21 22:53:53

参考 https://stackoverflow.com/questions/46494522/spring-resource-injection-stopped-working-under-jdk9 

可以在pom里添加依赖

<dependency>
  <groupId>javax.annotation</groupId>
  <artifactId>javax.annotation-api</artifactId>
  <version>1.3.2</version>
</dependency>

实现JDK9以上兼容

提问者 慕盖茨205585 2018-06-29 11:41:37

JDK版本的问题 1.9有一些新特性 导致注解使用不了  换成JDK1.8 就好了

好帮手慕珊 2018-06-29 09:32:28

我在老师源码的基础上,把你这些代码考进去运行了,两种方式都没有问题,怀疑是你的运行环境有问题,你先把测试类截图贴出来,再有把控制台的空指针异常的提示也截图贴出来。

你可以像我这样,把代码拷贝到老师的源码中运行一下试试。

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
SSM主流框架入门与综合项目实战2018版
  • 参与学习           人
  • 提交作业       205    份
  • 解答问题       4317    个

Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师