service内定义枚举其他service怎么调用

service内定义枚举其他service怎么调用,第1张

service内定义枚举其他service怎么调用

可以通过在其他service中实例化该枚举,然后调用相应的枚举方法。代码如下:

```java

// 在其他service中实例化该枚举

MyEnum myEnum = MyEnumvalueOf("VALUE1"); //根据字符串来得到对应的值

// 调用相应的枚举方法

myEnumgetValue(); //获取对应值

myEnumgetDescription(); //获取对应文本信息

```

1、添加util方法:

package comhzcutil;

import orgspringframeworkbeansBeansException;

import orgspringframeworkcontextApplicationContext;

import orgspringframeworkcontextApplicationContextAware;

/

普通类调用Spring注解方式的Service层bean

Created by HZC on 2015/10/21

/

public class SpringBeanFactoryUtils implements ApplicationContextAware {

private static ApplicationContext appCtx;

/

此方法可以把ApplicationContext对象inject到当前类中作为一个静态成员变量。

@param applicationContext ApplicationContext 对象

@throws BeansException

@author hzc

/

public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {

appCtx = applicationContext;

}

/

获取ApplicationContext

@return

@author hzc

/

public static ApplicationContext getApplicationContext() {

return appCtx;

}

/

这是一个便利的方法,帮助我们快速得到一个BEAN

@param beanName bean的名字

@return 返回一个bean对象

@author hzc

/

public static Object getBean(String beanName) {

return appCtxgetBean(beanName);

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

2、在spring的配置文件xml中添加

<bean id="springBeanFactoryUtils" class="comhaierutilSpringBeanFactoryUtils"/>

1

1

3、service方法

package comhzcserviceimpl;

import orgslf4jLogger;

import orgslf4jLoggerFactory;

import orgspringframeworkstereotypeService;

import orgspringframeworktransactionannotationTransactional;

import javaxannotationResource;

import javamathBigDecimal;

import javautilDate;

import javautilList;

/

Created by HZC on 2015/10/20

/

@Service("ckPayoffService")

public class CKPayoffServiceImpl implements ICKPayoffOrderService {

private static final Logger log = LoggerFactorygetLogger(CKPayoffServiceImplclass);

/

测试

@author HZC

@createDate 2015-10-21

/

@Override

@Transactional

public void calculatePayoff() {

Systemoutprintln("--------------------------gogogogogo---------------");

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

4、使用

CKPayoffServiceImpl ckps = (CKPayoffServiceImpl) SpringBeanFactoryUtilsgetBean("ckPayoffService");

ckpscalculatePayoff();

1

2

1

2

在普通类中就可以调用service实例方法了,执行calculatePayoff方法,打印“————————–gogogogogo—————”

1 可以通过ApplicationContext的实例来查找。

2 ApplicationContext 的实例 可以通过实现 一个ApplicationContextAware接口,并将实现ApplicationContextAware接口的类做为一个Bean, Spring在装配过程中,会装配ApplicationContext。

3你的listener启动的顺序,应该晚于spring的listener启动。

对于很多服务来说,在同一个服务器上只能运行一个实例,那么通过什么方法来保证程序同一时刻只有一个实例运行呢?通过编写shell脚本来管理程序的启动、停止是个不错的方法。在启动时,shell脚本会创建进程标识文件(存储正在运行实例的pid)以表明已经有实例在运行,如果文件已存在,则说明已有实例在运行,不需要做任何事;在退出时,shell脚本会删除进程标识文件,表明没有实例运行。

shell脚本管理方法在应用程序之上再包了一层,那么能不能直接在程序开始运行时自己判断是否有实例在运行呢,答案是肯定的。原理其实差不多,还是要借助公用资源---文件,当然不仅仅是文件而已,还需要文件锁的支持。大致思路是这样的:程序在开始运行时对特定文件进行加锁(不存在则创建),如果加锁成功,则实例开始运行;如锁已经被占有,则说明已经有实例在运行,则程序直接退出;另外在实例运行完毕后对文件的锁也随着丢掉了。这样就能保证每次只有一个程序实例在运行。

具体步骤如下:

1. 打开特定文件(如/var/run/mydaemonpid),如不存在则创建之;

2. 使用fcntl对文件整个区域加劝告锁。

3. 如果加锁成功,则继续执行后续代码,并将pid写入文件;如加锁不成功,说明已经有实例在运行,直接退出。

实现示例:

#include <stdioh>

#include <stdlibh>

#include <unistdh>

#include <fcntlh>

#include <printfh>

#include <stringh>

#include <errnoh>

#include <sys/stath>

#define LOCKFILE "/var/run/mydaemonpid"

#define LOCKMODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)

/ set advisory lock on file /

int lockfile(int fd)

{

struct flock fl;

fll_type = F_WRLCK; / write lock /

fll_start = 0;

fll_whence = SEEK_SET;

fll_len = 0; //lock the whole file

return(fcntl(fd, F_SETLK, &fl));

}

int already_running(const char filename)

{

int fd;

char buf[16];

fd = open(filename, O_RDWR | O_CREAT, LOCKMODE);

if (fd < 0) {

printf("can't open %s: %m\n", filename);

exit(1);

}

/ 先获取文件锁 /

if (lockfile(fd) == -1) {

if (errno == EACCES || errno == EAGAIN) {

printf("file: %s already locked", filename);

close(fd);

return 1;

}

printf("can't lock %s: %m\n", filename);

exit(1);

}

/ 写入运行实例的pid /

ftruncate(fd, 0);

sprintf(buf, "%ld", (long)getpid());

write(fd, buf, strlen(buf) + 1);

return 0;

}

int main(int argc, char argv[])

{

if (already_running(LOCKFILE))

return 0;

/ 在这里添加工作代码 /

printf("start main\n");

sleep(100);

printf("main done!\n");

exit(0);

}

转载

(1)ActivityManagerService 创建并初始化 BatteryStatsService,并传入耗电量记录文件batterystatsbin;

(2)BatteryStatsService 在内部创建 BatteryStatsImpl 实例,并传入耗电量记录文件batterystatsbin;

(3)ActivityManagerService 执行 mBatteryStatsServicegetActiveStatistics()readLocked();导致 BatteryStatsService 的 BatteryStatsImpl 加载batterystatsbin数据;

(4)在PowerUsageSummary计算App耗电量时,PowerUsageSummary从BatteryStatsService 中获取BatteryStatsImpl 实例,从而获得App的相关数据。

首先, 你要先把你的WS服务启动起来,就是>

以上就是关于service内定义枚举其他service怎么调用全部的内容,包括:service内定义枚举其他service怎么调用、spring基于注解的普通类怎么调用@Services注解的service方法、各位朋友们,在用spring注解时,listener中怎么获取注解的@service,谢谢啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9331562.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存