一、一个springboot项目引入一个common公共工程,如何把common公共工程中的类扫描成javabean对象?
答:在springboot项目的启动类上加@ComponentScan({"common的包路径"})注解即可 例如:@ComponentScan({com.richway.alidubbo.*})。
二、springboot项目中创建一个util类,这个util类中的属性包含javabean对象,项目启动时如何初始化这个util类?
答:1. 将 class RedisUtil
上添加 @Component
声明其为bean组件。
2. 使用 @Autowired
注入RedisUtil
类的启动类属性(也就是上面说的javabean对象)。
3. 在 RedisUtil
中声明一个 静态的私有变量 private static RedisUtil redisUtil;
4. 添加共有的init方法,并用@PostConstruct
声明 在项目启动的时候进行执行该方法,也可以理解为在 spring 容器初始化的时候执行该方法。
public void init(){
RedisUtil
= this;
RedisUtil.redisPool
= this.redisPool
;
}
整体代码为:
@Component
public class RedisUtil
{
private RedisUtil
(){}
private static final Logger logger = LoggerFactory.getLogger (RedisUtil
.class);
@Autowired
public RedisPool
redisPool
;
private static RedisUtil redisUtil
;
@PostConstruct
public void init(){
redisUtil
= this;
redisUtil
.redisPool
= this.redisPool
;
}
三、springboot项目中创建一个util类,这个util类中的属性包含javabean对象,这个util类如何获取静态的Javabean对象?
1、 使用@PostConstruct注解
@Component
public class RedisUtil
{
@Autowired
private RedisPool r
edisPool1
;
private static RedisPool r
edisPool2
;
//@PostConstruct修饰的方法会在服务器加载Servle的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行
@PostConstruct
public void init() {
redisPool2
= r
edisPool1
;
}
public static void getJedis() {
Jedis jedis = redisPool2.getResource()
}
}