当访问特定包的类中的方法时,我在记录日志信息时遇到问题.换句话说,发生"不"记录.我甚至绝望并添加了System.out.println语句,没有运气.
我的所有类都位于org.my.package包下,即org.my.package.controller,org.my.package.model等.
这是我的Application类:
package org.my.package;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
@Configuration
@ComponentScan(basePackages = {"org.my.package.config"})
@EnableAutoConfiguration
@EnableAspectJAutoProxy
public class FirstWebAppApplication {
public static void main(String[] args) {
SpringApplication.run(FirstWebAppApplication.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的配置类:
package org.my.package.config;
import org.deloitte.javatraining.daythree.utilities.MyLogger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
@Configuration
@EnableAspectJAutoProxy
@ComponentScan(basePackages = {"org.my.package.utilities"})
public class AssetConfig {
//-----------------------------------------------------------------------------------------------------------------------
@Bean
public MyLogger myLogger(){
return new MyLogger();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的Aspect类:
package org.my.package.utilities;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; …Run Code Online (Sandbox Code Playgroud) 何时将局部变量作为参数推送到函数/方法,而不是使用类变量代替函数/方法变量.
例如,我可以有一个功能:
int DoSomething(int var)
{
if(var == -1)
return 0;
}
Run Code Online (Sandbox Code Playgroud)
或者我可以有一个类变量"_var"并在同一个函数中使用它,如下所示:
int DoSomething()
{
if(_var == -1)
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的想法是,如果我们在一些函数/方法中使用了一个类变量,DoSomething在上面的例子中调用,我应该将DoSomething函数/方法作为参数发送给类变量,这样函数就更容易了阅读和测试.
什么时候做好形式?我知道这是一个有问题的问题,但是我试图用同事来说明我的论点,他们说我会在函数/方法签名中添加更多代码,而不是保留函数/方法签名较小.
在我看来,我通过将类变量推送到相应的函数/方法来使代码更清晰,更容易维护,而不是强迫它们依赖/了解类变量的存在.
请指教.
我知道你可以用这种方式配置C#enum标志:
[Flags]
public enum MyEnum
{
Unknown = 0,
Type1 = 1,
Type2 = 2,
Type3 = 4,
Type4 = 8,
Type5 = 16
}
Run Code Online (Sandbox Code Playgroud)
一旦配置完毕,您就可以代表一组这样的枚举:
MyEnum enumerationSet = MyEnum.Type1 | MyEnum.Type2
Run Code Online (Sandbox Code Playgroud)
然后,您可以对此集进行检查,例如:
if(enumerationSet.HasFlag(MyEnum.Type1))
{
// Do something
}
Run Code Online (Sandbox Code Playgroud)
或者打印他们的值,如下:
Console.WriteLine("{0}", enumerationSet);
Run Code Online (Sandbox Code Playgroud)
哪个会打印:
Type1, Type2
Run Code Online (Sandbox Code Playgroud)
但是,我可以按相反顺序进行吗?例如,如果我知道的话
MyEnum.Type1 | MyEnum.Type2 == 3
Run Code Online (Sandbox Code Playgroud)
那我可以问MyEnum一下它的价值/类型是什么等于3?然后,我可以创建一个扩展方法(GetSet)来执行如下:
List<MyEnum> myEnumSetList = MyEnum.GetSet(3)
Run Code Online (Sandbox Code Playgroud)
返回一MyEnum组或一组值,即{1, 2}.
请指教.
编辑:我终于搞清楚了.在下面发表我的答案.