java开发两年,连Spring中bean的装配都不知道?你怎么涨薪啊
Spring
1.1.1.1 创建一个bean
package com.zt.spring;
public class MyBean {
private String userName;
private Integer userAge;
}
1.1.1.2 配置Config 配置bean
package com.zt.spring; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; @Configuration
public class MyBeanConfig {
// 和xml中配置文件的bean的标签是一样的
@Bean(name = "beanName")
public MyBean createBean(){
return new MyBean();
}
}
1.1.1.3 配置bean 单例还是多例的
package com.zt.spring; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope; @Configuration
public class MyBeanConfig { @Bean(name = "beanName")
// 默认值是多例的 xml的方式可以在bean的标签上面 设置这个参数
@Scope("prototype")
public MyBean createBean(){
return new MyBean();
} }
1.1.1.4 获取上文,获取bean
package com.zt.spring;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class App {
public static void main(String[] args) {
// 获取上下文
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyBeanConfig.class);
// 通过bean的那么获取bean
System.out.println(context.getBean("beanName"));
// 获取bean的class文件获取
System.out.println(context.getBean(MyBean.class));
context.close();
}
}
1.1.2 通过FactoryBean实现bena的装配
1.1.2.1 创建一个bean
package com.zt.spring;
public class Car {
}
1.1.2.2 配置Config 配置bean
package com.zt.spring; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; @Configuration
public class MyBeanConfig { @Bean
public CarFactoryBean createRunnableFactoryBean() {
return new CarFactoryBean();
} }
1.1.2.3 配置FactoryBean 生产bean
package com.zt.spring;
import org.springframework.beans.factory.FactoryBean;
public class CarFactoryBean implements FactoryBean<Car> {
//获取到对应的实体
@Override
public Car getObject() throws Exception {
return new Car();
}
// 返回的额对应的是class文件
@Override
public Class<?> getObjectType() {
return Car.class;
}
//配置是不是单例
@Override
public boolean isSingleton() {
return true;
}
}
1.1.2.4 获取上文,获取bean
package com.zt.spring;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class App {
public static void main(String[] args) {
// 获取上下文
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyBeanConfig.class);
// 通过FactoryBean 创建的bean
System.out.println(context.getBean(Car.class));
// 通过name获取car的实体
System.out.println(context.getBean("createRunnableFactoryBean"));
context.close();
}
}
1.1.3 通过另外一种工工厂模式实现bena的装配
1.1.3.1 创建一个bean
package com.zt.spring;
public class Jeep {
}
1.1.3.2 配置Config 配置bean
package com.zt.spring; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; @Configuration
public class MyBeanConfig { @Bean
public JeepFactory createJeepFactory() {
return new JeepFactory();
} @Bean
public Jeep createJeep(JeepFactory factory) {
return factory.creat();
}
}
1.1.3.3 创建 Factory 实现构建方法
package com.zt.spring;
public class JeepFactory {
public Jeep creat() {
return new Jeep();
}
}
1.1.3.4 获取上文,获取bean
package com.zt.spring;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class App {
public static void main(String[] args) {
// 获取上下文
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyBeanConfig.class);
System.out.println(context.getBean("createJeep"));
System.out.println(context.getBean(Jeep.class));
context.close();
}
}
1.2 spring中bean的销毁方法
1.2.1 调用spring自己的初始化和销毁的方法
1.2.1.1 创建一个bean
并且继承InitializingBean, DisposableBean ,实现afterPropertiesSet,destroy方法
package com.zt.spring; import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean; public class User implements InitializingBean, DisposableBean { @Override
public void afterPropertiesSet() throws Exception {
System.out.println("=======afterPropertiesSet========");
} @Override
public void destroy() throws Exception {
System.out.println("=======destroy========");
}
}
1.2.1.2在conffig文件中装配这个bean
package com.zt.spring; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; @Configuration
public class MyBeanConfig { @Bean
public User createUser() {
return new User();
}
}
1.2.1.3 获取上下文
package com.zt.spring;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class App {
public static void main(String[] args) {
// 获取上下文
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyBeanConfig.class);
System.out.println(context.getBean(User.class));
context.close();
}
}
1.2.2 调用自定义初始化和销毁的方法
1.2.2.1 创建一个bean
自定义init,destroy方法
package com.zt.spring; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; @Configuration
public class MyBeanConfig { @Bean(initMethod = "init",destroyMethod = "destroy")
public Dog createDog() {
return new Dog();
}
}
1.2.2.2在conffig文件中装配这个bean
package com.zt.spring; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; @Configuration
public class MyBeanConfig { @Bean(initMethod = "init",destroyMethod = "destroy")
public Dog createDog() {
return new Dog();
}
}
1.2.2.3 获取上下文
package com.zt.spring;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class App {
public static void main(String[] args) {
// 获取上下文
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyBeanConfig.class);
System.out.println(context.getBean(Dog.class));
context.close();
}
}
1.2.3 调用自定义并且注解初始化和销毁的方法
1.2.3.1 创建一个bean
自定义init,destroy方法 在加上注解放 @PostConstruct, @PreDestroy的方式实现
package com.zt.spring; import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy; public class UserInfo { @PostConstruct
public void afterPropertiesSet() throws Exception {
System.out.println("=======afterPropertiesSet========");
} @PreDestroy
public void destroy() throws Exception {
System.out.println("=======destroy========");
}
}
1.2.3.2在conffig文件中装配这个bean
package com.zt.spring; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; @Configuration
public class MyBeanConfig {
@Bean
public UserInfo createUserInfo() {
return new UserInfo();
}
}
1.2.2.3 获取上下文
package com.zt.spring;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class App {
public static void main(String[] args) {
// 获取上下文
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyBeanConfig.class);
System.out.println(context.getBean(UserInfo.class));
context.close();
}
}
1.4 pom.文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com..zt</groupId>
<artifactId>spring</artifactId>
<version>1.0-SNAPSHOT</version> <properties>
<project.build.sourceEncodding>UTF-8</project.build.sourceEncodding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties> <dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.20.RELEASE</version>
</dependency>
</dependencies> </project>
最后
感谢你看到这里,说的都是自己的一些看法和见解,如有不对,请指正!觉得文章对你有帮助的话不妨给我点个赞,每天都会分享java相关技术文章或行业资讯,欢迎大家关注和转发文章!
java开发两年,连Spring中bean的装配都不知道?你怎么涨薪啊的更多相关文章
- Spring 中Bean的装配方式
最近又买了一本介绍SSM框架的书,是由黑马程序员编写的,书上讲的很好理解,边看边总结一下.主要总结一下bean的装配方式. Bean的装配可以理解为依赖系统注入,Bean的装配方式即Bean依赖注入的 ...
- Spring笔记2——Spring中Bean的装配
1.引言 Spring中,对象无需自己负责查找或创建与其关联的其他对象,而是由容器负责把需要相互协作的对象引用赋予各个对象.创建应用对象之间的协作关系的行为通常称为装配(Wiring),这也是依赖注入 ...
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring中Bean的作用域
作用域的种类 Spring 容器在初始化一个 Bean 的实例时,同时会指定该实例的作用域.Spring3 为 Bean 定义了五种作用域,具体如下. 1)singleton 单例模式,使用 sing ...
- Spring中Bean的装配方式
一.基于xml的装配 Student.java package com.yh; public class Student implements People { public void breath( ...
- spring中 Bean的装配 Bean后处理器
- 浅析Spring中bean的作用域
一.前言 刚刚花了点时间,阅读了一下Spring官方文档中,关于bean的作用域这一块的内容.Spring-4.3.21官方文档中,共介绍了七种bean作用域,这篇博客就来简单介绍一下这七种作用域 ...
- JAVA面试题:Spring中bean的生命周期
Spring 中bean 的生命周期短暂吗? 在spring中,从BeanFactory或ApplicationContext取得的实例为Singleton,也就是预设为每一个Bean的别名只能维持一 ...
- Spring中bean的配置
先从IOC说起,这个概念其实是从我们平常new一个对象的对立面来说的,我们平常使用对象的时候,一般都是直接使用关键字类new一个对象,那这样有什么坏处呢?其实很显然的,使用new那么就表示当前模块已经 ...
- (转)Spring中Bean的命名问题(id和name区别)及ref和idref之间的区别
Spring中Bean的命名 1.每个Bean可以有一个id属性,并可以根据该id在IoC容器中查找该Bean,该id属性值必须在IoC容器中唯一: 2.可以不指定id属性,只指定全限定类名,如: & ...
随机推荐
- 智能DNS的实现
网络路径远,导致用户访问延迟 各个运营商之间的带宽有阀口. GSLB 就近的返回服务器的地址 CDN网络 内容分发网络 Content Delivery Network CND服务商 阿里 腾讯 蓝汛 ...
- 变量分割技术、判别学习(discriminative learning method)
基于模型的优化方法(model-based optimization method): 小波变换.卡尔曼滤波.中值滤波.均值滤波: 优点:对于处理不同的逆问题都非常灵活:缺点:为了更好的效果而采用各种 ...
- 【0】TensorFlow光速入门-序
本文地址:https://www.cnblogs.com/tujia/p/13863181.html 序言: 对于我这么一个技术渣渣来说,想学习TensorFlow机器学习,实在是太难了: 百度&qu ...
- Linux下的django项目02
3.创建user模型 3.1 创建用户模型user 第一步 django-admin startproject syl 第二 在syl下创建apps文件包并标记根源 cd 到apps下并进行以下步骤 ...
- AQS源码深入分析之共享模式-你知道为什么AQS中要有PROPAGATE这个状态吗?
本文基于JDK-8u261源码分析 本篇文章为AQS系列文的第二篇,前文请看:[传送门] 第一篇:AQS源码深入分析之独占模式-ReentrantLock锁特性详解 1 Semaphore概览 共享模 ...
- mns: Money Never Sleeps! 自己开发的一款 IDEA 插件介绍.
一边敲代码, 一边关注股票/基金行情, 还不怕同事盯到自己的屏幕! 对于一个关注股市跟基金的研发人员来说, 莫过于一天到晚写代码, 而不能及时的查看股市行情跟基金走势了吧. 写代码的时候比较容易忘记看 ...
- mysql 两主一从环境搭建(5.7.24)
搭建说明 两主一从,从本质上说,只不过是机器 master-a 和 master-b 互为主从机(热备),然后通过 keepalived 进行高可用配置,使得在同一时间内只会有一台对外提供服务,实现单 ...
- 聊一聊C#基本类型
C#基本类型 闲来无事,重新温习了下C#基本类型.以下讲的基本类型主要是包括基本的值类型类型和string.struct和class不包含其中. C#基本类型------值类型: bool,byte, ...
- 如何理解直播APP源码开发中的音视频同步
视频 直播APP源码的视频的播放过程可以简单理解为一帧一帧的画面按照时间顺序呈现出来的过程,就像在一个本子的每一页画上画,然后快速翻动的感觉. 但是在实际应用中,并不是每一帧都是完整的画面,因为如果直 ...
- first day for my bolg
做为一名毕业不久的兢兢业业的前端小白,傻到一直用word做笔记,还有各种手抄(捂脸),下定决心以后改用博客,据说大神们都是这么做的!嘿嘿,先把各种笔记腾上来,内容实在惨不忍睹各种智商感人,希望不要有人 ...