最近在研究源码的时候,碰到了一个自己没有见到的注解,经过研究发现是Java自己的注解,具体代码如下:
public class MasterServer implements IStoppable {
/**
* master server startup, not use web service
*
* @param args arguments
*/
public static void main(String[] args) {
Thread.currentThread().setName(Constants.THREAD_NAME_MASTER_SERVER);
new SpringApplicationBuilder(MasterServer.class).web(WebApplicationType.NONE).run(args);
}
/**
* run master server
*/
@PostConstruct
public void run() {
// init remoting server
NettyServerConfig serverConfig = new NettyServerConfig();
serverConfig.setListenPort(masterConfig.getListenPort());
this.nettyRemotingServer = new NettyRemotingServer(serverConfig);
this.nettyRemotingServer.registerProcessor(CommandType.TASK_EXECUTE_RESPONSE, new TaskResponseProcessor());
this.nettyRemotingServer.registerProcessor(CommandType.TASK_EXECUTE_ACK, new TaskAckProcessor());
this.nettyRemotingServer.registerProcessor(CommandType.TASK_KILL_RESPONSE, new TaskKillResponseProcessor());
this.nettyRemotingServer.start();
}
@PostConstruct是Java自己的注解。
Java中该注解的说明:@PostConstruct该注解被用来修饰一个非静态的void()方法。
被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。
PostConstruct在构造函数之后执行,init()方法之前执行。
通常我们会是在Spring框架中使用到@PostConstruct注解 该注解的方法在整个Bean初始化中的执行顺序:
Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释的方法)
从Java EE5规范开始,Servlet中增加了两个影响Servlet生命周期的注解,
@PostConstruct和@PreDestroy,这两个注解被用来修饰一个非静态的void()方法。写法有如下两种方式:
@PostConstruct
public void someMethod(){}
或者
public @PostConstruct void someMethod(){}
被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。
PostConstruct在构造函数之后执行,init()方法之前执行。
PreDestroy()方法在destroy()方法知性之后执行
PostConstruct注释规则
1. 除了拦截器这个特殊情况以外,其他情况都不允许有参数,否则spring框架会报IllegalStateException;而且返回值要是void,
但实际也可以有返回值,至少不会报错,只会忽略
2. 方法随便你用什么权限来修饰,public、protected、private都可以,反正功能是由反射来实现
3. 方法不可以是static的,但可以是final的
相关推荐
1. @PostConstruct:此注解用于标记一个方法,表示该方法会在对象被创建并注入所有依赖后立即调用,用于执行初始化操作。这对于依赖注入的管理非常有用,尤其是在Spring框架中。 2. @PreDestroy:与@PostConstruct...
它在无状态和有状态会话bean中具有不同的用途,但随着EJB规范的演进,现代EJB开发更倾向于使用`@PostConstruct`注解来实现相同的功能,提供更清晰的代码结构。理解和掌握EJB的生命周期以及初始化方法对于Java EE...
`InitializingBean`是Spring框架早期版本中广泛使用的初始化回调接口,虽然现在推荐使用`@PostConstruct`注解,但`InitializingBean`仍然在一些旧项目中存在。理解这个接口的工作原理以及如何正确使用它,对于深入...
5. **Method Execution**:`@PostConstruct` 和 `@PreDestroy` 注解分别标识初始化方法和销毁方法,它们会在bean生命周期的特定阶段执行。 6. **Property Injection**:`@Value` 注解可以用来注入静态值,包括字符...
Spring提供了多种方式来自定义初始化过程,如实现InitializingBean接口的afterPropertiesSet()方法,或者使用@PostConstruct注解的方法。此外,还可以通过@Bean注解的initMethod属性指定初始化方法。 4. **作用域**...
6. `@PostConstruct` 和 `@PreDestroy`:这两个注解标记方法在bean初始化后和销毁前执行,类似于XML配置中的 `<init-method>` 和 `<destroy-method>`。 7. `@Configuration` 和 `@Bean`:这两个注解用于替代传统的...
在Java企业级应用开发中,Enterprise JavaBeans (EJB) 是一种核心组件,它提供了用于构建分布式、事务处理和...通过研究这个实例,你可以更好地掌握EJB的初始化机制,并为将来处理更复杂的企业级项目打下坚实的基础。
8. **JSR-250规范支持**:Spring 2.5实现了JSR-250规范,提供了诸如`@PostConstruct`、`@PreDestroy`、`@Resource`等注解,使得Spring与Java EE平台的集成更加紧密。 9. **国际化和本地化**:Spring 2.5提供了对...
在你研究的项目中,这些技术结合使用,实现了基于注解的灵活配置,包括增删改查和分页功能。这表明你已经掌握了Spring MVC和Hibernate的基本用法,以及如何通过注解优化代码结构和提高开发效率。在实际应用中,这些...
标题中的“Spring注解”指的是Spring框架中广泛使用的元数据注解,...通过深入研究Spring框架的源码,可以更好地理解注解的工作原理以及它们如何与Spring容器交互,这对于提升个人技术水平和解决实际问题非常有帮助。
Spring框架是Java开发中不可或缺的一部分,它以其强大的依赖注入(DI)和面向切面编程(AOP)功能而闻名。本教程将深入讲解Spring的注解方式,...Demo9可能包含了这些注解的示例代码,建议下载并逐一研究,以加深理解。
5. **JSR-250集成**:Spring 2.5集成了JSR-250规范,引入了如@PostConstruct、@PreDestroy等注解,这些注解提供了声明生命周期回调的方法。 6. **Java配置的支持**:虽然Spring 2.5并没有完全引入Java配置,但它为...
Spring 2.5开始支持JSR-250规范,引入了如`@PostConstruct`、`@PreDestroy`、`@Resource`等注解,增强了与Java EE的兼容性。 8. **容器改进** Spring 2.5的IoC容器进行了优化,提高了性能,并支持XML配置的简化,...
- 开发者可以通过实现InitializingBean接口的afterPropertiesSet()方法或使用@PostConstruct注解定义初始化逻辑,通过DisposableBean接口的destroy()方法或@PreDestroy注解定义销毁逻辑。 4. **IoC容器** - IoC...
5. **生命周期注解**:如`@PostConstruct`和`@PreDestroy`,分别标记在初始化和销毁bean的方法上,使开发者能自定义bean的生命周期行为。 6. **AOP注解**:Spring的面向切面编程(AOP)也支持注解,如`@Aspect`定义...
Spring框架是Java开发中广泛应用的一个开源框架,以其强大的依赖...通过研究这个压缩包中的代码和配置,你可以深入理解Spring的依赖注入、面向切面编程以及Bean的管理,为成为一名熟练的Spring开发者打下坚实的基础。
- 可以通过实现InitializingBean、DisposableBean接口或使用@PostConstruct、@PreDestroy注解来干预生命周期方法。 - 通过BeanDefinition可以自定义bean的行为,如scope(单例或多例)、lazy-init(延迟加载)等。...
7. **JSR-250规范支持**:Spring 2.5开始支持JSR-250规范,例如@PostConstruct和@PreDestroy注解,用于标记初始化和销毁方法。 8. **Spring Expression Language (SpEL)**:这是一个强大的表达式语言,用于在运行时...
3. **初始化回调**:Spring调用bean的初始化方法(@PostConstruct注解的方法或init-method属性指定的方法)。 4. **正常使用**:bean现在可以被应用程序使用了。 5. **销毁回调**:当容器关闭时,Spring会调用bean的...