标签:Spring Component 扫描 ComponentScan Bean User org import
一、通过扫描装配你的Bean
如果一个个的Bean使用注解@Bean注入Spring IoC容器中,那将是一件很麻烦的事情。好在Spring还允许我们进行扫描装配Bean到IoC容器中,对于扫描装配而言使用的注解是@Component和@ComponentScan。
@Component是标明哪个类被扫描进入Spring IoC容器
@ComponentScan则是标明采用何种策略去扫描装配Bean。
package config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component("user")
@Data
public class UserTest {
@Value("1")
private Long id;
@Value("user_name_1")
private String userName;
@Value("note_1")
private String note;
}
注意,这里使用了lo’mbok可以帮忙自动生成get和set方法。如果不熟悉这个插件的可以手动实现get和set方法。
package config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import pojo.User;
@Configuration
@ComponentScan
public class AppConfig {
}
这里加入了@ComponentScan,意味着它会进行扫描,但是它只会扫描类AppConfig所在的当前包和其子包,之前把User.java移到包config就是这个原因。
测试
package config;
import org.apache.catalina.core.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import pojo.User;
public class IoCTest {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
User user = ctx.getBean(User.class);
System.out.println(user.getId());
}
}
这样就能够运行了。然而为了使得User类能够被扫描,上面我们把它迁移到了本不该放置它的配置包,这样显然就不太合理了。为了更加合理,@ComponentScan还允许我们自定义扫描的包。下面探讨它的配置项。
首先可以通过配置项basePackages定义扫描的包名,在没有定义的情况下,它只会扫描当前包和其子包下的路径;还可以通过basePackageClasses定义扫描的类;其中还有includeFilters和excludeFilters,includeFilters是定义满足过滤器(Filter)条件的Bean才去扫描,excludeFilters则是排除过滤器条件的Bean,它们都需要通过一个注解@Filter去定义,它有一个type类型,这里可以定义为注解或者正则式等类型。classes定义注解类,pattern定义正则式类。
@ComponentScan(basePackages={pojo})
//或者
@ComponentScan(banePackageClasses={User.class})
//或者
@ComponentScan("com.package.example.chapeter22.*")
标签:Spring,Component,扫描,ComponentScan,Bean,User,org,import 来源: https://blog.csdn.net/qq_36412195/article/details/116069906
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。