小编jsc*_*man的帖子

Spring 4中有多个@ComponentScan?

我使用Spring 4.16和Java Annotations,我想做的事情如下:

@Configuration
@ComponentScan(basePackages = "com.example.business", includeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = ServiceComponent.class))
@ComponentScan(basePackages = "com.example.business.framework")
public class ServicesBaseConfiguration {

}
Run Code Online (Sandbox Code Playgroud)

很可惜,它没有编译.但我希望你明白我的观点.我想要多个ComponentScans包含不同的包和过滤器.

我无法统一两个ComponentsScan,因为它不会从框架创建任何组件,而是那些使用ServiceComponent注释的组件,我是对的吗?

你知道我怎么解决这个问题?提前致谢

java spring annotations spring-4

7
推荐指数
1
解决办法
6264
查看次数

我应该在DTO中使用构建器模式吗?

这可能是一个非常主观的问题,但我想知道一些更多的意见.我用Spring MVC构建了一个Rest API服务,并实现了DTO-Domain-Entity模式.我想知道你对在DTO中实现Builder模式有什么看法,比如说

public class UserResponseDTO
    extends AbstractResponseDTO {

    private String username;
    private Boolean enabled;

    public UserResponseDTO(String username, Boolean enabled) {
        this.username = username;
        this.enabled = enabled;
    }

    public String getUsername() {
        return this.username;
    }

    public Boolean getEnabled() {
        return this.enabled;
    }

    public static class Builder {

        private String username;
        private Boolean enabled;

        public void setUsername(String username) {
            this.username = username;
        }

        public void setEnabled(Boolean enabled) {
            this.enabled = enabled;
        }

        public UserResponseDTO build(){
            return new UserResponseDTO(username, enabled); …
Run Code Online (Sandbox Code Playgroud)

java design-patterns data-transfer-objects dto builder-pattern

7
推荐指数
1
解决办法
9864
查看次数

如何在Spring中将jpa属性加载到datasource?

我正在使用Spring boot Data JPA,现在,我有这个:

@Configuration
@PropertySource("classpath:persistence.properties")
@EnableTransactionManagement
public class PersistenceConfiguration {

    @Autowired
    private Environment env;

    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder) {
        LocalContainerEntityManagerFactoryBean entityManager = new LocalContainerEntityManagerFactoryBean();
        entityManager.setDataSource(this.dataSource());
        entityManager.setPackagesToScan(new String[] {"com.example.movies.domain"});
        JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        entityManager.setJpaVendorAdapter(vendorAdapter);
        entityManager.setJpaProperties(this.properties());
        return entityManager;
    }

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean
    public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
        transactionManager.setEntityManagerFactory(emf);
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

    private Properties properties() {
        Properties …
Run Code Online (Sandbox Code Playgroud)

java spring jpa spring-data-jpa spring-boot

6
推荐指数
1
解决办法
1万
查看次数

在非组件对象上使用Spring @Value

我有这个问题,我不知道如何解决.我使用Spring Boot创建了Restful API,我正在实现DTO-Domain-Entity模式,所以在这种特殊情况下我有这个控制器的方法

@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public ResponseEntity<UserResponseDTO> createUser(@RequestBody UserRequestDTO data) {
    UserDomain user = this.mapper.map(data, UserDomain.class);
    UserDomain createdUser = this.service.createUser(user);
    UserResponseDTO createdUserDTO = this.mapper.map(createdUser, UserResponseDTO.class);
    return new ResponseEntity<UserResponseDTO>(createdUserDTO, HttpStatus.CREATED);
}

public class UserDomain {

    private Long id;

    private Date createdDate;

    private Date updatedDate;

    private String username;

    private String password;

    @Value("${default.user.enabled:true}") // I have default-values.properties being loaded in another configuration file
    private Boolean enabled;
}
Run Code Online (Sandbox Code Playgroud)

我正在将UserRequestDTO对象转换为UserDomain.据我所知,UserRequestDTO是一个正在注入的bean.然后我将其转换为UserDomain,这里的问题是UserDomain对象不是组件,因此enabled属性不会采用默认值.

在我不想将UserDomain作为bean处理的情况下,我怎样才能使spring加载默认值(在这种情况下只启用属性)?


编辑

这不是相同的答案,因为我的目标是使用@Value注释完成它.

无论如何,康斯坦丁建议,做这样的事情会更好吗?

public class UserDomain {

    @Autowired
    private Environment environment;

    private …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc

6
推荐指数
1
解决办法
9429
查看次数

如何从前端处理仇恨?

我有一个问题,这个问题一直在我脑海中流传.让我们假设我们在不同的层上使用后端和前端构建了我们的项目.所以,从前端,我们想得到一个客户,hal+json格式:

GET /customers/1 HTTP/1.1
Accept: application/hal+json
{
    "name": "Alice",
    "links": [ {
        "rel": "self",
        "href": "http://localhost:8080/customer/1"
    } {
        "rel": "transactions",
        "href": "http://localhost:8080/customer/1/transactions"
    }]
}
Run Code Online (Sandbox Code Playgroud)

然后,从前端我想获得所有客户交易.我的问题是:我该如何获得网址?它应该来自回应吗?或者我应该在内部构建它?

如果我们选择第一个选项,我认为在我们得到我们想要的那个之前,迭代所有链接可能并不优雅.此外,可能会出现我们没有我们想要的请求链接的情况.

如果我们使用第二个选项,如果我们实际上没有id,我不明白如何构建该URL.如果hateoas用链接替换id并且我还没有身体中的对象引用,我怎么能创建新的客户交易呢?

我认为也许服务应该同时支持 application/hal+json(面向用户)和application/json(面向客户端),但我不认为这是如何一般地完成它.

你怎么看?

json web-services hateoas

6
推荐指数
1
解决办法
1661
查看次数

添加带导航抽屉的操作栏按钮?

我有这个问题:我正在使用操作栏导航抽屉,但我想添加一个按钮到菜单栏,像这些按钮:http: //screenshots.en.sftcdn.net/blog/en/ 2013/06 /通知-b.png

这是我的xml文件:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/drawer_layout"
 android:layout_width="match_parent"
 android:layout_height="match_parent" >

<FrameLayout
     android:id="@+id/content_frame"
     android:layout_width="match_parent"
     android:layout_height="match_parent" />
     <!-- The navigation drawer -->
<ListView
     android:id="@+id/left_drawer"
     android:layout_width="240dp"
     android:layout_height="match_parent"
     android:layout_gravity="start"
     android:background="#111"
     android:choiceMode="singleChoice"
     android:divider="@android:color/transparent"
     android:dividerHeight="0dp" />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

所以,我知道添加按钮是这样的:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
    <!-- Search, should appear as action button -->
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          yourapp:showAsAction="ifRoom"  />
</menu>
Run Code Online (Sandbox Code Playgroud)

但我仍然不知道如何适应这两个部分,任何人都可以帮助我吗?

android button drawer android-actionbar

5
推荐指数
1
解决办法
9501
查看次数

如何在Spring 4中通过注释设置默认bean init-method?

我正在学习使用Spring 4 by Java注释,我无法找到如何将默认的init-method设置为属于特定配置的所有bean,而无需在所有clases中添加@PostContruct注释初始化方法,也不会使它们实现InitializeBean界面......我只是想做这样的事情:

<beans default-init-method="init">

    <bean id="blogService" class="com.foo.DefaultBlogService">
    </bean>

    <bean id="anotherBean" class="com.foo.AnotherBean">
    </bean>

</beans>
Run Code Online (Sandbox Code Playgroud)

所以,我想通过Java注释做到这一点,我想在bean的配置容器上设置默认bean配置.那可能吗?问候

编辑:我真正想要做的是告诉spring默认在我在BeansConfigurations类中创建的所有bean上运行"initialize"方法.这意味着,在默认情况下,放置一些注释或确定所有包含的bean将运行此初始化方法的内容.但正如我之前所说,我不想触及bean类,我的意思是,我不想为每个bean类的每个初始化方法添加@PostConstructor注释,我不希望每个bean都实现InitializeBean接口或

java spring annotations dependency-injection spring-4

5
推荐指数
1
解决办法
3233
查看次数

org.apache.coyote.http11.Http11NioProtocol - 读取请求时出错

我正在尝试Spring Boot 1.3.1.RELEASE在我的服务器上部署我的服务。当我在本地运行它时没有任何问题,当我在服务器上运行它时出现此问题,我遇到了这个异常:

2015-12-22 10:45:36, 232 [-] [           main] INFO  omcat.util.net.NioSelectorPool l180  - Using a shared selector for servlet write/read
2015-12-22 10:45:36, 261 [-] [           main] INFO  TomcatEmbeddedServletContainer l159  - Tomcat started on port(s): 9290 (http)
2015-12-22 10:45:36, 266 [-] [           main] INFO  e.webservice.ApplicationRunner l56   - Started ApplicationRunner in 100.827 seconds (JVM running for 128.605)
2015-12-22 10:45:36, 366 [-] [nio-9290-exec-1] ERROR oyote.http11.Http11NioProtocol l182  - Error reading request, ignored
java.lang.VerifyError: Bad type on operand stack
Exception Details:
  Location:
    org/apache/coyote/http11/AbstractHttp11Processor.asyncDispatch(Lorg/apache/tomcat/util/net/SocketStatus;)Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler$SocketState; …
Run Code Online (Sandbox Code Playgroud)

java deployment tomcat jvm spring-boot

5
推荐指数
0
解决办法
2141
查看次数

对象没有命名类型 - C++

我正在尝试实现基于二叉树搜索集合.所以我从一个(指向节点的指针)开始构建这个集合,其中Node有一个值,右边和左边的子节点(两个指向Node的指针).所以这样我可以通过将root-> right指向创建的节点来设置根节点右侧的新节点,依此类推.看看定义:

template <class T>
class Set
{
    public:
        Set();
        ~Set();
        void push(const T&);
        bool belongs(const T&) const;
        void remove(const T&);
        const T& min() const;
        const T& max() const;
        unsigned int cardinal() const;
        void show(std::ostream&) const;

        friend ostream& operator<<(ostream& os, const Set<T> &c) {
            c.show(os);
            return os;
        }

    private:

        struct Node
        {
            Node(const T& v);
            T value;
            Node* left;
            Node* right; 
        };

        Node* root_;
        int cardinal_;

    Node & fatherOfNode(const Node & root, const T …
Run Code Online (Sandbox Code Playgroud)

c++ generics templates

5
推荐指数
1
解决办法
598
查看次数

Spring Boot YAML绑定:绑定属性失败

我正在尝试使用Spring Boot 2.0.5.RELEASEgenerator.yaml文件与类型的对象绑定:GeneratorConfig

generator.yaml

entry:
  name: "node-1"
  expectedState: HEALTHY
Run Code Online (Sandbox Code Playgroud)
@Component
@PropertySource("classpath:generator.yaml")
@ConfigurationProperties
public class GeneratorConfig {
    private Entry entry;

    // getter and setter
}
Run Code Online (Sandbox Code Playgroud)
public class Entry {

    private String name;
    private NodeState expectedState;

    // getters and setters
}
Run Code Online (Sandbox Code Playgroud)

我收到以下异常:

2018-12-11 13:11:53.885  INFO 3923 --- [           main] com.project.mmgenerator.MMGenerator     : Starting MMGenerator on madmin’s-MacBook-Pro with PID 3923 (/Users/jscherman/IdeaProjects/sentinel/mock-metrics-generator/out/production/classes started by jscherman in /Users/jscherman/IdeaProjects/sentinel)
2018-12-11 13:11:53.889 DEBUG 3923 --- [           main] com.project.mmgenerator.MMGenerator     : Running with Spring …
Run Code Online (Sandbox Code Playgroud)

data-binding yaml spring-boot

5
推荐指数
0
解决办法
3868
查看次数