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;@Configurationpublic 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;@Configurationpublic 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;@Configurationpublic 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;@Configurationpublic 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;@Configurationpublic 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;public class Dog {    //  初始化办法    public void init() throws Exception {        System.out.println("=======init========");    }    // 销毁的办法    public void destroy() throws Exception {        System.out.println("=======destroy========");    }}

1.2.2.2在conffig文件中拆卸这个bean

package com.zt.spring;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic 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;@Configurationpublic 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相干技术文章或行业资讯,欢送大家关注和转发文章!