我正在学习Java,正在使用java 8,spring 5.3.9和Apache Tomcat 9。我已经将我的jar文件添加到我的构建路径中的类路径中,将Apache Tomcat添加到我的服务器中,我的项目运行得非常好。现在我开始使用beans和xml文件,我遇到了一个问题。我的代码的一部分被触发,另一部分被忽略。
我有以下界面
FortuneService.java:
package com.luv2code.springdemo;
public interface FortuneService {
public String getFortune();
}
和一个快乐财富服务类:
package com.luv2code.springdemo;
public class HappyFortuneService implements FortuneService {
@Override
public String getFortune() {
return "Today is your lucky day";
}
}
这是另一个接口Coach.java:
package com.luv2code.springdemo;
public interface Coach {
public String getDailyWorkout();
public String getDailyFortune();
}
这是我的棒球教练课:
package com.luv2code.springdemo;
public class BaseballCoach implements Coach {
private FortuneService fortuneService;
public BaseballCoach(FortuneService theFortuneService) {
this.fortuneService = theFortuneService;
}
@Override
public String getDailyWorkout() {
return "Spend 30 min on batting practice";
}
@Override
public String getDailyFortune() {
return fortuneService.getFortune();
}
}
轨道客车等级:
package com.luv2code.springdemo;
public class TrackCoach implements Coach {
private FortuneService fortuneService;
public TrackCoach() {}
public TrackCoach(FortuneService fortuneService) {
super();
this.fortuneService = fortuneService;
}
@Override
public String getDailyWorkout() {
return "Run a hard 5k";
}
@Override
public String getDailyFortune() {
return fortuneService.getFortune();
}
}
MyApp.java:
package com.luv2code.springdemo;
public class MyApp {
public static void main(String[] args) {
// TODO Auto-generated method stub
Coach theCoach = new TrackCoach();
System.out.println(theCoach.getDailyWorkout());
}
}
MyLoggerConfig.java:
package com.luv2code.springdemo;
import java.util.logging.ConsoleHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class MyLoggerConfig {
private String rootLoggerLevel;
private String printedLoggerLevel;
public void setRootLoggerLevel(String rootLoggerLevel) {
this.rootLoggerLevel = rootLoggerLevel;
}
public void setPrintedLoggerLevel(String printedLoggerLevel) {
this.printedLoggerLevel = printedLoggerLevel;
}
public void initLogger() {
// parse levels
Level rootLevel = Level.parse(rootLoggerLevel);
Level printedLevel = Level.parse(printedLoggerLevel);
// get logger for app context
Logger applicationContextLogger = Logger.getLogger(AnnotationConfigApplicationContext.class.getName());
// get parent logger
Logger loggerParent = applicationContextLogger.getParent();
// set root logging level
loggerParent.setLevel(rootLevel);
// set up console handler
ConsoleHandler consoleHandler = new ConsoleHandler();
consoleHandler.setLevel(printedLevel);
consoleHandler.setFormatter(new SimpleFormatter());
// add handler to the logger
loggerParent.addHandler(consoleHandler);
}
}
和我的xml文件applicationContext.xml:
<?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">
<!-- Define your beans here -->
<bean id="myLoggerConfig" class="com.luv2code.springdemo.MyLoggerConfig" init-method="initLogger">
<property name="rootLoggerLevel" value="FINE" />
<property name="printedLoggerLevel" value="FINE"/>
</bean>
<bean
id="myFortune"
class="com.luv2code.springdemo.HappyFortuneService"
>
</bean>
<bean
id="myCoach"
class="com.luv2code.springdemo.TrackCoach"
>
<constructor-arg ref="myFortune" />
</bean>
</beans>
我遇到的问题是,在我的控制台中打印出消息< code>Run a hard 5k,而不是< code>Today is your lucky day消息,并且我期望的红色xml控制台消息没有被记录。所以我认为我的xml文件和接口被忽略了。
我还尝试在MyApp.java中插入以下行:
System.out.println(theCoach.getDailyFortune());
但我知道this.fortuneService为空
您需要从使用XML文件构建的上下文中获取bean,而不是使用new
关键字创建它们。
package com.luv2code.springdemo;
public class MyApp {
public static void main(String[] args) {
// TODO Auto-generated method stub
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Coach theCoach = context.getBean("myCoach", Coach.class);
System.out.println(theCoach.getDailyWorkout());
System.out.println(theCoach.getDailyFortune());
}
}
wanner测试spring boot(1.5.20)aop(最小代码) 类被aopped时, 请让我知道我错过了什么
我的编译器是和。 输出如下: 具有线程本地存储持续时间的对象的析构函数...保证被调用。
我有: null null null 允许的HTTP方法:, 授权级别:函数 我也用下面的测试代码尝试了相同的结果。它与软件公司提供的样例有效载荷数据更接近: 我所尝试的
可能重复:< br >什么是复制省略和返回值优化? 我很难理解为什么在下面的代码中没有调用复制构造函数。 有人能解释一下为什么只调用构造函数,不调用复制构造函数吗?< br >谢谢。
我有一个C++实验室,问题是:用户应该为X输入一个值(X是所持有的测试数)。如果x<15,程序不计算任何东西。如果X在16和30之间,程序应计算C=1.0/10.0*(24a);如果X>30,程序应计算C=0.15(24*a)。我的multiple if代码可以工作,但是当我输入X的值时,方程没有解出。有人知道吗??
在JavaScript中,我按住两个键,并且被完美触发。当我释放其中一个键时,被触发。到目前为止一切都很好。但是我仍然按住一个键,那么为什么没有被触发呢?我需要在我的游戏中发生这种情况。我做错了什么吗?这是预期的反应吗?有什么解决办法吗?