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 AOP? How to use it?
Spring - what is a transaction? Communication behavior? What are the transaction isolation levels?
Spring - Integrate junit4, junit5 usage