加入 下面代码到子模块
@Inject
private Dao dao;
然后随便访问哪个入口 就报错
@Api("time")
@At("/time")
@IocBean(create="init", depose="depose")
public class TimeModule {
@Inject
protected PropertiesProxy conf;
@Inject
private Dao dao;
@ApiOperation(value = "获取当前毫秒数", notes = "服务器端的时间", httpMethod="GET", response=Long.class)
@At
@Ok("raw")
public long now() {
return System.currentTimeMillis();
}
public void init() {}
public void depose() {}
}
ioc.js
var ioc={
conf : {
type : "org.nutz.ioc.impl.PropertiesProxy",
fields : {
paths : ["db.properties"]
}
},
fileSqlManager : {
type: "org.nutz.dao.impl.FileSqlManager"
args: ["sqls"]
},
dataSource : {
type : "org.nutz.dao.impl.SimpleDataSource",
events : {
depose : "close"
},
fields : {
driverClassName :{ java : "$conf.get('db-driver')"},
jdbcUrl : {java :"$conf.get('db-url')"},
username : {java :"$conf.get('db-username')"},
password : {java :"$conf.get('db-password')"},
}
}
,
dao : {
type : 'org.nutz.dao.impl.NutDao',
args : [ {refer : "dataSource"} ,{refer:"fileSqlManager"}]
}}
但是单元测试可以通过,还能用dao查询
[INFO ] 15:12:08.461 com.boyuan.MainLauncher.init(MainLauncher.java:29) - 服务初始化完毕
[INFO ] 15:12:08.462 org.nutz.boot.NbApp._run(NbApp.java:196) - NB started : 1483ms
[DEBUG] 15:12:18.260 org.nutz.mvc.impl.UrlMappingImpl.get(UrlMappingImpl.java:101) - Found mapping for [GET] path=/queryAll : MapModule.queryAll(MapModule.java:24)
[DEBUG] 15:12:18.261 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:163) - Get 'mapModule'<class com.boyuan.module.MapModule>
[DEBUG] 15:12:18.262 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:189) - >> Load definition name=mapModule
[DEBUG] 15:12:18.262 org.nutz.ioc.loader.combo.ComboIocLoader.printFoundIocBean(ComboIocLoader.java:197) - Found IocObject(mapModule) in AnnotationIocLoader(packages=[com.boyuan])
[DEBUG] 15:12:18.262 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:220) - >> Make...'mapModule'<class com.boyuan.module.MapModule>
[DEBUG] 15:12:18.262 org.nutz.ioc.impl.ScopeContext.save(ScopeContext.java:64) - Save object 'mapModule' to [app]
[DEBUG] 15:12:18.263 org.nutz.ioc.aop.impl.DefaultMirrorFactory.getMirror(DefaultMirrorFactory.java:70) - Load class com.boyuan.module.MapModule without AOP
[DEBUG] 15:12:18.265 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:163) - Get 'dao'<interface org.nutz.dao.Dao>
[DEBUG] 15:12:18.265 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:189) - >> Load definition name=dao
[DEBUG] 15:12:18.265 org.nutz.ioc.loader.combo.ComboIocLoader.printFoundIocBean(ComboIocLoader.java:197) - Found IocObject(dao) in JsonLoader(paths=[ioc/])
[DEBUG] 15:12:18.265 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:220) - >> Make...'dao'<interface org.nutz.dao.Dao>
[DEBUG] 15:12:18.265 org.nutz.ioc.impl.ScopeContext.save(ScopeContext.java:64) - Save object 'dao' to [app]
[DEBUG] 15:12:18.266 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:163) - Get 'dataSource'<>
[DEBUG] 15:12:18.266 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:189) - >> Load definition name=dataSource
[DEBUG] 15:12:18.267 org.nutz.ioc.loader.combo.ComboIocLoader.printFoundIocBean(ComboIocLoader.java:197) - Found IocObject(dataSource) in JsonLoader(paths=[ioc/])
[DEBUG] 15:12:18.267 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:220) - >> Make...'dataSource'<>
[DEBUG] 15:12:18.267 org.nutz.ioc.impl.ScopeContext.save(ScopeContext.java:64) - Save object 'dataSource' to [app]
[DEBUG] 15:12:18.268 org.nutz.ioc.aop.impl.DefaultMirrorFactory.getMirror(DefaultMirrorFactory.java:70) - Load class org.nutz.dao.impl.SimpleDataSource without AOP
[WARN ] 15:12:18.487 org.nutz.dao.impl.SimpleDataSource.<init>(SimpleDataSource.java:34) - SimpleDataSource is NOT a Connection Pool, So it is slow but safe for debug/study
[DEBUG] 15:12:18.493 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:163) - Get 'conf'<>
[INFO ] 15:12:18.494 org.nutz.lang.inject.InjectBySetter.inject(InjectBySetter.java:61) - Fail to value by setter
java.lang.NullPointerException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.nutz.lang.Lang.loadClass(Lang.java:2074)
at org.nutz.dao.impl.SimpleDataSource.setDriverClassName(SimpleDataSource.java:52)
at org.nutz.dao.impl.SimpleDataSource$FM$setDriverClassName$ab706b0cf40b3b24094a0af312e173b9.invoke(SimpleDataSource.java)
at org.nutz.lang.inject.InjectBySetter.inject(InjectBySetter.java:51)
at org.nutz.ioc.weaver.FieldInjector.inject(FieldInjector.java:33)
at org.nutz.ioc.weaver.DefaultWeaver.fill(DefaultWeaver.java:67)
at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:138)
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:238)
at org.nutz.ioc.val.ReferValue.get(ReferValue.java:24)
at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:64)
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:238)
at org.nutz.ioc.val.ReferTypeValue.get(ReferTypeValue.java:60)
at org.nutz.ioc.weaver.FieldInjector.inject(FieldInjector.java:32)
at org.nutz.ioc.weaver.DefaultWeaver.fill(DefaultWeaver.java:67)
at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:138)
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:238)
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:268)
at org.nutz.mvc.impl.processor.ModuleProcessor.process(ModuleProcessor.java:116)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.EncodingProcessor.process(EncodingProcessor.java:27)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.UpdateRequestAttributesProcessor.process(UpdateRequestAttributesProcessor.java:15)
at org.nutz.mvc.impl.NutActionChain.doChain(NutActionChain.java:44)
at org.nutz.mvc.impl.ActionInvoker.invoke(ActionInvoker.java:67)
at org.nutz.mvc.ActionHandler.handle(ActionHandler.java:31)
at org.nutz.mvc.NutFilter.doFilter(NutFilter.java:202)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
at org.nutz.mvc.WhaleFilter.doFilter(WhaleFilter.java:159)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:206)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle(Server.java:530)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:347)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:256)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:247)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:140)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:382)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:708)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:626)
at java.lang.Thread.run(Thread.java:748)
[DEBUG] 15:12:18.496 org.nutz.ioc.impl.ScopeContext.remove(ScopeContext.java:84) - Remove object 'dataSource' from [app]
[DEBUG] 15:12:18.496 org.nutz.ioc.impl.ScopeContext.remove(ScopeContext.java:84) - Remove object 'dao' from [app]
[DEBUG] 15:12:18.496 org.nutz.ioc.impl.ScopeContext.remove(ScopeContext.java:84) - Remove object 'mapModule' from [app]
[WARN ] 15:12:18.497 org.nutz.mvc.impl.processor.FailProcessor.process(FailProcessor.java:28) - Error@/queryAll :
org.nutz.ioc.IocException: IocBean[mapModule] throw Exception when creating
at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:152)
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:238)
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:268)
at org.nutz.mvc.impl.processor.ModuleProcessor.process(ModuleProcessor.java:116)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.EncodingProcessor.process(EncodingProcessor.java:27)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.UpdateRequestAttributesProcessor.process(UpdateRequestAttributesProcessor.java:15)
at org.nutz.mvc.impl.NutActionChain.doChain(NutActionChain.java:44)
at org.nutz.mvc.impl.ActionInvoker.invoke(ActionInvoker.java:67)
at org.nutz.mvc.ActionHandler.handle(ActionHandler.java:31)
at org.nutz.mvc.NutFilter.doFilter(NutFilter.java:202)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
at org.nutz.mvc.WhaleFilter.doFilter(WhaleFilter.java:159)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:206)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
at org.eclipse.jetty.server.Server.handle(Server.java:530)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:347)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:256)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:247)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:140)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:382)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:708)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:626)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.RuntimeException: IocBean[mapModule] fail at field=[dao]
at org.nutz.ioc.weaver.FieldInjector.inject(FieldInjector.java:40)
at org.nutz.ioc.weaver.DefaultWeaver.fill(DefaultWeaver.java:67)
at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:138)
... 44 more
Caused by: org.nutz.ioc.IocException: IocBean[dao -> dataSource] throw Exception when creating
at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:152)
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:238)
at org.nutz.ioc.val.ReferValue.get(ReferValue.java:24)
at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:64)
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:238)
at org.nutz.ioc.val.ReferTypeValue.get(ReferTypeValue.java:60)
at org.nutz.ioc.weaver.FieldInjector.inject(FieldInjector.java:32)
... 46 more
Caused by: java.lang.RuntimeException: IocBean[dataSource] fail at field=[driverClassName]
at org.nutz.ioc.weaver.FieldInjector.inject(FieldInjector.java:40)
at org.nutz.ioc.weaver.DefaultWeaver.fill(DefaultWeaver.java:67)
at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:138)
... 52 more
Caused by: java.lang.RuntimeException: Fail to set 'null'[ null ] by setter org.nutz.dao.impl.SimpleDataSource.'setDriverClassName()' because [java.lang.NullPointerException]: null
at org.nutz.lang.Lang.wrapThrow(Lang.java:168)
at org.nutz.lang.inject.InjectBySetter.inject(InjectBySetter.java:62)
at org.nutz.ioc.weaver.FieldInjector.inject(FieldInjector.java:33)
... 54 more
Caused by: java.lang.NullPointerException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.nutz.lang.Lang.loadClass(Lang.java:2074)
at org.nutz.dao.impl.SimpleDataSource.setDriverClassName(SimpleDataSource.java:52)
at org.nutz.dao.impl.SimpleDataSource$FM$setDriverClassName$ab706b0cf40b3b24094a0af312e173b9.invoke(SimpleDataSource.java)
at org.nutz.lang.inject.InjectBySetter.inject(InjectBySetter.java:51)
... 55 more