小编Ric*_*ick的帖子

Spring Boot Logger方面

当访问特定包的类中的方法时,我在记录日志信息时遇到问题.换句话说,发生"不"记录.我甚至绝望并添加了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)

java logging aop spring aspect

15
推荐指数
1
解决办法
1万
查看次数

使用类变量与将本地变量发送到函数/方法

何时将局部变量作为参数推送到函数/方法,而不是使用类变量代替函数/方法变量.

例如,我可以有一个功能:

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++ java function object

6
推荐指数
1
解决办法
2902
查看次数

使用C#Enum标志根据其位智能值返回一组值

我知道你可以用这种方式配置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}.

请指教.


编辑:我终于搞清楚了.在下面发表我的答案.

c# enums enum-flags visual-studio-2015

5
推荐指数
1
解决办法
579
查看次数

标签 统计

java ×2

aop ×1

aspect ×1

c# ×1

c++ ×1

enum-flags ×1

enums ×1

function ×1

logging ×1

object ×1

spring ×1

visual-studio-2015 ×1