Spring笔记随笔,资源记录

使用spring纯注解开发

参考地址https://www.cnblogs.com/duanxz/p/7493276.html#top

 

 

Spring笔记随笔

一.@Configuration 的作用是代替了xml配置文件,把该类作为一个配置容器,,(这个类本身无其他作用)

@Configuration

public class TestConfiguration {

    public TestConfiguration() {

        System.out.println("TestConfiguration容器启动初始化。。。");

    }

}

 

new AnnotationConfigApplicationContext(TestConfiguration.class);

 

 

二.@Bean的作用是在配置类里的方法上,,该配置类的方法返回类型为需要返回的对象,,,,相当于配置文件中的bean属性可以返回bean对象

public class TestBean {

  

    public void sayHello() {

        System.out.println("TestBean sayHello...");

    }

 

    public String toString() {

        return "username:" + this.username + ",url:" + this.url + ",password:" + this.password;

    }

 

    public void start() {

        System.out.println("TestBean 初始化。。。");

    }

 

    public void cleanUp() {

        System.out.println("TestBean 销毁。。。");

    }

}

 

 

 

@Configuration

public class TestConfiguration {

    public TestConfiguration() {

        System.out.println("TestConfiguration容器启动初始化。。。");

    }

 

    // @Bean注解注册bean,同时可以指定初始化和销毁方法

    // @Bean(name="testBean",initMethod="start",destroyMethod="cleanUp")

    @Bean

    @Scope("prototype")

    public TestBean testBean() {

        return new TestBean();

    }

}

 

 

 

public class TestMain {

    public static void main(String[] args) {

 

        // @Configuration注解的spring容器加载方式,用AnnotationConfigApplicationContext替换ClassPathXmlApplicationContext

        ApplicationContext context = new AnnotationConfigApplicationContext(TestConfiguration.class);

 

        // 如果加载spring-context.xml文件:

        // ApplicationContext context = new

        // ClassPathXmlApplicationContext("spring-context.xml");

        

         //获取bean

        TestBean tb = (TestBean) context.getBean("testBean");

        tb.sayHello();

    }

}

 

 

 

 

 

注: 
(1)、@Bean注解在返回实例的方法上,如果未通过@Bean指定bean的名称,则默认与标注的方法名相同; 
(2)、@Bean注解默认作用域为单例singleton作用域,可通过@Scope(“prototype”)设置为原型作用域; 
(3)、既然@Bean的作用是注册bean对象,那么完全可以使用@Component、@Controller、@Service、@Ripository等注解注册bean,当然需要配置@ComponentScan注解进行自动扫描。

 

 

  • @Component组件扫描开发,相当于配置文件中配置注解扫描的作用

@Configuration//添加自动扫描注解,basePackages为TestBean包路径

@ComponentScan(basePackages = "com.dxz.demo.configuration")

public class TestConfiguration {

    public TestConfiguration() {

        System.out.println("TestConfiguration容器启动初始化。。。");

    }

 

    /*// @Bean注解注册bean,同时可以指定初始化和销毁方法

    // @Bean(name="testNean",initMethod="start",destroyMethod="cleanUp")

    @Bean

    @Scope("prototype")

    public TestBean testBean() {

        return new TestBean();

    }*/

}

 

 

 

//添加注册bean的注解@Componentpublic class TestBean {

 

    private String username;

    private String url;

    private String password;

 

 

 

 

 

 

 

 

  • 加载spring注解开发的方式

AnnotationConfigApplicationContext

 

类中加载方式

配置类的注册方式是将其传递给 AnnotationConfigApplicationContext 构造函数

public static void main(String[] args) {

 

        // @Configuration注解的spring容器加载方式,用AnnotationConfigApplicationContext替换ClassPathXmlApplicationContext

        ApplicationContext context = new AnnotationConfigApplicationContext(TestConfiguration.class);

        //获取bean

        TestBean tb = (TestBean) context.getBean("testBean");

        tb.sayHello();

    }

 

 

AnnotationConfigApplicationContext 的register 方法传入配置类来注册配置类

public static void main(String[] args) {

  ApplicationContext ctx = new AnnotationConfigApplicationContext();

  ctx.register(AppContext.class)

}

 

 

 

Web.xml加载方式

 

 

以前是使用XmlWebApplicationContext上下文来配置spring,也是指定spring配置文件的位置,XmlWebApplicationContext是web默认应用的上下文类来加载spring应用

 

 

        contextConfigLocation

        /WEB-INF/applicationContext.xml

    

    

        

            org.springframework.web.context.ContextLoaderListener

        

    

 

 

XmlWebApplicationContext是spring为web应用程序使用的默认上下文实现,所以不用显示修改这个类,,但是现在使用的是注解开发spring,所以需要使用AnnotationConfigApplicationContext类来加载spring应用,需要显示修改默认类

 

 

        contextClass

        

            org.springframework.web.context.

            support.AnnotationConfigWebApplicationContext

        

    

    

        contextConfigLocation

        

            demo.AppContext

        

    

    

        

            org.springframework.web.context.ContextLoaderListener

        

    

 

------springmvc----

 

 

    sampleServlet

    

        org.springframework.web.servlet.DispatcherServlet

    

    

        contextClass

        

            org.springframework.web.context.

            support.AnnotationConfigWebApplicationContext

        

    

    

 

 

 

 

 

 

 

  • 整合其他配置类或者配置文件

 

1.1在配置类中@Configuration添加其它spring的xml配置文件

添加注解@ImportResource(“classpath:applicationContext-configuration.xml”)

 

@Configuration

@ImportResource("classpath:applicationContext-configuration.xml")public class WebConfig {

}

 

 

 

1.2在配置类中添加其它注解类配置

添加注解@Import(TestConfigruation.class)

@Configuration

@ImportResource("classpath:applicationContext-configuration.xml")

@Import(TestConfiguration.class)

public class WebConfig {

}

 

 

 

 

 

六.@configuration嵌套(嵌套的Configuration必须是静态类)

通过配置类嵌套的配置类,达到组合多个配置类的目的。但注意内部类必须是静态类。

 

@Configuration

@ComponentScan(basePackages = "com.dxz.demo.configuration3")public class TestConfiguration {

    public TestConfiguration() {

        System.out.println("TestConfiguration容器启动初始化。。。");

    }

        @Configuration

    static class DatabaseConfig {

        @Bean

        DataSource dataSource() {

            return new DataSource();

        }

    }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(技术笔记,技术笔记)