这是我参与2022首次更文挑战的第14天,活动详情查看2022首次更文挑战
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmls="http://www.springframework.org/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:c="http://www.springframework.org/schema/c"
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.ozx.annotation" context:exclude-filter type="assignable" expression="com.example.NotAService"></context:component-scan>
</beans>
复制代码
上述所示的标记让Spring扫描指定的包,同时忽略那些在表达式中指定了类型的类,除了排除过滤器,还可以使用包含过滤器。对于类型,可使用注解、正则表达式、赋值、AspectJ或自定义类(实现了org.springframework.core.type.filter.TypeFilter的过滤器类)作为过滤条件,表达式的格式取决于所指定的类型。
声明Spring组件
在开发某种服务类并基于Spring的应用程序中使用它时,需要让Spring知道这些bean有资格注入其他bean并让Spring代为管理。
public interface MessageRenderer{
void render();
void setMessageProvider(MessageProvider messageProvider);
MessageProvider getMessageProvider();
}
public class StandarOutMessageRenderer implements MessageRenderer{
private MessageProvider messageProvider;
@Override
public void render(){
if(messageProvider == null){
throw new RuntimeException(StandarOutMessageRenderer.class.getName);
}
System.out.println(messageProvider.getMessage());
}
@Override
public void setMessageProvider(MessageProvider messageProvider){
this.messageProvider=messageProvider;
}
@Override
public MessageProvider getMessageProvider(){
return this.messageProvider;
}
}
复制代码
想要在XML文件中声明bean定义,可以使用<bean ... />标记,最终的app-context-xml.xml文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmls="http://www.springframework.org/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:c="http://www.springframework.org/schema/c"
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">
<bean id="renderer" class="com.ozx.StandardOutMessageRenderer" p:messageProvider-ref="provider"/>
</beans>
复制代码
标记一个具有StandardOutMessageRenderer实现且ID为render的bean。
使用注解创建Bean定义,必须使用适当的构造型注解来注解Bean类,并且必须使用@Autowired注解方法或构造函数,通知SpringIOC容器。查找该类型的bean并将其用作调佣该方法时的参数。