Spring——Bean management-annotation method for attribute injection

What annotations does Spring provide for creating objects in Bean management?

@Component: normal

@Service: business logic layer

@Controller:controller层

@Repository: dao layer

Why use annotations?

Simplify the development in xml mode, and only need annotations to complete the configuration in the configuration file

How to achieve annotation development?

create object

component scan

package com.atguigu.spring5.ComponentScan;

import org.springframework.stereotype.Component;

/**
 * @BelongsProject: 02-Spring
 * @BelongsPackage: com.atguigu.spring5
 * @Author: dengLiMei
 * @CreateTime: 2023-02-04  16:56
 * @Description: TODO
 * @Version: 1.0
 */
//value可以不写,如果不写默认是类名的首字母小写
@Component(value = "user")
public class User {
    public void add() {
        System.out.println("aaaa");
    }
}
package com.atguigu.spring5.ComponentScan;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @BelongsProject: 02-Spring
 * @BelongsPackage: com.atguigu.spring5.ComponentScan
 * @Author: dengLiMei
 * @CreateTime: 2023-02-10  15:12
 * @Description: TODO
 * @Version: 1.0
 */
public class Main {
    public static void main(String[] args) {
        ApplicationContext content= new ClassPathXmlApplicationContext("beans.xml");
        User user = content.getBean("user", User.class);
        user.add();
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">


    <!--    开启组件扫描
    如果扫描多个包,多个包使用逗号隔开
    扫描包上层目录-->
    <!--   表示: 扫描包中的所有类-->
    <context:component-scan base-package="com.atguigu.spring5">
    </context:component-scan>

    <!--    use-default-filters=“false”:表示现在不使用默认filter,自己配置filter
    context:include-filter,设置扫描哪些内容-->
    <!--    表示:  只扫描注解带Controller的类-->
    <context:component-scan base-package="com.atguigu.spring5" use-default-filters="false">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <!--    下面配置扫描包所有内容
    context:include-filter,设置扫描哪些内容-->
    <!--    表示:  除了Controller其余类都扫描-->
    <context:component-scan base-package="com.atguigu.spring5">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>-filter
        type="" expression=""/>
    </context:component-scan>
</beans>

attribute injection

@Autowired: inject according to type

@Qualifier: Inject by name, and Autowired

@Resource: can be injected according to type or name

@Value: normal attribute injection

javax: java extension package


Fully Annotated Development

Configuration: as a configuration class, replacing the xml configuration file

package com.atguigu.spring5.SpringConfiguration;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;

@Configuration
@ComponentScan(basePackages = {"com.atguigu.spring5"})
public class SpringConfigure {

}
package com.atguigu.spring5.ScopeTest;

import org.springframework.stereotype.Component;

/**
 * @BelongsProject: 02-Spring
 * @BelongsPackage: com.atguigu.spring5.Book
 * @Author: dengLiMei
 * @CreateTime: 2023-02-08  19:28
 * @Description: TODO
 * @Version: 1.0
 */
@Component
public class Book {
    private String bname;
    private String bauthor;

    public void setBname(String bname) {
        this.bname = bname;
    }

    public void setBauthor(String bauthor) {
        this.bauthor = bauthor;
    }

    public static void main(String[] args) {
        Book book = new Book();
        book.setBname("abc");
    }

    public void testDemo() {
        System.out.println(bname + "---" + "aaa");
    }

}
package com.atguigu.spring5.SpringConfiguration;

import com.atguigu.spring5.ScopeTest.Book;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @BelongsProject: 02-Spring
 * @BelongsPackage: com.atguigu.spring5.SpringConfiguration
 * @Author: dengLiMei
 * @CreateTime: 2023-02-11  09:38
 * @Description: TODO
 * @Version: 1.0
 */
public class Main {
    public static void main(String[] args) {
//        加载配置类
        ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfigure.class);
//        创建实例
        Book book = context.getBean("book", Book.class);
//        调用方法
        book.testDemo();
    }
}

Output result:


Spring series articles:

Spring - what is it? effect? content? Design pattern used?

Spring——Bean management-xml method for attribute injection

Spring——Bean management-annotation method for attribute injection

Spring - what is IOC?

Spring - what is AOP? How to use it?

Spring - what is a transaction? Communication behavior? What are the transaction isolation levels?

Spring - Integrate junit4, junit5 usage

If you want to exchange content, please leave a message in the comment area . If this document is liked by you, please leave your likes + collection footprints to support the blogger~

Guess you like

Origin blog.csdn.net/weixin_43319713/article/details/129338389